《Neo4j全栈开发》全面、系统地介绍了Neo4j这个独特而又高性能的NoSQL图数据库,从使用Neo4j进行程序开发,到Neo4j的管理和配置等层面全方位地阐释了Neo4j的整个生态体系。
《Neo4j全栈开发》不仅着重介绍了怎样以简单易用的方式来使用Neo4j,更难能可贵的是,《Neo4j全栈开发》还分享了使用分布式Neo4j构建高可用的读/写分离负载均衡配置的实际操作过程和实现细节。
通过对《Neo4j全栈开发》的学习,读者将系统地掌握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