描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115571373丛书名: 图灵程序设计丛书
1.本书以一个虚构的餐厅点评应用程序为例,完整地展示了图应用程序的构建过程。
2.本书示例采用企业级应用程序的常用语言Gremlin,在不同图数据库产品之间具有较强的可迁移性。
3.完整清晰的学习结构,通过11章内容帮助读者从入门到实践,再到进阶学习图数据库:
入门:掌握基本概念、图数据建模、图遍历。
实践:使用图数据库构建“友聚”应用程序。
进阶:分析性能,避免陷阱和反模式。
“戴夫和乔希是成绩斐然的图架构师和开发人员,我想不出还有谁能更好地引导你踏上理解图数据库的旅程并帮助你规划路线。”
——Ted Wilmes,JanusGraph技术指导委员会委员
“这本书深入浅出地介绍了图应用程序的构建过程。无论是对数据建模还是对数据库技术感兴趣的朋友,均可以通过此书领略图数据库的魅力。”
——付晓岩,IBM副合伙人
现实世界中的数据往往并不是能以行列形式呈现的表格型数据,而是富含关系信息的复杂网络。对于挖掘这类数据的潜在价值,图数据库具有明显的优势。本书介绍如何针对真实场景设计和实现图数据库。你将学习图论的基础知识,并尝试构建基于图数据库的社交网络应用程序和推荐引擎等。你将掌握图数据库开发的所有重要概念,包括递归遍历、图数据建模、查询调优、性能调优、图分析,以及如何避免超级节点等反模式。学完本书后,你将有能力构建基于图数据库的应用程序,从而显著地提升数据价值。本书
示例采用开源图计算框架TinkerPop及其查询语言Gremlin,但所述概念均适用于Neo4j等基于Cypher的图数据库。
第 一部分 图数据库入门
第 1章 初识图 2
1.1 什么是图 3
1.1.1 什么是图数据库 4
1.1.2 与其他类型数据库的比较 5
1.1.3 为什么不能使用SQL 6
1.2 我的问题适合用图数据库吗 13
1.2.1 探究疑问 14
1.2.2 如果仍无法确定 16
1.3 小结 19
第 2章 图数据建模 20
2.1 数据建模过程 20
2.1.1 数据建模术语 21
2.1.2 数据建模的四个步骤 22
2.2 理解问题 23
2.2.1 关于领域和范围的疑问 24
2.2.2 关于业务实体的疑问 25
2.2.3 关于功能的疑问 26
2.3 构建概念数据模型 27
2.3.1 对实体进行识别和归类 27
2.3.2 识别实体间的关系 28
2.4 构建逻辑数据模型 30
2.4.1 将实体转换为顶点 32
2.4.2 将关系转换为边 34
2.4.3 寻找并分配属性 42
2.5 检查模型 43
2.6 小结 44
第3章 基本遍历和递归遍历 45
3.1 建立开发环境 45
3.1.1 启动Gremlin Server 46
3.1.2 启动Gremlin Console,连接Gremlin Server,加载数据 46
3.2 遍历图 47
3.2.1 使用逻辑数据模型(模式)来规划遍历 48
3.2.2 通过图数据来计划操作 49
3.2.3 遍历图的基本概念 51
3.2.4 使用Gremlin编写遍历 52
3.2.5 使用值操作检索属性 56
3.3 递归遍历 57
3.3.1 使用递归逻辑 57
3.3.2 使用Gremlin编写递归遍历 60
3.4 小结 66
第4章 寻路遍历与图变异 67
4.1 图变异 68
4.1.1 添加顶点和边 69
4.1.2 从图中删除数据 72
4.1.3 修改图 73
4.1.4 扩展图 79
4.2 路径 82
4.2.1 图中的环 83
4.2.2 查找简单路径 85
4.3 遍历和筛选边 86
4.3.1 遍历边的E操作和V操作 86
4.3.2 通过属性筛选边 90
4.3.3 在路径结果中包括边 91
4.3.4 实现边的计数和反规范化 92
4.4 小结 93
第5章 格式化结果 94
5.1 回顾值操作 94
5.2 构建结果 99
5.2.1 在Gremlin中应用别名 101
5.2.2 投射结果而不应用别名 106
5.3 对结果进行组织 110
5.3.1 对图遍历返回的结果排序 110
5.3.2 对图遍历返回的结果分组 112
5.3.3 限制结果记录的数量 114
5.4 将操作组合成复杂的遍历 115
5.5 小结 119
第6章 开发应用程序 120
6.1 开始项目 121
6.1.1 选择工具 121
6.1.2 设置项目 122
6.1.3 选择驱动程序 122
6.1.4 准备数据库服务器实例 123
6.2 连接数据库 124
6.2.1 集群配置 124
6.2.2 建立GraphTraversal Source 125
6.3 获取数据 127
6.3.1 获取一个顶点 128
6.3.2 使用Gremlin语言变体 129
6.3.3 增加终点操作 130
6.3.4 在应用程序中创建Java方法 132
6.4.1 添加顶点 132
6.4.2 添加边 133
6.4.3 修改属性 135
6.4.4 删除元素 136
6.5 转换清单和路径遍历 138
6.5.1 获取结果的清单 138
6.5.2 实现递归遍历 139
6.5.3 实现路径 140
6.6 小结 141
第二部分 使用图数据库构建应用程序
第7章 高级数据建模技术 144
7.1 回顾当前数据模型 145
7.2 扩展逻辑数据模型 146
7.3 将实体转换为顶点 148
7.3.1 使用通用标签 149
7.3.2 反规范化图数据 154
7.3.3 将关系转换为边 158
7.3.4 查找和分配属性 160
7.3.5 将属性移到边 160
7.3.6 检查模型 163
7.4 针对个性化用例扩展数据模型 163
7.5 比较结果 165
7.6 小结 166
第8章 使用熟路构建遍历 167
8.1 开发遍历的准备工作 168
8.1.1 识别所需的元素 168
8.1.2 选择起点 171
8.1.3 准备测试数据 172
8.2 编写第 一个遍历 173
8.2.1 设计遍历 174
8.2.2 开发遍历代码 176
8.3 分页和图数据库 180
8.3.1 调用range()前为输入排序的重要性 181
8.3.2 排序是昂贵的操作 182
8.4 推荐评分的餐厅 184
8.4.1 设计遍历 184
8.4.2 开发遍历代码 186
8.5 编写后的推荐引擎遍历 194
8.5.1 设计遍历 196
8.5.2 添加遍历到应用程序中 198
8.6 小结 199
第9章 子图 200
9.1 使用子图 201
9.1.1 提取子图 201
9.1.2 遍历子图 206
9.2 针对个性化用例构建子图 208
9.3 构建遍历 213
9.3.1 反转遍历方向 214
9.3.2 计算子图各自的结果 215
9.4 连接服务器的子图 217
9.4.1 使用TinkerPop的Client连接集群 217
9.4.2 将遍历添加到应用程序中 219
9.5 小结 219
第三部分 进阶
第 10章 性能、陷阱和反模式 222
10.1 执行缓慢的遍历 222
10.1.1 解释遍历 223
10.1.2 分析遍历 224
10.1.3 索引 226
10.2 处理超级节点 227
10.2.1 和实例数据有关 227
10.2.2 和数据库有关 228
10.2.3 什么导致了超级节点 228
10.2.4 监控超级节点 229
10.2.5 有超级节点怎么办 230
10.3 应用程序的反模式 234
10.3.1 对非图用例使用图 234
10.3.2 脏数据 235
10.3.3 缺乏充分的测试 236
10.4 遍历反模式 237
10.4.1 不使用参数化的遍历 237
10.4.2 使用没有标签的筛选操作 241
第 11章 下一段旅程:图分析、机器学习和资源 242
11.1 图分析 242
11.1.1 寻路 243
11.1.2 中心性 245
11.1.3 群体检测 247
11.1.4 图和机器学习 250
11.1.5 其他资源 251
11.2 写在后 253
11.3 小结 253
附录Apache TinkerPop概述和安装 254
评论
还没有评论。