内容简介

Neo4j是一个高性能的NoSQL图数据库,将结构化数据存储在拓扑图上而不是表中,从而轻松地管理巨量的数据。Neo4j凭借嵌入式、高性能、轻量级等优势越来越受关注。
Neo4j 3.x入门经典(图数据库技术丛书)》共15章,介绍图论和图数据库、Neo4j基础、Neo4j数据模型、Cypher入门、APOC和Cypher扩展、查询性能优化、Neo4j数据导入、空间、安全认证、Neo4j可视化、Neo4j数据重构、集群等内容,1后通过两大案例(推荐系统和影响分析与模拟)的讲解,使你获得图数据建模与设计的技能。
Neo4j 3.x入门经典(图数据库技术丛书)》既可以作为Neo4j初学者的入门教材,也可以作为相关行业Neo4j技术专家的参考手册。

作者简介

张帜,中国IT界元老、中国图数据库先导者、大数据领域资深专家、WPS曲线汉字发明人。曾任Microsoft高级软件设计师及“维纳斯计划”技术主管,牵头研发中国移动139手机邮箱。于2017年会期间做客CCTV,与著名主持人阿丘老师对话,畅谈《关于图数据库的梦想》,被业界誉为中国图数据库一人。

目录

目录

第1章图论和数据库1
1.1Neo4j3.x简介和图的历史1
1.2图论的定义和用途3
1.2.1社会学研究5
1.2.2生物学研究6
1.2.3计算机科学6
1.2.4流量问题7
1.2.5路径问题8
1.2.6网页搜索9
1.3背景10
1.3.1导航数据库11
1.3.2关系数据库13
1.3.3NoSQL数据库15
1.4图数据库的属性图模型18
1.4.1节点标签20
1.4.2关系类型20
1.5使用图数据库的注意事项20
1.5.1为什么使用图数据库20
1.5.2什么时候不用图数据库以及用什么替代22
1.6问答23
1.7小结23
第2章Neo4j基础入门25
2.1Neo4j的关键概念和特点25
2.1.1从头开始创建图25
2.1.2基于事务的ACID数据库26
2.1.3可用于联机事务处理27
2.1.4扩展性能28
2.1.5声明式查询语言Cypher28
2.2Neo4j典型案例29
2.2.1复杂的连接密集型查询29
2.2.2路径查询29
2.2.3开源解决方案29
2.3特性30
2.4许可协议31
2.5安装Neo4j32
2.5.1在Windows系统上安装Neo4j32
2.5.2在Mac和Linux系统上安装Neo4j35
2.6在云平台使用Neo4j37
2.7沙盒模式41
2.8在Docker容器中使用Neo4j47
2.8.1安装Docker48
2.8.2准备文件48
2.8.3在Docker容器中运行Neo4j48
2.9问答50
2.10小结51
第3章Neo4j数据模型52
3.1四种基础数据结构52
3.2图数据库建模基础53
3.2.1ER图和关系模式53
3.2.2通过连接表引入复杂性54
3.3图模型—一个简单、高保真的现实模型55
3.4图建模—最佳实践和陷阱57
3.4.1图建模最佳实践57
3.4.2图数据库建模陷阱61
3.5问答64
3.6小结65
第4章Cypher入门66
4.1Cypher的语法66
4.2Cypher的关键特性67
4.3与数据很好地结合68
4.3.1创建数据68
4.3.2读取数据69
4.3.3更新数据70
4.3.4删除数据71
4.4Cypher的关键操作词72
4.5语法约定73
4.6高级知识74
4.7Cypher参考卡78
4.8openCypher工程79
4.9小结79

