阅读(1148) (0)

Neo4j全栈开发

2021-05-12 21:36:14 更新

陈韶健 著

  • 出版社: 电子工业出版社
  • ISBN:9787121314476
  • 版次:1
  • 商品编码:12087827
  • 品牌:博文视点
  • 包装:平装
  • 开本:16开
  • 出版时间:2017-06-01
  • 用纸:胶版纸
  • 页数:316
  • 正文语种:中文


点此购买


编辑推荐

  Neo4j是一个独立、高性能的NoSQL图数据库,从总体来看,Neo4j就是由无数相互关联的节点所组成的图形,它能很好且形象地表现出现世界中相互联系的事物。

  《Neo4j全栈开发》不仅全面系统地介绍了怎样以简单易用的方式来使用Neo4j,还详细讲解了构建可扩展、高可用的Neo4j分布式架构的实操细节,最后使用SpringBoot开发框架,结合具体的应用实例,详细阐述了使用Neo4j进行前后端设计的详细过程和方法,从此让Neo4j提供全天候、无间断的高可靠服务。


内容简介

  《Neo4j全栈开发》全面、系统地介绍了Neo4j这个独特而又高性能的NoSQL图数据库,从使用Neo4j进行程序开发,到Neo4j的管理和配置等层面全方位地阐释了Neo4j的整个生态体系。

  《Neo4j全栈开发》不仅着重介绍了怎样以简单易用的方式来使用Neo4j,更难能可贵的是,《Neo4j全栈开发》还分享了使用分布式Neo4j构建高可用的读/写分离负载均衡配置的实际操作过程和实现细节。

  通过对《Neo4j全栈开发》的学习,读者将系统地掌握Neo4j的知识,并很快将其用于项目开发之中,为自己的应用提升访问性能,解决燃眉之急。


作者简介

  陈韶健,具有15年以上的IT从业经验的资深专家。在编辑语言使用上,精通.Net和Java两大体系,尤其对Spring和SpringBoot有深入研究,并著有《深入实践SpringBoot》一书,于2016年11月在机械工业出版社出版。在数据库方面,熟悉SQLServer,Oracle,MySQL等传统关系型数据库,以及Redis,MongoDB,Neo4j等NoSQL数据库,并对Neo4j有更多的爱好和深入地研究。另外,在系统设计、服务器架构设计、数据安全和性能优化等方面都有丰富的实践和工作经验。


目录

第1章 Neo4j概述 1

1.1 Neo4j数据的特点 2

1.2 Neo4j数据的表现形式 2

1.3 Neo4j的优势 5

1.3.1 查询的高性能 5

1.3.2 设计的灵活性 6

1.3.3 开发的敏捷性 6

1.3.4 与其他数据库的比较 6

1.3.5 综合表现 7

1.4 哪些领域更适合使用Neo4j 8

1.4.1 社区网络 8

1.4.2 推荐引擎 9

1.4.3 交通运输 9

1.4.4 物流管理 9

1.4.5 主数据管理 10

1.4.6 访问控制 10

1.4.7 欺诈检测 10

1.5 哪些领域不适合使用Neo4j 10

1.6 哪些企业在使用Neo4j 11

1.6.1 阿迪达斯的购物网站 12

1.6.2 沃尔玛的内部管理系统 12

1.6.3 eBay的电子商务 13

1.7 丰富的学习资源 13

1.7.1 精选的GraphGists 13

1.7.2 GraphGists门户 15

1.8 小结 16

第2章 Neo4j API应用 18

2.1 创建项目工程 18

2.1.1 项目工程配置 19

2.1.2 引用Neo4j开发包 19

2.2 使用Neo4j API 20

2.2.1 使用嵌入式数据库 20

2.2.2 创建节点和关系 21

2.2.3 查询及更新 22

2.2.4 删除关系和节点 23

2.3 使用标签 25

2.4 使用索引 26

2.4.1 手动索引 26

2.4.2 模式索引 27

2.4.3 模式约束 28

2.5 图的遍历 31

2.5.1 广度优先遍历 32

2.5.2 深度优先遍历 32

2.5.3 遍历的路径 34

2.6 使用Cypher查询语言 37

2.7 连接Neo4j服务器 40

2.8 关于事务 42

2.8.1 Neo4j支持完整的事务管理特性 42

2.8.2 交互周期 43

2.8.3 隔离级别 44

2.8.4 关于死锁 44

2.9 其他开发语言实例 44

