第 一部分 图数据库入门 第 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