第5章过程—APOC80
5.1安装APOC80
5.1.1机器安装81
5.1.2Docker容器安装81
5.2检查APOC安装81
5.3函数和过程82
5.4习惯用法82
5.4.1来自朋友的建议82
5.4.2图概述83
5.5关键用法85
5.5.1安装85
5.5.2随机图生成器85
5.5.3网站排名86
5.5.4Cypher语句限时执行86
5.5.5节点集合连接87
5.5.6更多APOC87
5.6问答88
5.7小结89
第6章Cypher扩展90
6.1构建扩展工程90
6.1.1创建函数91
6.1.2创建过程92
6.2定制聚合器95
6.3非托管扩展96
6.3.1HTTP和JAX-RSrefreshers97
6.3.2JSON响应流式化98
6.4小结101
第7章查询性能优化102
7.1Explain和Profile指令102
7.1.1查询计划102
7.1.2运算符104
7.2索引105
7.2.1强制使用索引105
7.2.2强制使用标签105
7.3经验法则106
7.3.1Explain所有查询106
7.3.2行106
7.3.3不要过度消耗资源106
7.3.4返回笛卡儿积级别的数据106
7.3.5简单106
7.4小结107
第8章Neo4j数据导入108
8.1导入CSV文件108
8.2导入JSON源111
8.3导入JDBC源114
8.3.1测试安装114
8.3.2导入所有系统数据114
8.4导入XML源115
8.5小结116
第9章空间118
9.1空间简介118
9.1.1回顾118
9.1.2无缺陷塔119
9.1.3什么是空间119
9.2Neo4j的空间特性119
9.3APOC的空间特性120
9.4地理编码121
9.4.1设置OSM为提供商121
9.4.2设置谷歌为提供商121
9.5Neo4jSpatial122
9.5.1在线示例122
9.5.2Neo4jSpatial特性122
9.6导入OpenStreetMap数据124
9.7大型OSM数据导入126
9.7.1简易方法126
9.7.2更直接的数据导入方法127
9.8查询卫生间127
9.9理解WKT和BBOX128
9.10删除所有地理数据128
9.11小结129
第10章安全认证130
10.1认证与授权130
10.2角色131
10.3用户管理132
10.4Neo4j连接到LDAP目录132
10.5使用LDAP配置Neo4j135
10.6问答136
10.7小结136
第11章Neo4j可视化137
11.1可视化的重要作用137
11.1.1为什么图数据可视化很重要137
11.1.2直观地与数据进行交互137
11.1.3模式识别138
11.1.4发现重点139
11.2图数据可视化的基本原则139
11.2.1开源可视化组件库140
11.2.2将可视化组件库应用到项目中143
11.2.3可视化解决方案144
11.2.4问题和陷阱148
11.2.5Cytoscape实例149
11.3问答152
11.4小结153
第12章Neo4j数据重构154
12.1预备步骤154
12.2简单改变154
12.2.1重命名154
12.2.2添加数据155
12.2.3删除数据156
12.3重大改变156
12.3.1知道我们的模型156
12.3.2重构工具157
12.3.3属性变标签157
12.3.4属性变节点157
12.3.5相关节点变标签158
12.3.6合并节点158
12.3.7关系159
12.4结论162
12.5小结162
第13章集群163
13.1为什么需要Neo4j集群163
13.2Neo4j集群的概念164
13.2.1核心服务器164
13.2.2只读副本服务器164
13.2.3高吞吐量164
13.2.4数据冗余165
13.2.5高可用165
13.2.6Bolt协议165
13.3构建Neo4j集群165
13.3.1核心服务器165
13.3.2只读副本服务器167
13.3.3bolt+routing协议168
13.4在Neo4j集群中实现灾难恢复169
13.5小结169
第14章案例—推荐系统170
14.1推荐系统剖析170
14.2推荐系统的图模型应用171
14.3推荐系统查询示例173
14.3.1基于商品购买的推荐173
14.3.2基于品牌忠诚度的推荐175
14.3.3基于社交关系的推荐176
14.3.4组合推荐176
14.4推荐系统的业务变化177
14.5欺诈检测系统178
14.6访问控制系统179
14.7社交网络系统179
14.8问答180
14.9小结181
第15章案例—影响分析与模拟182
15.1影响分析系统解析182
15.1.1影响分析在业务流程管理中的应用183
15.1.2业务图建模183
15.2成本计算环境中的影响模拟187
15.2.1产品层次结构的图建模187
15.2.2产品层次结构图的应用188
15.3问答192
15.4小结193
附录应用技巧介绍194



前言/序言

