Neo4j3.x入门经典

Neo4j3.x入门经典"

作者:[法]杰罗姆·巴同(Jér?meBaton)[英]里克·范·布鲁根(RikVanBruggen)著张帜主编庞国明胡佳辉苏亮晏永年于松林李建潮
ISBN:9787302519188
定价:¥69
字数:千字
页数:
出版时间:2019.02.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

Neo4j是一个高性能的NoSQL图数据库,将结构化数据存储在拓扑图上而不是表中,从而轻松地管理巨量的数据。Neo4j凭借嵌入式、高性能、轻量级等优势越来越受关注。

本书共15章,介绍图论和图数据库、Neo4j基础、Neo4j数据模型、Cypher入门、APOC和Cypher扩展、查询性能优化、Neo4j数据导入、空间、安全认证、Neo4j可视化、Neo4j数据重构、集群等内容,最后通过两大案例(推荐系统和影响分析与模拟)的讲解,使你获得图数据建模与设计的技能。

本书既可以作为Neo4j初学者的入门教材,也可以作为相关行业Neo4j技术专家的参考手册。

前言

前  言

本书内容基于Neo4j 3.x版本,通过对本书的学习我们会掌握图数据库和Neo4j的关键技能。从理论知识到应用程序开发,我们将全方面地学到Neo4j的各项知识。

本书所涵盖的内容

第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的软件,我们需要一个装有Java7或更高版本的计算机,并且要具备4GB的内存和2GB的可用硬盘空间。

本书有一些在GNU / Linux系统运行的例子,所以某些内容会用到Linux操作系统。

除了第10章安全认证和第13章集群之外,大多数章节讨论的内容都适用于Neo4j社区版和Neo4j企业版。

在最后几章内容中,我们推荐使用两台笔记本电脑,几个树莓派设备和Docker容器来做实验。

本书适用人群

本书内容适用于想要采用图作为数据存储结构或者想要处理复杂网状关系数据的开发人员。只要我们有传统数据库的使用经验,即便没有图数据库的相关经验我们也是可以很容易地理解本书内容。

本书内容格式的约定

代码块样式如下:

public class StringHacking {

@UserFunction

 @Description("Returns the last word of a string")

 public String getLastWord( @Name("aStr") String aStr){

 if(aStr==null) return null;

 else {

 int pos = aStr.lastIndexOf(" ");

 if(pos==-1) return aStr;

 else return aStr.substring(pos+1);

 }

 }

}

当本书想要让读者着重注意代码中某一部分时,将会加粗显示:

MATCH (ln:LastName)--(p:Person)

RETURN ln, learningneo4j.randomCount(p.lastName) AS badcount

命令行的输入、输出内容格式如下:

mkdir data/ldap/environment -p

mkdir data/ldap/db -p

新术语和重要词汇以及操作界面上的词汇(如菜单、对话框的名字)本书将以粗体显示,如下所示:

为了下载新模块,我们打开“文件|设置|项目名称|项目解释器”。

  重要提醒的内容将以此形式展示。

  技巧性的内容将以此形式展示。

反馈

我们欢迎读者反馈对本书的看法,任何你喜欢或不喜欢的内容都可以反馈给我们。读者的反馈对我们是非常重要的,从读者的反馈中我们可以知道如何修改、完善本书的内容。如果要向我们反馈关于本书的普通问题请发送电子邮件至feedback@packtpub.com,并在邮件主题中写明章节标题;如果你是一位专业人士并希望参与到本书的撰写中,请参阅我们的作者指南,网址为www.packtpub.com/authors。

读者支持

既然你是这本书的拥有者,我们自然愿意从多方面帮助你从购买中获得最大收益。

下载本书示例代码

如果你是从http://www.packtpub.com上购买的本书,那么你可以直接在此网站下载本书的示例代码文件。如果你在其他地方购买了本书,则可以访问http://www.packtpub.com/support并注册,我们将直接将示例代码文件通过电子邮件发送给你。你可以通过以下步骤下载代码文件:

(1)使用你的电子邮件地址和密码登录或注册我们的网站。

(2)将鼠标指针悬停在顶部的SUPPORT选项卡上。

(3)点击Code Downloads&Errata。

(4)在搜索框中输入书名。

(5)选择你要下载代码的对应书名。

(6)打开购买本书的下拉菜单。

(7)点击代码下载。

示例代码文件是一个压缩包文件,当你下载下来后请使用最新版本的解压工具,如:

? WinRAR、7-Zip Windows版。

? Zipeg 、iZip、UnRarX Mac版。

? 7-Zip 、PeaZip Linux版。

从GitHub上也可以下载到本书的示例代码文件,GitHub地址为https://github.com/Packt

Publishing/Learning-Neo4j-3x-Second-Editon。我们还在https://github.com/PacktPublishing/上提供了丰富而有用的代码。 

勘误表

尽管我们竭尽全力确保本书内容的正确,但疏漏在所难免,如果你在阅读本书的过程中发现了任何文字或代码错误,你可以将错误标记出来发给我们,这样能帮助我们改进本书的后续版本。你可以访问http://www.packtpub.com/submit-errata,然后选择你的图书,再点击勘误提交表格链接,并输入你的勘误详情。一旦你提交的勘误被确认,你提交的勘误将被上传到我们网站上进行公示。

