第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