译者序
序 言
前 言
作者简介
第一部分 Neo4j概述
第1章 Neo4j数据库的一个应用案例 3
1.1 为什么要有Neo4j 4
1.2 关系数据库中的图形数据 4
1.3 Neo4j中的图形数据 8
1.4 大数据下的SQL联接操作与Neo4j图形遍历的对比 10
1.5 图形 13
1.6 Neo4j在NoSQL领域的地位 13
1.6.1 主键值存储 14
1.6.2 列族存储 14
1.6.3 面向文档的数据库 15
1.6.4 图形数据库 15
1.6.5 与NoSQL类数据库的比较 15
1.7 Neo4j具有与ACID兼容的数据格式 16
1.8 本章小结 17
第2章 Neo4j的数据模型 18
2.1 Neo4j中数据模型的类型 18
2.1.1 图表建模的一个简单实例 19
2.1.2 图表建模的一个复杂实例 20
2.2 领域建模 22
2.3 更多实例 26
2.3.1 地铁车站实例 26
2.3.2 乐队成员实例 27
2.4 本章小结 29
第3章 Neo4j开发入门 30
3.1 图形数据结构建模 30
3.2 使用Neo4j API 34
3.2.1 创建节点 34
3.2.2 创建关系 36
3.2.3 为节点添加属性 38
3.2.4 节点类型策略 40
3.2.5 为关系添加属性 41
3.3 节点标签 43
3.4 本章小结 46
第4章 强大的图形遍历功能 47
4.1 使用Neo4j核心Java API进行遍历 47
4.1.1 寻找起始节点 48
4.1.2 遍历直接关系 49
4.1.3 遍历深度为2的关系 51
4.1.4 内存使用注意事项 53
4.2 使用Neo4j的遍历API进行遍历 55
4.2.1 使用Neo4j的内置遍历结构 55
4.2.2 实现一个自定义评估函数 56
4.3 本章小结 59
第5章 数据索引 60
5.1 创建索引项 60
5.2 通过邮箱地址查找用户 62
5.3 对多个匹配结果的处理 64
5.4 对索引过的数据进行修改的处理 65
5.5 自动索引 66
5.5.1 模式索引 66
5.5.2 自动索引 69
5.6 索引的成本/效益权衡 70
5.6.1 索引查询的性能优势 71
5.6.2 当更新和插入数据时索引对性能的影响 72
5.6.3 索引的存储 73
5.7 本章小结 73
第二部分 Neo4j应用开发
第6章 Neo4j的查询语言Cypher 77
6.1 Cypher简介 77
6.1.1 Cypher入门 78
6.1.2 执行Cypher查询 79
6.2 Cypher的基本句法 85
6.2.1 模式匹配 85
6.2.2 查找起始节点 89
6.2.3 过滤数据 92
6.2.4 获得结果 93
6.3 用Cypher更新图形数据 96
6.3.1 创建新图形实体 97
6.3.2 删除数据 99
6.3.3 更新节点和关系属性 99
6.4 高级Cypher 100
6.4.1 聚合 100
6.4.2 函数 101
6.4.3 with语句的管道功能 103
6.4.4 Cypher的兼容性 104
6.5 本章小结 104
第7章 事务 105
7.1 事务的基础知识 105
7.1.1 添加事务 107
7.1.2 打好基础,循序渐进 108
7.2 事务的高级功能 109
7.2.1 事务的语义 109
7.2.2 事务中的读取与显式读锁 111
7.2.3 事务中的写入与显式写锁 112
7.2.4 无效锁的危害 114
7.3 与其他事务管理系统的集成 114
7.4 事务事件 116
7.5 本章小结 117
第8章 深度遍历 118
8.1 遍历的顺序 118
8.1.1 深度优先 119
8.1.2 广度优先 121
8.1.3 深度优先与广度优先顺序的比较 122
8.2 扩展关系 124
8.2.1 标准扩展器 124
8.2.2 用于扩展的顺序关系 126
8.2.3 自定义扩展器 127
8.3 管理唯一性 130
8.3.1 NODE_GLOBAL唯一性 130
8.3.2 NODE_PATH唯一性 132
8.3.3 其他唯一性类型 133
8.4 双向遍历 134
8.5 本章小结 137
第9章 Spring Data Neo4j 138
9.1 SDN适合做什么 138
9.1.1 什么是Spring以及Spring与SDN是怎样关联的 140
9.1.2 SDN适合做什么(及不适合做什么) 140
9.1.3 从哪里获得SDN 141
9.1.4 从哪里获得更多的信息 141
9.2 用SDN建模 141
9.2.1 原始POJO域建模 142
9.2.2 注释域模型 144
9.2.3 建模节点实体 145
9.2.4 建模关系实体 148
9.2.5 建模节点实体之间的关系 150
9.3 访问和持久化实体 152
9.3.1 支持Spring的配置 152
9.3.2 Neo4jTemplate类 153
9.3.3 资源库 154
9.3.4 其他选项 157
9.4 对象图形映射选项 158
9.4.1 简单映射 158
9.4.2 基于AspectJ的高级映射 161
9.4.3 对象映射总结 164
9.5 执行查询和遍历 164
9.5.1 注释查询 164
9.5.2 动态派生查询 166
9.5.3 遍历 168
9.6 本章小结 168
第三部分 Neo4j应用实例
第10章 Neo4j的嵌入式模式与服务器模式 171
10.1 使用模式概述 171
10.2 嵌入式模式 173
10.2.1 核心Java集成 173
10.2.2 其他基于JVM的集成 176
10.3 服务器模式 177
10.3.1 Neo4j服务器概述 178
10.3.2 使用细粒度Neo4j服务器模式的REST API 179
10.3.3 使用Cypher Neo4j服务器模式REST API端点 181
10.3.4 使用远程客户端库帮助访问Neo4j服务器 182
10.3.5 服务器插件和非托管扩展 184
10.4 权衡选项 184
10.4.1 对架构的考虑 185
10.4.2 对性能的考虑 187
10.4.3 其他需要考虑的事项 190
10.5 充分利用服务器模式 190
10.5.1 避免细粒度操作 191
10.5.2 使用Cypher 192
10.5.3 服务器插件 194
10.5.4 非托管扩展 196
10.5.5 流REST API 198
10.6 本章小结 199
第11章 Neo4j的架构与应用 200
11.1 高层Neo4j架构 200
11.1.1 设置场景 202
11.1.2 硬盘 202
11.1.3 存储文件 203
11.1.4 Neo4j缓存 205
11.1.5 事务日志及可恢复性 210
11.1.6 编程API 211
11.2 Neo4j的高可用性 212
11.2.1 Neo4j集群概述 213
11.2.2 设置Neo4j集群 216
11.2.3 复制——读和写的策略 218
11.2.4 缓存分区 222
11.2.5 HA小结 224
11.3 备份 225
11.3.1 离线备份 225
11.3.2 在线备份 227
11.3.3 从备份中还原数据 229
11.4 本书可能没有涵盖但你可能会关注的问题 229
11.4.1 安全 229
11.4.2 监控 229
11.5 本章小结 230
11.6 最后的设想 230
附录A 安装Neo4j服务器 231
附录B 设置和运行示例程序 236
附录C 设置使用SDN的项目环境 241
附录D 获得更多的帮助 247
· · · · · · (
收起)