如果要查看以前提交的勘误表,请访问https://www.packtpub.com/books/content/support并在搜索框中输入图书的名称。所需的信息将出现在页面的勘误部分。

版权

互联网上盗版问题是一直存在的,我们非常重视保护我们的版权。如果你在互联网上发现任何本书的非法复制作品,请立即向我们提供网址或网站名称,以便我们寻求补救措施。请通过copyright@packtpub.com与我们联系,并附上可疑的盗版材料的链接。我们非常感谢你的帮助,这将帮助我们作者保护自身利益不受侵犯。

其他问题

如果你对本书的任何方面有疑问,可以通过questions@packtpub.com与我们联系,我们将尽最大努力帮你解决问题。

目录

目  录

第1章  图论和数据库 1

1.1  Neo4j 3.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.3  NoSQL数据库 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.1  Neo4j的关键概念和特点 25

2.1.1  从头开始创建图 25

2.1.2  基于事务的ACID数据库 26

2.1.3  可用于联机事务处理 27

2.1.4  扩展性能 28

2.1.5  声明式查询语言Cypher 28

2.2  Neo4j典型案例 29

2.2.1  复杂的连接密集型查询 29

2.2.2  路径查询 29

2.2.3  开源解决方案 29

2.3  特性 30

2.4  许可协议 31

2.5  安装Neo4j 32

2.5.1  在Windows系统上安装Neo4j 32

2.5.2  在Mac和Linux系统上安装Neo4j 35

2.6  在云平台使用Neo4j 37

2.7  沙盒模式 41

2.8  在Docker容器中使用Neo4j 47

2.8.1  安装Docker 48

2.8.2  准备文件 48

2.8.3  在Docker容器中运行Neo4j 48

2.9  问答 50

2.10  小结 51

第3章  Neo4j数据模型 52

3.1  四种基础数据结构 52

3.2  图数据库建模基础 53

3.2.1  ER图和关系模式 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.1  Cypher的语法 66

4.2  Cypher的关键特性 67

4.3  与数据很好地结合 68

4.3.1  创建数据 68

4.3.2  读取数据 69

4.3.3  更新数据 70

4.3.4  删除数据 71

4.4  Cypher的关键操作词 72

4.5  语法约定 73

4.6  高级知识 74

4.7  Cypher参考卡 78

4.8  openCypher工程 79

4.9  小结 79

第5章  过程—APOC 80

5.1  安装APOC 80

5.1.1  机器安装 81

5.1.2  Docker容器安装 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.4  Cypher语句限时执行 86

5.5.5  节点集合连接 87

5.5.6  更多APOC 87

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.1  HTTP和JAX-RS refreshers 97

6.3.2  JSON响应流式化 98

6.4  小结 101

第7章  查询性能优化 102

7.1  Explain和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.1  Explain所有查询 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.2  Neo4j的空间特性 119

9.3  APOC的空间特性 120

9.4  地理编码 121

9.4.1  设置OSM为提供商 121

9.4.2  设置谷歌为提供商 121

9.5  Neo4j Spatial 122

9.5.1  在线示例 122

9.5.2  Neo4j Spatial特性 122

9.6  导入OpenStreetMap数据 124

9.7  大型OSM数据导入 126

9.7.1  简易方法 126

9.7.2  更直接的数据导入方法 127

9.8  查询卫生间 127

9.9  理解WKT和BBOX 128

9.10  删除所有地理数据 128

9.11  小结 129

第10章  安全认证 130

10.1  认证与授权 130

10.2  角色 131

10.3  用户管理 132

10.4  Neo4j连接到LDAP 132

10.5  使用LDAP配置Neo4j 135

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.5  Cytoscape实例 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.2  Neo4j集群的概念 164

13.2.1  核心服务器 164

13.2.2  只读副本服务器 164

13.2.3  高吞吐量 164

13.2.4  数据冗余 165

13.2.5  高可用 165

13.2.6  Bolt协议 165

13.3  构建Neo4j集群 165

13.3.1  核心服务器 165

13.3.2  只读副本服务器 167

13.3.3  bolt+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是一个流行的图数据库,用它可以轻松地遍历巨量相互连接的数据。本书旨在让您快速地入门Neo4j。

本书以图论的简单介绍作为开始,向您展示了使用图数据库的优势以及图数据库的建模技术。您将获得常用的实战经验,以及如何使用Neo4j的Cypher查询语言来更新图数据的技能。

此外,您还会学习到如何使用APOC中的过程以及您自己的过程来扩展Neo4j客户端的功能,开启集成、算法分析和其他高级的空间操作。

在本书中,您将了解到Neo4j的最新特性,如扩展性、性能优化、可视化、数据重构技术、安全增强等。在本书的最后,您将在一些现实世界案例的帮助下,获得设计和实现现代应用所需的技能,这些应用将从图数据中揭示其在商业上的能力。

作者寄语

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

电子资料

www.luweidong.cn

下一个