第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