第一篇 大数据管理概述 1
第1章 数据库管理系统概述 3
1.1 数据管理系统的发展历史 3
1.1.1 第一代:层次、网状数据库系统 3
1.1.2 第二代:关系数据库系统 6
1.1.3 第三代:数据仓库系统 8
1.1.4 第四代:大数据管理系统 9
1.1.5 小结 10
1.2 大数据管理系统的特征 10
1.2.1 大数据管理系统的数据特征 11
1.2.2 大数据管理系统的系统特征 11
1.2.3 大数据管理系统的应用特征 12
1.3 大数据管理系统的组成 13
1.3.1 多引擎系统结构 13
1.3.2 混合负载系统架构 14
1.3.3 分布式系统架构 14
第二篇 数据模型与语言 17
第2章 关系数据模型与SQL 19
2.1 关系数据库概述 19
2.1.1 基本概念 20
2.1.2 基本关系操作与实现技术 23
2.2 关系数据库标准语言SQL 24
2.2.1 SQL基本语法 24
2.2.2 SQL扩展语法 26
2.3 SQL on Hadoop 33
2.4 NoSQL数据库 36
2.5 代表性的关系数据库 38
2.5.1 传统数据库技术的发展 39
2.5.2 代表性的MPP数据库 40
2.5.3 代表性的NewSQL数据库 44
2.5.4 基于新硬件技术的数据库 46
2.6 小结 46
第3章 键值对数据模型 49
3.1 概述 49
3.1.1 什么是键值对模型 49
3.1.2 键值对模型应用现状 50
3.2 数据结构和数据操作 51
3.2.1 Dynamo 51
3.2.2 Redis 55
3.2.3 RAMCIoud 59
3.2.4 BigTable 60
第4章 文档模型与查询语言 63
4.1 概述 63
4.2 文档结构 64
4.2.1 XML结构 64
4.2.2 JSON结构 69
4.3 查询语言 73
4.3.1 DOM接口及应用实例 73
4.3.2 XQuery及应用实例 75
4.3.3 FLWOR 78
4.3.4 XPath及应用实例 80
4.3.5 JSON API及应用实例 82
4.4 文档数据库举例 84
4.4.1 eXistdb 84
4.4.2 MongoDB 90
4.5 拓展阅读建议 95
4.6 小结 96
第5章 图模型与类SQL查询语言 97
5.1 图的数据结构及其形式化定义 97
5.1.1 简单图 97
5.1.2 标签图 98
5.1.3 属性图 100
5.2 图数据操作 102
5.2.1 图匹配 102
5.2.2 图导航 105
5.2.3 图与关系的复合操作 107
5.3 图查询语言Cypher 109
5.3.1 对象创建 109
5.3.2 检索 113
5.3.3 图的更新 116
5.4 Neo4j图数据库 118
5.4.1 Neo4j简介 118
5.4.2 Neo4j应用实例 120
第三篇 大数据管理系统 125
第6章 大数据管理系统的体系架构 127
6.1 数据库系统体系架构的发展 127
6.1.1 集中式体系架构 127
6.1.2 客户-服务器体系架构 129
6.1.3 并行与分布式体系架构简述 130
6.1.4 数据库系统体系架构的相关概念 132
6.2 并行数据库体系架构 133
6.2.1 并行数据库体系架构设计 134
6.2.2 IO并行 134
6.2.3 查询间与查询内并行 136
6.2.4 操作间与操作内并行 137
6.3 分布式数据库体系架构 140
6.3.1 分布式事务系统结构 140
6.3.2 分布式数据库中的并发控制 141
6.3.3 分布式数据库设计中的折中方案 143
6.3.4 异构与基于云的分布式数据库 145
6.3.5 目录系统 147
6.4 实例分析 148
6.5 小结 150
第7章 数据组织与存储 151
7.1 概述 151
7.1.1 数据组织与存储的嵌套关系 152
7.1.2 数据组织实例:文件系统 153
7.1.3 数据组织带来的数据映射与放大 155
7.2 硬件访问模型 158
7.2.1 内存访问模型 159
7.2.2 磁盘访问模型 160
7.2.3 闪存访问模型 161
7.2.4 瓦记录磁盘访问模型 163
7.2.5 非易失内存访问模型 164
7.3 索引技术 166
7.3.1 哈希索引 166
7.3.2 有序索引 167
7.3.3 哈希-有序复合索引 171
7.3.4 存在索引 172
7.3.5 其他索引技术 174
7.4 键值存储 174
7.4.1 基于哈希索引的键值存储系统 175
7.4.2 基于LSM树索引的键值存储系统 176
7.4.3 基于B/B+树索引的键值存储系统 178
7.5 列存储 179
7.5.1 列存储数据库 181
7.5.2 HDFS列存储 183
7.6 其他类型存储 185
7.6.1 文档存储 185
7.6.2 无结构文档存储 185
7.6.3 XML文档存储 186
7.6.4 JSON文档存储 187
7.6.5 图存储 187
7.7 小结 190
第8章 分布式查询处理优化 191
8.1 分布式查询处理概述 192
8.1.1 数据分布策略 192
8.1.2 分布式查询处理 194
8.1.3 分布式查询优化技术 197
8.2 面向关系数据的分布式查询处理 198
8.2.1 概述 198
8.2.2 分布式关系数据库查询处理 203
8.2.3 分布式关系数据库查询优化 210
8.2.4 分布式关系数据库查询处理技术实例分析 212
第9章 分布式事务 223
9.1 概述 223
9.1.1 单机事务处理技术 223
9.1.2 分布式事务处理技术 227
9.2 分布式系统与事务 233
9.2.1 分布式系统的挑战 233
9.2.2 分布式一致性 235
9.2.3 可用性、隔离性、一致性的关系 238
9.3 分布式事务 242
9.3.1 分布式提交算法 242
9.3.2 全局可串行化保证 247
9.3.3 去中心化的分布式事务 251
9.4 图、键值、文档模型事务处理技术 260
9.4.1 图模型事务处理技术 261
9.4.2 键值、文档模型事务处理技术 262
9.5 典型案例 263
9.5.1 Spanner分布式事务 263
9.5.2 CockroachDB分布式事务 268
9.6 拓展阅读 273
9.6.1 新硬件与事务 273
9.6.2 AI与事务 275
9.6.3 架构与事务 276
9.6.4 性能与事务 278
9.6.5 并发访问控制算法 278
9.6.6 其他 279
9.7 小结 279
第10章 故障恢复 281
10.1 传统的数据库故障恢复概述 281
10.1.1 故障的种类 281
10.1.2 故障恢复技术 284
10.2 分布式数据库节点故障的终结和恢复协议 288
10.2.1 两阶段提交协议的终结和恢复协议 289
10.2.2 三阶段提交协议的终结和恢复协议 295
10.2.3 需要注意的事项 299
10.3 当前流行的分布式数据库恢复技术及应用 300
10.3.1 Paxos协议 300
10.3.2 Raft协议 302
10.3.3 Raft协议与Paxos协议的对比分析 304
10.4 其他常见的容错与恢复技术 305
10.4.1 Hadoop的存储副本容错 305
10.4.2 HA热备 306
10.4.3 键值对系统的故障恢复 308
10.4.4 其他容错技术 309