2.9.1 Node.js访问Neo4j 45

2.9.2 Python访问Neo4j 46

2.10 小结 47

第3章 Neo4j的安装及使用 48

3.1 安装要求及推荐 48

3.2 安装Neo4j服务器 49

3.2.1 下载Neo4j 49

3.2.2 在Linux操作系统中安装Neo4j 50

3.2.3 在Windows操作系统中安装Neo4j 51

3.3 Neo4j基本配置 52

3.4 Neo4j配置优化 53

3.4.1 页面高速缓存 53

3.4.2 堆大小 54

3.4.3 垃圾收集器 54

3.5 使用Neo4j的Web控制台 55

3.5.1 使用命令行输入框 56

3.5.2 数据库管理信息 57

3.5.3 使用收藏夹 59

3.5.4 使用帮助手册 63

3.5.5 使用浏览器同步功能 65

3.5.6 使用浏览器设置 67

3.5.7 关于Neo4j 68

3.6 小结 69

第4章 Cypher查询语言简介 71

4.1 Cypher语法基础 71

4.1.1 变量定义 72

4.1.2 可用运算符 72

4.2 Cypher读/写查询结构 73

4.2.1 用CREATE创建节点 74

4.2.2 用CREATE创建关系 74

4.2.3 用MERGE创建节点 75

4.2.4 用MERGE创建关系 76

4.2.5 用SET更新数据 76

4.2.6 用DELETE删除数据 77

4.2.7 用REMOVE移除数据 78

4.2.8 使用循环FOREACH 79

4.3 使用索引 79

4.3.1 创建和使用索引 80

4.3.2 删除索引 81

4.4 使用约束 81

4.4.1 创建约束 81

4.4.2 删除约束 81

4.5 使用标签 82

4.6 Cypher只读查询结构 83

4.6.1 条件过滤WHERE 83

4.6.2 联合查询UNION 84

4.6.3 使用链接WITH 84

4.6.4 返回结果RETURN 85

4.7 使用CASE子句 86

4.8 遍历的路径 86

4.8.1 最短路径 87

4.8.2 所有最短路径 88

4.9 使用函数 90

4.10 使用CALL调用存储过程 92

4.11 查询语句性能分析 93

4.12 Cypher的使用范围 95

4.12.1 在neo4j-shell中使用Cypher查询语言 96

4.12.2 在Rest API中使用Cypher查询语言 98

4.13 小结 101

第5章 使用SDN建模和设计存储库接口 103

5.1 SDN简介 103

5.1.1 SDN的特点 103

5.1.2 SDN存储库接口 104

5.2 数据模型设计 105

5.2.1 用户访问控制数据模型 105

5.2.2 购物网站数据模型 106

5.3 数据建模的误区 108

5.4 Neo4j的数据类型 109

5.5 在项目中使用SDN 110

5.5.1 在项目工程中引用SDN依赖 110

5.5.2 建模中可用的OGM注解 111

5.5.3 日期类型转换实例 112

5.6 使用SDN建模 113

5.6.1 节点建模 113

5.6.2 关系建模 116

5.7 使用SDN设计存储库接口 118

5.7.1 创建存储库接口 118

5.7.2 在标准方法中使用路径 120

5.7.3 自定义声明方法 120

5.7.4 使用底层方法 122

5.8 SDN配置 124

5.8.1 配置域对象和存储库接口 125

5.8.2 使用SDN驱动连接数据库 125

5.9 小结 127

第6章 应用实例一:NBA季后赛预测 128

6.1 应用背景分析 129

6.1.1 胜负预测的依据 129

6.1.2 NBA季后赛数据模型 129

6.2 实体对象建模 131

6.2.1 节点实体建模 131

6.2.2 关系实体建模 134

6.3 实体持久化和查询设计 135

6.3.1 东部球队存储库接口 136

6.3.2 西部球队存储库接口 137

6.3.3 比赛存储库接口 138

6.3.4 赢得关系存储库接口 139

6.4 预测算法设计 140

6.4.1 NBA季后赛的年度历史查询 141

6.4.2 一支球队的比赛历史查询 141

6.4.3 胜负比率排名算法 142

6.4.4 输赢预测算法 143

6.5 SDN配置及数据库连接 144

6.5.1 数据库连接配置 145

6.5.2 SDN配置 145

6.6 数据库设计验证 146

6.7 创建Web应用 149

6.8 Web前后端设计 150