前言
Neo4j 3.x入门经典(图数据库技术丛书)》内容基于Neo4j3.x版本,通过对《Neo4j 3.x入门经典(图数据库技术丛书)》的学习我们会掌握图数据库和Neo4j的关键技能。从理论知识到应用程序开发,我们将全方面地学到Neo4j的各项知识。
Neo4j 3.x入门经典(图数据库技术丛书)》所涵盖的内容
第1章图论和数据库,解释图数据库技术的历史和基本理论。另外,本章阐述图数据库不断的发展、演变,以及图数据库从技术、行业方面与其他数据库技术进行比较。
第2章Neo4j基础入门,介绍图数据库Neo4j的具体实现,并着重介绍Neo4j的关键概念和特性。
第3章Neo4j数据模型,阐述图数据库的基本建模技术。
第4章Cypher入门,阐述Cypher查询语言的用法。
第5章过程——APOC,在本章我们将学习如何在Cypher查询中使用过程、获取过程的相关信息以及社区版提供的数百个存储过程的概述。
第6章Cypher扩展,阐述如何扩展Neo4j实例的功能、如何创建用户自定义APOC。
第7章查询性能优化,阐述如何调整我们的Cypher查询以获得更好的性能。
第8章Neo4j数据导入,阐述如何从不同数据源将数据导入到Neo4j。
第9章空间,阐述如何使用Neo4j的地理信息功能。
第10章安全认证,阐述Neo4j中的认证和授权。
第11章Neo4j可视化,阐述如何展示我们的数据。
第12章Neo4j数据重构,阐述如何按照需求来修改适合我们的数据模型。
第13章集群,使用Neo4j企业版建立一个因果集群。
第14章案例——推荐系统,深入挖掘特定的图数据库用例,并使用特定的示例数据集和查询模式进行剖析。
第15章案例——影响分析与模拟,分析网络中某一部分的变化对另外一部分的影响。
附录应用技巧介绍,阐述使用Neo4j的一些技巧。
学习《Neo4j 3.x入门经典(图数据库技术丛书)》需要具备的条件
要运行Neo4j的软件,我们需要一个装有Java7或更高版本的计算机,并且要具备4GB的内存和2GB的可用硬盘空间。
Neo4j 3.x入门经典(图数据库技术丛书)》有一些在GNU/Linux系统运行的例子,所以某些内容会用到Linux操作系统。
除了第10章安全认证和第13章集群之外,大多数章节讨论的内容都适用于Neo4j社区版和Neo4j企业版。
在最后几章内容中,我们推荐使用两台笔记本电脑,几个树莓派设备和Docker容器来做实验。
Neo4j 3.x入门经典(图数据库技术丛书)》适用人群
Neo4j 3.x入门经典(图数据库技术丛书)》内容适用于想要采用图作为数据存储结构或者想要处理复杂网状关系数据的开发人员。只要我们有传统数据库的使用经验,即便没有图数据库的相关经验我们也是可以很容易地理解《Neo4j 3.x入门经典(图数据库技术丛书)》内容。
Neo4j 3.x入门经典(图数据库技术丛书)》内容格式的约定
代码块样式如下:
publicclassStringHacking{
@UserFunction
@Description("Returnsthelastwordofastring")
publicStringgetLastWord(@Name("aStr")StringaStr){
if(aStr==null)returnnull;
else{
intpos=aStr.lastIndexOf("");
if(pos==-1)returnaStr;
elsereturnaStr.substring(pos+1);
}
}
}
当《Neo4j 3.x入门经典(图数据库技术丛书)》想要让读者着重注意代码中某一部分时,将会加粗显示:
MATCH(ln:LastName)--(p:Person)
RETURNln,learningneo4j.randomCount(p.lastName)ASbadcount
命令行的输入、输出内容格式如下:
mkdirdata/ldap/environment-p
mkdirdata/ldap/db-p
新术语和重要词汇以及操作界面上的词汇(如菜单、对话框的名字)《Neo4j 3.x入门经典(图数据库技术丛书)》将以粗体显示,如下所示:
为了下载新模块,我们打开“文件|设置|项目名称|项目解释器”。
重要提醒的内容将以此形式展示。
技巧性的内容将以此形式展示。
反馈
我们欢迎读者反馈对《Neo4j 3.x入门经典(图数据库技术丛书)》的看法,任何你喜欢或不喜欢的内容都可以反馈给我们。读者的反馈对我们是非常重要的,从读者的反馈中我们可以知道如何修改、完善《Neo4j 3.x入门经典(图数据库技术丛书)》的内容。如果要向我们反馈关于《Neo4j 3.x入门经典(图数据库技术丛书)》的普通问题请发送电子邮件至feedback@packtpub.com,并在邮件主题中写明章节标题;如果你是一位专业人士并希望参与到《Neo4j 3.x入门经典(图数据库技术丛书)》的撰写中,请参阅我们的作者指南,网址为www.packtpub.com/authors。
读者支持
既然你是这《Neo4j 3.x入门经典(图数据库技术丛书)》的拥有者,我们自然愿意从多方面帮助你从购买中获得最大收益。
下载《Neo4j 3.x入门经典(图数据库技术丛书)》示例代码
如果你是从http://www.packtpub.com上购买的《Neo4j 3.x入门经典(图数据库技术丛书)》,那么你可以直接在此网站下载《Neo4j 3.x入门经典(图数据库技术丛书)》的示例代码文件。如果你在其他地方购买了《Neo4j 3.x入门经典(图数据库技术丛书)》,则可以访问http://www.packtpub.com/support并注册,我们将直接将示例代码文件通过电子邮件发送给你。你可以通过以下步骤下载代码文件:
(1)使用你的电子邮件地址和密码登录或注册我们的网站。
(2)将鼠标指针悬停在顶部的SUPPORT选项卡上。
(3)点击CodeDownloads&Errata。
(4)在搜索框中输入书名。
(5)选择你要下载代码的对应书名。
(6)打开购买《Neo4j 3.x入门经典(图数据库技术丛书)》的下拉菜单。
(7)点击代码下载。
示例代码文件是一个压缩包文件,当你下载下来后请使用最新版本的解压工具,如:
?WinRAR、7-ZipWindows版。
?Zipeg、iZip、UnRarXMac版。
?7-Zip、PeaZipLinux版。

版权
互联网上盗版问题是一直存在的,我们非常重视保护我们的版权。如果你在互联网上发现任何《Neo4j 3.x入门经典(图数据库技术丛书)》的非法复制作品,请立即向我们提供网址或网站名称,以便我们寻求补救措施。请通过copyright@packtpub.com与我们联系,并附上可疑的盗版材料的链接。我们非常感谢你的帮助,这将帮助我们作者保护自身利益不受侵犯。
其他问题
如果你对《Neo4j 3.x入门经典(图数据库技术丛书)》的任何方面有疑问,可以通过与我们联系,我们将尽最大努力帮你解决问题。


其他推荐