第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