第1章 简介 1
1.1 课程目标 1
1.2 基本理念 1
1.3 学习路线图 3
1.4 参考文献 3
1.5 自测题 4
第一部分 企业计算的未来 7
第2章 企业计算的新需求 7
2.1 事件数据的处理 7
2.2 整合结构化和非结构化数据 9
2.3 社交网络和网站 11
2.4 运营云环境 11
2.5 移动运营 12
2.6 生产及分销计划 13
2.7 参考文献 14
2.8 自测题 15
第3章 企业应用的特征 17
3.1 多样的应用 17
3.2 OLTP与OLAP的对比 17
3.3 OLAP与OLTP分离的缺点 18
3.4 对比OLTP和OLAP的访问模式 19
3.5 集OLTP与OLAP于一身的数据 19
3.6 企业数据的特征 20
3.7 参考文献 20
3.8 自测题 21
第4章 硬件架构的创新 23
4.1 内存单元 23
4.2 内存层级 25
4.3 内部高速缓存 26
4.4 地址转换 27
4.5 预读取机制 28
4.6 存储器层级和延迟 29
4.7 非一致性内存访问架构(NUMA) 31
4.8 不断扩展的主内存系统 33
4.9 远程内存访问 34
4.10 参考文献 34
4.11 自测题 35
第5章 SanssouciDB蓝图 37
5.1 主存中的数据存储 37
5.2 以列为导向 37
5.3 列式存储的启示 38
5.4 活动数据与非活动数据 39
5.5 架构概览 40
5.6 参考文献 41
5.7 自测题 41
第二部分 数据库存储技术的基础 45
第6章 字典编码 45
6.1 压缩举例 46
6.2 排序的字典 48
6.3 基于编码的操作 49
6.4 自测题 49
第7章 压缩 53
7.1 前缀编码 53
7.2 运行长度编码 55
7.3 集群编码 56
7.4 间接编码 58
7.5 变量编码 61
7.6 限制 63
7.7 参考文献 63
7.8 自测题 64
第8章 内存中的数据布局 67
8.1 应用性能上的缓存效应 67
8.2 行式布局和列式布局 71
8.3 列式布局的优点 72
8.4 混合表布局 73
8.5 参考文献 74
8.6 自测题 75
第9章 分区 77
9.1 定义和分类 77
9.2 垂直分区 78
9.3 水平分区 78
9.4 选择合适的分区策略 80
9.5 参考文献 81
9.6 自测题 81
第三部分 内存数据库的操作 85
第10章 删除 85
10.1 物理删除示例 85
10.2 参考文献 87
10.3 自测题 87
第11章 插入 89
11.1 示例 89
11.2 性能方面的考虑 94
11.3 自测题 95
第12章 更新 97
12.1 更新类型 97
12.2 更新示例 98
12.3 参考文献 100
12.4 自测题 101
第13章 元组重建 103
13.1 简介 103
13.2 行式数据库的元组重建 104
13.3 列式数据库的元组重建 105
13.4 补充示例和讨论 106
13.5 自测题 107
第14章 扫描的性能 111
14.1 简介 111
14.2 行式布局:全表扫描 112
14.3 行式布局:步长访问 113
14.4 列式布局:全列扫描 114
14.5 补充示例和讨论 115
14.6 自测题 116
第15章 查询 117
15.1 关系代数 117
15.2 数据检索 118
15.3 自测题 120
第16章 物化策略 123
16.1 物化的几个方面 123
16.2 案例 124
16.3 早期物化 125
16.4 晚期物化 127
16.5 参考文献 129
16.6 自测题 130
第17章 并行数据处理 131
17.1 硬件层 132
17.2 软件层 136
17.3 参考文献 138
17.4 自测题 139
第18章 索引 141
18.1 索引:优化查询的方法 141
18.2 技术考虑 141
18.3 倒排索引 143
18.4 讨论 147
18.5 参考文献 150
18.6 自测题 150
第19章 连接 153
19.1 在主存中执行连接 154
19.2 哈希连接 156
19.3 排序合并连接 158
19.4 选择连接算法 160
19.5 自测题 161
第20章 聚合函数 163
20.1 使用COUNT函数的聚合示例 164
20.2 自测题 165
第21章 并行选择 167
21.1 并行化 167
21.2 自测题 170
第22章 工作负载管理和排程 171
22.1 速度的力量 171
22.2 排程 172
22.3 混合工作负载管理 173
22.4 参考文献 173
22.5 自测题 173
第23章 并行连接 175
23.1 部分并行处理的哈希连接 175
23.2 并行哈希连接 176
23.3 参考文献 177
23.4 自测题 178
第24章 并行聚合 179
24.1 聚合函数重复访问 179
24.2 使用哈希的并行聚合 180
24.3 参考文献 182
24.4 自测题 183
第四部分 高级数据库存储技术 187
第25章 差分缓冲区 187
25.1 概念 187
25.2 实现 187
25.3 元组生命周期 189
25.4 参考文献 190
25.5 自测题 191
第26章 只插入 193
26.1 只插入方法的定义 193
26.2 浮点表示法 194
26.3 间隔表示法 196
26.4 并发控制:快照隔离 198
26.5 只插入:优势和挑战 200
26.6 参考文献 201
26.7 自测题 201
第27章 合并处理 203
27.1 异步在线合并 204
27.2 单个列属性合并示例 207
27.3 合并优化 210
27.4 参考文献 212
27.5 自测题 213
第28章 日志 215
28.1 日志的基础架构 215
28.2 逻辑日志与字典编码日志 217
28.3 示例 221
28.4 参考文献 223
28.5 自测题 224
第29章 恢复 227
29.1 读取元数据 227
29.2 恢复数据库 228
29.3 参考文献 229
29.4 自测题 229
第30章 动态数据库重组 231
30.1 行式存储中的重组操作 231
30.2 列式存储的动态重组 232
30.3 扩展话题:多租户要求在线重组 233
30.4 热数据和冷数据 235
30.5 参考文献 236
30.6 自测题 236
第五部分 企业应用开发新时代的基础 241
第31章 对应用开发的影响 241
31.1 优化内存数据库上的应用开发 241
31.2 最佳实践 247
31.3 自测题 248
第32章 数据库视图 251
32.1 视图的优势 251
32.2 分层视图的概念 252
32.3 视图的开发工具 253
32.4 参考文献 254
32.5 自测题 254
第33章 处理业务对象 255
33.1 业务对象持久化 256
33.2 对象关系映射 256
33.3 自测题 257
第34章 “迂回”解决方案 259
34.1 转变步骤的细节 260
34.2 关于“迂回”解决方案的结论 263
34.3 自测题 264
自测题解答 265
术语表 297
译后记 305