6.8.1 Web后端设计 150

6.8.2 Web前端设计 154

6.9 比赛结果编辑设计 168

6.9.1 比赛结果编辑的访问控制设计 168

6.9.2 比赛结果的录入界面设计 171

6.10 胜率排名的Web设计 176

6.10.1 胜率排名的访问控制设计 176

6.10.2 胜率排名的界面设计 177

6.11 输赢预测的Web设计 180

6.11.1 输赢预测的访问控制设计 181

6.11.2 输赢预测的界面设计 182

6.12 使用GraphGists的测试数据 187

6.13 实例工程使用 188

6.13.1 工程配置 189

6.13.2 运行应用 189

6.14 小结 191

第7章 应用实例二:电影社区推荐引擎 192

7.1 应用背景分析 192

7.1.1 发现商业价值 193

7.1.2 建立数据模型 193

7.2 数据对象建模 194

7.2.1 节点建模 194

7.2.2 关系建模 199

7.3 存储库接口设计 201

7.3.1 影院存储库接口设计 201

7.3.2 电影存储库接口设计 202

7.3.3 节目存储库接口设计 203

7.3.4 观众存储库接口设计 204

7.4 Cypher查询算法设计 204

7.4.1 电影排名查询算法设计 205

7.4.2 电影推荐查询算法设计 205

7.5 数据访问服务类设计 208

7.5.1 分页查询公共服务类 209

7.5.2 数据访问服务类 210

7.6 数据库连接配置 212

7.6.1 SDN驱动的依赖引用 212

7.6.2 连接数据库配置 213

7.6.3 SDN配置 213

7.7 数据库设计验证 214

7.8 Web设计 217

7.8.1 访问控制设计 218

7.8.2 界面设计 222

7.9 电影评分的Web设计 242

7.9.1 电影评分访问控制设计 242

7.9.2 电影评分界面设计 244

7.10 电影排名的Web设计 247

7.10.1 电影排名访问控制设计 247

7.10.2 电影排名界面设计 248

7.11 电影推荐的Web设计 252

7.11.1 推荐电影给观众的Web设计 252

7.11.2 推荐电影给朋友的Web设计 257

7.12 管理后台的导航栏设计 258

7.13 实例工程使用 260

7.13.1 运行配置 260

7.13.2 应用发布 261

7.14 小结 262

第8章 Neo4j企业版安装及使用 263

8.1 分布式服务器安装 264

8.1.1 在不同机器上安装分布式服务器 264

8.1.2 在同一台机器上安装分布式服务器 272

8.2 使用Haproxy实施负载均衡服务 275

8.2.1 普通负载均衡配置 275

8.2.2 Haproxy服务监控 279

8.3 实现读/写分离的负载均衡服务 280

8.4 小结 284

第9章 Neo4j的数据安全及备份 286

9.1 数据的备份与恢复 286

9.1.1 数据备份 286

9.1.2 清理备份日志 288

9.1.3 数据恢复 289

9.2 数据库安全保障 290

9.3 数据的导入与导出 290

9.3.1 使用neo4j-import导入数据 291

9.3.2 使用Cypher导入数据 294

9.3.3 导出数据 295

9.4 故障恢复与事务日志 297

9.5 数据库升级 297

9.5.1 从2.x 升级到3.0.3 297

9.5.2 在3.x之间升级 299

9.6 小结 300

结束语 301

附录A 参考资料 302


精彩书摘

  《Neo4j全栈开发》:
  当一个对象使用SDN建模之后,就可以使用SDN的存储库接口实现持久化和进行一些数据访问设计。通过简单继承SDN的存储库接口,就可以执行标准的CURD操作,同时还可以按接口的规范标准声明自定义方法,实现像使用查询语言一样的查询设计。而所有这些方法将由SDN智能实现,并不需要我们编写实现的代码。
  另一个更具灵活性的设计是:在接口中通过注解使用自定义的Cypher查询语句。当然这也是由OGM的映射机制实现的,并且通过OGM优化处理使查询具有很高的效率,即提供了很好的性能表现。通过Cypher查询语言,我们可以设计出复杂的查询,以支持各种各样的业务需求。
  SDN还提供了隐式事务管理机制,即对数据库的每一项操作,包括查找数据、保存数据等,都可以使用隐式事务管理。通过使用隐式事务管理,每一个事务都将是自动提交的,这将不再需要我们编写任何事务管理的代码。当然,通过使用OGM的一些简单注解方法,我们也可以非常灵活地按业务需求来显式地管理事务。
  ……


