目录
第1章 Neo4j 图数据库基础 1
1.1 图数据库的产生背景 2
1.2 图数据库基础 7
1.2.1 图数据库介绍 7
1.2.2 图数据模型 7
1.2.3 图计算引擎 8
1.2.4 图数据库的历史 9
1.3 图数据库与关系数据库的对比 10
1.3.1 关系数据库的弊端 10
1.3.2 图数据模型的优势 10
1.4 图数据库与其他 NoSQL 数据库的对比 12
1.4.1 其他 NoSQL 数据库的弊端 12
1.4.2 将键值对存储与图数据库相关联 12
1.4.3 将文档存储与图数据库相关联 13
1.5 Neo4j 概述 13
1.6 Neo4j 的体系结构 15
1.6.1 免索引邻接 16
1.6.2 Neo4j 底层存储结构 17
1.6.3 Neo4j 的遍历方式 21
1.6.4 Neo4j 的存储优化 22
第2章 Neo4j 基础入门 24
2.1 Neo4j 的安装部署 24
2.1.1 Neo4j安装包的下载 24
2.1.2 在各个操作系统上的安装 26
2.1.3 Neo4j的启动 32
2.2 Neo4j 管理平台的使用 33
2.2.1 Web管理平台的使用 33
2.2.2 neo4j-shell 的使用 37
2.3 Neo4j 图数据中基本元素与概念 41
2.3.1 节点 41
2.3.2 关系 41
2.3.3 属性 42
2.3.4 路径 42
2.3.5 遍历(Traversal) 43
2.4 官方入门实例介绍 43
2.4.1 创建图数据 44
2.4.2 检索节点 46
2.4.3 查询关系 49
2.4.4 思考与练习 52
2.4.5 清空数据库 54
2.5 批量导入工具的使用 54
2.5.1 获取CSV文件 54
2.5.2 使用 Load CSV 指令导入到 Neo4j 58
2.5.3 使用neo4j-import 工具导入到 Neo4j 61
第3章 Neo4j 之 Cypher 63
3.1 Cypher 概述 63
3.1.1 Cypher 是什么 63
3.1.2 模式(Patterns) 65
3.1.3 查询和更新图 66
3.1.4 事务 67
3.1.5 唯一性 68
3.1.6 兼容性 69
3.2 基本语法 70
3.2.1 类型 70
3.2.2 表达式 70
3.2.3 变量 73
3.2.4 参数 73
3.2.5 运算符 77
3.2.6 注释 78
3.2.7 模式(Patterns) 78
3.2.8 列表 81
3.2.9 空值 87
3.3 语句 89
3.3.1 MATCH 89
3.3.2 OPTINAL MATCH 101
3.3.3 WHERE 102
3.3.4 START 113
3.3.5 Aggregation 114
3.3.6 LOAD CSV 121
3.3.7 CREATE 125
3.3.8 MERGE 129
3.3.9 SET 138
3.3.10 DELETE 142
3.3.11 REMOVE 143
3.3.12 FOREACH 145
3.3.13 CREATE UNIQUE 146
3.3.14 RETURN 149
3.3.15 ORDER BY 153
3.3.16 LIMIT 155
3.3.17 SKIP 156
3.3.18 WITH 158
3.3.19 UNWIND 160
3.3.20 UNION 161
3.3.21 CALL 163
3.4 函数 167
3.4.1 断言(Predicate)函数 167
3.4.2 标量(Scalar)函数 170
3.4.3 列表(List)函数 177
3.4.4 数学函数 182
3.4.5 字符串函数 193
3.4.6 自定义函数 199
3.5 模式(Schema) 200
3.5.1 索引 200
3.5.2 约束 203
3.5.3 统计 209
3.6 查询调优 210
3.6.1 查询如何执行 210
3.6.2 查询性能分析 211
3.6.3 查询调优举例 211
3.6.4 USING 213
3.7 执行计划 220
3.7.1 开始点运算符 221
3.7.2 Expand 运算符 224
3.7.3 组合运算符 226
3.7.4 行运算符 234
3.7.5 更新运算符 241
3.7.6 最短路径规划 243
第4章 Neo4j 程序开发 246
4.1 Neo4j 开发入门 246
4.1.1 Java 嵌入式开发模式 246
4.1.2 各语言驱动包开发模式 246
4.2 Java API 嵌入式开发模式 247
4.2.1 Java 开发前的准备工作 248
4.2.2 创建 Neo4j 图实例 253
4.2.3 图数据遍历功能 257
4.2.4 数据索引 264
4.2.5 过程 273
4.2.6 事务管理 280
4.2.7 使用Java在线备份Neo4j 286
4.2.8 使用JMX监控Neo4j 286
4.3 各语言驱动包开发模式 288
4.3.1 驱动开发入门 289
4.3.2 配置和连接 292
4.3.3 执行 Cypher 语句 297
4.3.4 返回结果 301
4.3.5 数据类型 308
4.3.6 异常 310
4.3.7 其他语言驱动 311
4.4 Neo4j HTTP API 312
4.4.1 流 312
4.4.2 认证和授权 312
4.4.3 在一个请求中使用事务 316
4.4.4 执行多条语句 317
4.4.5 运行一个事务 318
4.4.6 在打开的事务中执行语句 319
4.4.7 重置超时事务 319
4.4.8 提交事务 320
4.4.9 回滚事务 321
4.4.10 查询统计信息 321
4.4.11 以图格式返回结果 322
4.4.12 错误处理 324
4.4.13 在事务中处理错误 325
4.5 其他开发技术介绍 326
4.5.1 Spring-Data-Neo4j 326
4.5.2 Spring-Data-Neo4在项目中的部署 326
4.5.3 使用 Neo4j-OGM 的对象图映射 327
4.5.4 使用 JDBC 连接 Neo4j 328
4.5.5 JCypher 329
4.5.6 Groovy&Grails:Neo4j Grails 插件 329
4.5.7 Clojure:Neocons 329
4.5.8 Scala:AnormCypher 330
4.5.9 JPA:Hibernate OGM 330
第5章 Neo4j 数据库管理 331
5.1 部署 331
5.1.1 系统需求 331
5.1.2 文件位置 332
5.1.3 重要端口 333
5.1.4 设置初始密码 334
5.1.5 等待 Neo4j 启动 334
5.1.6 使用数据收集器 335
5.1.7 配置 Neo4j 连接器 336
5.1.8 安装证书 337
5.2 监控 338
5.2.1 指标 340
5.2.2 日志 344
5.2.3 查询管理 346
5.2.4 因果集群监控相关方法 348
5.3 安全管理 350
5.3.1 Neo4j社区版用户管理 350
5.3.2 认证和授权 352
5.3.3 与 LDAP 集成 362
5.3.4 子图访问控制 366
5.3.5 安全清单 367
5.4 Neo4j 数据库运维与优化 368
5.4.1 内存调优 368
5.4.2 事务日志 371
5.4.3 压缩存储 371
5.4.4 Linux 文件系统调优 373
5.4.5 磁盘、内存及相关提示 373
5.5 Neo4j 数据库的备份与恢复 374
5.5.1 备份简介 374
5.5.2 执行备份 375
5.5.3 恢复备份 377
5.6 Neo4j 数据库管理相关工具 378
5.6.1 导入工具 378
5.6.2 Cypher Shell 382
5.6.3 Neo4j 数据转储和加载 384
5.6.4 一致性检查工具 385
第6章 Neo4j 集群技术 387
6.1 因果集群 387
6.1.1 初识因果集群 388
6.1.2 操作视图 388
6.1.3 应用视图 389
6.1.4 因果集群的生命周期 390
6.1.5 创建一个新的因果集群 395
6.1.6 数据中心灾难恢复 398
6.1.7 因果集群的数据迁移和恢复 400
6.1.8 因果集群的其他设置 401
6.2 高可用性集群 401
6.2.1 高可用性集群概述 402
6.2.2 建立 Neo4j 高可用性集群 404
6.2.3 状态信息端点 406
6.2.4 HAProxy 用于负载均衡 408
6.3 集群的备份与恢复 410
6.4 Neo4j 单实例和高可用性集群版本升级 411
6.4.1 单实例升级 411
6.4.2 从高可用性集群升级 412
第7章 Neo4j 应用案例 413
7.1 应用案例概述 413
7.2 欺诈检测 416
7.2.1 第一方银行欺诈 417
7.2.2 保险欺诈 424
7.2.3 电子商务欺诈 427
7.2.4 小结 428
7.3 科研导图 428
7.4 电子邮件监测 437
7.5 工商企业图谱 442
7.6 社交网络 449
第8章 Neo4j 高级应用 458
8.1 高级索引 458
8.1.1 空间索引(Neo4j Spatial) 458
8.1.2 自定义中文全文索引 468
8.2 在 Docker 环境下部署 Neo4j 471
8.2.1 概览 472
8.2.2 Docker 配置 472
8.2.3 Neo4j 配置 473
8.3 自定义批量导入 476
8.4 Neo4j 与图计算 479
8.4.1 Neo4j-Spark-Connector 480
8.4.2 Neo4j-Spark-Connector 提供的 API 482
8.5 Neo4j与自然语言处理 483
8.5.1 计算聚合相关性 484
8.5.2 将文本数据建模为邻接图 484
8.5.3 加载数据 486
8.5.4 挖掘单词之间的关系 488
8.6 其他高级应用 490
第9章 Neo4j 简体中文版 491
9.1 简介 491
9.2 下载及安装 496
9.3 启动及浏览 497
9.4 指定节点图片 499
9.5 指定节点尺寸 501
9.6 指定节点颜色 502
9.7 指定关系粗细 503
9.8 指定关系颜色 504
9.9 智能查询 505
9.10 导入精灵 508
9.10.1 安装导入精灵 508
9.10.2 启动导入精灵 509
9.10.3 准备Excel样本文件 510
9.10.4 导入Excel样本文件 511
9.10.5 准备MySQL样本数据库 513
9.10.6 导入 MySQL 样本数据库 515
9.10.7 查看导入结果 516
9.10.8 导入精灵映射机制 517
附录A Neo4j 配置设置 521
附录B Neo4j 内建过程 550