前言/序言

  在高速发展的互联网应用中,业务需求的频繁变更和数据的快速增长都要求数据库必须具有很强的适应能力。Neo4j图数据库正是一个能够适应这种业务需求不断变化和大规模数据增长而产生的数据库,它不但具有很强的适应能力,而且能够自始至终保持高效的查询性能。

  现实世界中的一切事物都处在联系之中,如人际关系、电脑网络、地理数据、分子结构模型等,无一不处在纷繁复杂的联系之中。这种联系形成了一种互相关联的数据,联系才是数据的本质所在。传统的关系型数据库并不能很好地表现数据的联系,而一些NoSQL(NotOnlySQL,非关系型数据库)数据库也不能表现数据之间的联系。同样是NoSQL的Neo4j图数据库是以图的结构形式来存储数据的,它所存储的就是联系的数据,是关联数据本身。

  关联数据中的联系本来就很复杂,若要在关系型数据库中使用结构化形式来表现这种联系,则一般不能直接表示,处理起来既烦琐又费事,并且随着数据的不断增长,其访问性能将日趋下降。无数的开发人员和数据库管理人员都或多或少地使用过关系型数据库,在其应用的规模化进展过程中,对于数据库的性能优化往往捉襟见肘、陷入窘境。Neo4j没有模式结构的定义,也不需要这些定义,它使用非结构化的方式来存储关联数据,所以能够直接表现数据的关联特性。

  Neo4j不管是与关系型数据库相比,还是与其他NoSQL数据库相比,都具有很多前所未有的优势,主要表现在以下几个方面。

  1.优越的性能表现

  Neo4j具有永久高效的读取和写入能力,这种能力与数据库的大小无关,不管是初始创建的数据库,还是用了很长时间、积累了大量数据的数据库,Neo4j始终能保持闪电般的读/写速度。

  2.设计的灵活性

  因为Neo4j没有模式结构定义的约束,并且由于图结构的自然伸展特性,都给Neo4j提供了无限广阔的灵活设计空间,因为无论是扩展设计,还是增加数据,都不会影响到原来数据的正常使用。

  3.迭代的敏捷性

  正是由于Neo4j的灵活设计特性及其图结构数据的可伸缩性等特点,使其能追上业务需求变化发展的脚步,并且能适用于频繁迭代的敏捷开发方法。

  4.安全可靠的特性

  Neo4j不仅支持完整的事务管理特性,而且提供了实时在线备份功能,以及应对灾难事故进行日志恢复的方法,所有这些都充分说明了Neo4j是一个安全可靠的数据库。

  5.简单易用的特性

  Neo4j在使用上非常简单,不管是使用Java开发语言,还是使用其他开发语言,如Python、Ruby、PHP、.NET、Node.js等,都能够非常方便地访问Neo4j。特别是SpringDataNeo4j开发包,更是提供了一整套非常简单易用的Neo4j数据库使用方法。

  6.丰富的学习资源

  Neo4j的社区版滋生了一个非常活跃的社区,在这个社区中,诸多开发者提供了非常丰富的使用Neo4j的案例——GraphGists,这是学习使用Neo4j的极好资源。通过对这些GraphGists的学习和交流,不仅能拓展你的思路,更能让你的开发工作变得更加简单和容易,而且还能帮助你快速构建应用的商业模型。

  7.大企业的考验

  Neo4j拥有广大而又有实力的用户群体,并且经过几年时间的运行实践,充分验证了它的稳定性和健壮性。如思科、沃尔玛、阿迪达斯等公司,都在使用Neo4j的过程中挖掘到了图数据库的巨大威力,并且创造出了蓬勃发展的商业模型。

  综上所述,使用如此优秀的数据库,不仅可以提升一个应用的性能,而且可以适应大规模的数据增长,同时还能减轻开发人员和数据库管理人员的工作负担,给你和你的企业以及你的用户带来前所未有的优越体验。

  读者对象

  本书适合所有开发人员,特别是SpringBoot开发者阅读,同时适合数据库管理人员和系统设计人员学习使用,并可作为系统策划者进行数据库选型的参考资料。

  实例代码下载

  本书各章的实例代码下载在各个章节中都有明确说明,同时也可以通过以下网址选择不同项目进行下载或检出:

  https://github.com/mr-csj?tab=repositories


点此购买