[套装书]ClickHouse原理解析与应用实践+数据库系统内幕(2册)

作者
朱凯 亚历克斯·彼得罗夫
丛书名
数据库技术丛书
出版社
机械工业出版社
ISBN
9782006091049
简要
简介
内容简介书籍计算机书籍 ---------------------------ClickHouse原理解析与应用实践--------------------------- 本书是一本系统介绍Clickhouse的指导型工具书,全书总共分为11章: 第1章 介绍ClickHouse的由来、发展历程、核心特点与核心特点。第2~6章 介绍了ClickHouse基础使用部分,包括整体架构、如何安装、数据定义、数据引擎、数据查询和函数的特性和使用方法。第7~9章介绍了ClickHouse高级特性部分,包括数据库管理操作,数据分片、数据副本和高可用的特性和使用方法。第10~11章介绍了如果自己手动实现ClickHouse中间件的思路和示例,同时也介绍了几款可视化工具与ClickHouse集成的方法。 ---------------------------数据库系统内幕--------------------------- 这本书既不是关于关系型数据库的书,也不是关于NoSQL的书,而是关于在各种数据库系统中使用的算法和概念的书,重点是存储引擎和负责数据分布的组件。第一部分讨论节点本地的进程,并着重于存储引擎这个数据库系统的核心组件以及最重要的一个特有元素。第二部分讨论负责数据分布的子系统和组件,介绍如何将多个节点组织到一个数据库集群中。
目录



---------------------------ClickHouse原理解析与应用实践---------------------------


推荐序一
推荐序二
推荐序三
推荐序四
推荐序五
赞誉
前言
第1章 ClickHouse的前世今生1
1.1 传统BI系统之殇2
1.2 现代BI系统的新思潮2
1.3 OLAP常见架构分类4
1.4 OLAP实现技术的演进6
1.5 一匹横空出世的黑马7
1.5.1 天下武功唯快不破8
1.5.2 社区活跃8
1.6 ClickHouse的发展历程8
1.6.1 顺理成章的MySQL时期9
1.6.2 另辟蹊径的Metrage时期10
1.6.3 自我突破的OLAPServer时期10
1.6.4 水到渠成的ClickHouse时代11
1.7 ClickHouse的名称含义12
1.8 ClickHouse适用的场景12
1.9 ClickHouse不适用的场景13
1.10 有谁在使用ClickHouse13
1.11 本章小结13
第2章 ClickHouse架构概述14
2.1 ClickHouse的核心特性14
2.1.1 完备的DBMS功能15
2.1.2 列式存储与数据压缩15
2.1.3 向量化执行引擎16
2.1.4 关系模型与SQL查询17
2.1.5 多样化的表引擎18
2.1.6 多线程与分布式18
2.1.7 多主架构19
2.1.8 在线查询19
2.1.9 数据分片与分布式查询 19
2.2 ClickHouse的架构设计20
2.2.1 Column与Field20
2.2.2 DataType20
2.2.3 Block与Block流21
2.2.4 Table22
2.2.5 Parser与Interpreter22
2.2.6 Functions 与Aggregate Functions22
2.2.7 Cluster与Replication23
2.3 ClickHouse为何如此之快24
2.3.1 着眼硬件,先想后做24
2.3.2 算法在前,抽象在后24
2.3.3 勇于尝鲜,不行就换25
2.3.4 特定场景,特殊优化25
2.3.5 持续测试,持续改进25
2.4 本章小结26
第3章 安装与部署27
3.1 ClickHouse的安装过程27
3.1.1 环境准备27
3.1.2 安装ClickHouse28
3.2 客户端的访问接口31
3.2.1 CLI31
3.2.2 JDBC33
3.3 内置的实用工具35
3.3.1 clickhouse-local35
3.3.2 clickhouse-benchmark36
3.4 本章小结38
第4章 数据定义39
4.1 ClickHouse的数据类型39
4.1.1 基础类型40
4.1.2 复合类型45
4.1.3 特殊类型48
4.2 如何定义数据表49
4.2.1 数据库49
4.2.2 数据表50
4.2.3 默认值表达式52
4.2.4 临时表53
4.2.5 分区表54
4.2.6 视图55
4.3 数据表的基本操作56
4.3.1 追加新字段56
4.3.2 修改数据类型56
4.3.3 修改备注56
4.3.4 删除已有字段57
4.3.5 移动数据表57
4.3.6 清空数据表58
4.4 数据分区的基本操作58
4.4.1 查询分区信息58
4.4.2 删除指定分区58
4.4.3 复制分区数据59
4.4.4 重置分区数据60
4.4.5 卸载与装载分区60
4.4.6 备份与还原分区61
4.5 分布式DDL执行61
4.6 数据的写入61
4.7 数据的删除与修改63
4.8 本章小结64
第5章 数据字典65
5.1 内置字典65
5.1.1 内置字典配置说明65
5.1.2 使用内置字典67
5.2 外部扩展字典67
5.2.1 准备字典数据67
5.2.2 扩展字典配置文件的元素组成68
5.2.3 扩展字典的数据结构69
5.2.4 扩展字典的类型71
5.2.5 扩展字典的数据源79
5.2.6 扩展字典的数据更新策略84
5.2.7 扩展字典的基本操作85
5.3 本章小结87
第6章 MergeTree原理解析88
6.1 MergeTree的创建方式与存储结构89
6.1.1 MergeTree的创建方式89
6.1.2 MergeTree的存储结构91
6.2 数据分区93
6.2.1 数据的分区规则93
6.2.2 分区的命名规则94
6.2.3 分区的合并过程95
6.3 一级索引98
6.3.1 稀疏索引98
6.3.2 索引粒度99
6.3.3 索引数据的生成规则99
6.3.4 索引的查询过程101
6.4 二级索引102
6.4.1 granularity与index_granularity的关系104
6.4.2 跳数索引的类型105
6.5 数据存储106
6.5.1 各列独立存储106
6.5.2 压缩数据块106
6.6 数据标记109
6.6.1 数据标记的生成规则109
6.6.2 数据标记的工作方式110
6.7 对于分区、索引、标记和压缩数据的协同总结113
6.7.1 写入过程113
6.7.2 查询过程114
6.7.3 数据标记与压缩数据块的对应关系114
6.8 本章小结116
第7章 MergeTree系列表引擎117
7.1 MergeTree117
7.1.1 数据TTL117
7.1.2 多路径存储策略121
7.2 ReplacingMergeTree128
7.3 SummingMergeTree130
7.4 AggregatingMergeTree134
7.5 CollapsingMergeTree137
7.6 VersionedCollapsingMergeTree140
7.7 各种MergeTree之间的关系总结141
7.7.1 继承关系141
7.7.2 组合关系143
7.8 本章小结144
第8章 其他常见类型表引擎145
8.1 外部存储类型145
8.1.1 HDFS145
8.1.2 MySQL149
8.1.3 JDBC150
8.1.4 Kafka152
8.1.5 File157
8.2 内存类型158
8.2.1 Memory159
8.2.2 Set159
8.2.3 Join160
8.2.4 Buffer162
8.3 日志类型164
8.3.1 TinyLog164
8.3.2 StripeLog165
8.3.3 Log166
8.4 接口类型167
8.4.1 Merge167
8.4.2 Dictionary168
8.4.3 Distributed169
8.5 其他类型170
8.5.1 Live View170
8.5.2 Null171
8.5.3 URL171
8.6 本章小结173
第9章 数据查询174
9.1 WITH子句175
9.2 FROM子句177
9.3 SAMPLE子句178
9.4 ARRAY JOIN子句180
9.5 JOIN子句183
9.5.1 连接精度184
9.5.2 连接类型186
9.5.3 多表连接189
9.5.4 注意事项190
9.6 WHERE与PREWHERE子句190
9.7 GROUP BY子句193
9.7.1 WITH ROLLUP194
9.7.2 WITH CUBE194
9.7.3 WITH TOTALS195
9.8 HAVING子句195
9.9 ORDER BY子句197
9.10 LIMIT BY子句198
9.11 LIMIT子句199
9.12 SELECT子句200
9.13 DISTINCT子句200
9.14 UNION ALL子句202
9.15 查看SQL执行计划203
9.16 本章小结207
第10章 副本与分片208
10.1 概述208
10.2 数据副本209
10.2.1 副本的特点212
10.2.2 ZooKeeper的配置方式212
10.2.3 副本的定义形式213
10.3 ReplicatedMergeTree原理解析214
10.3.1 数据结构215
10.3.2 副本协同的核心流程217
10.4 数据分片228
10.4.1 集群的配置方式228
10.4.2 基于集群实现分布式DDL232
10.5 Distributed原理解析236
10.5.1 定义形式236
10.5.2 查询的分类237
10.5.3 分片规则238
10.5.4 分布式写入的核心流程239
10.5.5 分布式查询的核心流程245
10.6 本章小结251
第11章 管理与运维252
11.1 用户配置252
11.1.1 用户profile252
11.1.2 配置约束253
11.1.3 用户定义254
11.2 权限管理257
11.2.1 访问权限257
11.2.2 查询权限258
11.2.3 数据行级权限259
11.3 熔断机制261
11.4 数据备份263
11.4.1 导出文件备份263
11.4.2 通过快照表备份264
11.4.3 按分区备份264
11.5 服务监控265
11.5.1 系统表266
11.5.2 查询日志267
11.6 本章小结270



---------------------------数据库系统内幕---------------------------


前言 1
第一部分 存储引擎
第1章 简介与概述 13
1.1 数据库架构 14
1.2 内存数据库与磁盘数据库 16
1.3 面向列与面向行的数据库 17
1.3.1 面向行的数据布局 18
1.3.2 面向列的数据布局 19
1.3.3 区别与优化 20
1.3.4 宽列式存储 20
1.4 数据文件和索引文件 21
1.4.1 数据文件 22
1.4.2 索引文件 23
1.4.3 间接的主索引 24
1.5 缓冲、不可变性和有序性 25
1.6 本章小结 26
第2章 B树基础知识 28
2.1 二分搜索树 28
2.1.1 树的平衡 29
2.1.2 基于磁盘存储的树 31
2.2 基于磁盘的结构 32
2.2.1 机械硬盘 32
2.2.2 固态硬盘 32
2.2.3 磁盘存储结构 34
2.3 无处不在的B树 35
2.3.1 B树的层次结构 36
2.3.2 分隔键 38
2.3.3 B树查找复杂度 39
2.3.4 B树查找算法 39
2.3.5 键的数目 40
2.3.6 B树的节点分裂 40
2.3.7 B树的节点合并 42
2.4 本章小结 43
第3章 文件格式 45
3.1 动机 45
3.2 二进制编码 46
3.2.1 原始类型 46
3.2.2 字符串和变长数据 48
3.2.3 按位打包的数据:布尔值、枚举值和标志 48
3.3 通用原理 49
3.4 页的结构 51
3.5 分槽页 51
3.6 单元格布局 53
3.7 将单元格放进分槽页 54
3.8 管理变长数据 55
3.9 版本 56
3.10 校验和 57
3.11 本章小结 58
第4章 B树的实现 59
4.1 页头 59
4.1.1 魔数 59
4.1.2 同级指针 60
4.1.3 最右指针 60
4.1.4 节点的高键 61
4.1.5 溢出页 62
4.2 二分搜索 64
4.3 传播分裂与合并 65
4.4 再平衡 67
4.5 仅在右侧追加 68
4.6 压缩 69
4.7 清扫与维护 70
4.7.1 更新和删除导致的碎片 70
4.7.2 页的碎片整理 71
4.8 本章小结 72
第5章 事务处理与恢复 74
5.1 缓冲区管理 75
5.1.1 缓存语义 77
5.1.2 缓存回收 77
5.1.3 在缓存中锁定页 78
5.1.4 页置换 79
5.2 恢复 82
5.2.1 日志语义 83
5.2.2 操作日志与数据日志 84
5.2.3 steal和force策略 84
5.2.4 ARIES 85
5.3 并发控制 86
5.3.1 可串行化 86
5.3.2 事务隔离 87
5.3.3 读异常和写异常 88
5.3.4 隔离级别 88
5.3.5 乐观并发控制 90
5.3.6 多版本并发控制 91
5.3.7 悲观并发控制 91
5.3.8 基于锁的并发控制 91
5.4 本章小结 98
第6章 B树的变体 101
6.1 写时复制 101
6.2 抽象节点更新 103
6.3 惰性B树 103
6.3.1 WiredTiger 104
6.3.2 惰性自适应树 105
6.4 FD树 106
6.4.1 分段级联 106
6.4.2 对数级的有序段 108
6.5 Bw树 108
6.5.1 更新链 109
6.5.2 用CAS控制并发 109
6.5.3 结构修改操作 110
6.5.4 合并和垃圾收集 111
6.6 缓存无关B树 112
6.7 本章小结 114
第7章 日志结构存储 116
7.1 LSM树 117
7.1.1 LSM树的结构 118
7.1.2 更新与删除 122
7.1.3 LSM树的查找 123
7.1.4 合并迭代 124
7.1.5 协调 126
7.1.6 LSM树的维护 126
7.2 读写放大与空间放大 129
7.3 实现细节 130
7.3.1 有序字符串表 130
7.3.2 布隆过滤器 132
7.3.3 跳表 133
7.3.4 磁盘访问 135
7.3.5 压缩 136
7.4 无序LSM存储 136
7.4.1 Bitcask 137
7.4.2 WiscKey 138
7.5 LSM树中的并发 139
7.6 日志堆叠 140
7.6.1 闪存转换层 141
7.6.2 文件系统日志记录 142
7.7 LLAMA与精心堆叠 144
7.8 本章小结 145
第一部分总结 147
第二部分 分布式系统
第8章 简介与概述 151
8.1 并发执行 151
8.2 分布式计算的误区 153
8.2.1 处理 154
8.2.2 时钟和时间 155
8.2.3 状态一致性 156
8.2.4 本地和远程执行 157
8.2.5 处理故障的需要 157
8.2.6 网络分区和部分故障 157
8.2.7 级联故障 158
8.3 分布式系统抽象 160
8.4 两将军问题 165
8.5 FLP不可能定理 166
8.6 系统同步性 167
8.7 故障模型 167
8.7.1 崩溃故障 168
8.7.2 遗漏故障 168
8.7.3 任意故障 169
8.7.4 故障处理 169
8.8 本章小结 169
第9章 故障检测 171
9.1 心跳和ping 172
9.1.1 无超时的故障检测器 173
9.1.2 外包心跳 174
9.2 phi增量故障检测器 175
9.3 Gossip和故障检测 175
9.4 反向故障检测 176
9.5 本章小结 177
第10章 领导者选举 179
10.1 霸道选举算法 180
10.2 依次故障转移 181
10.3 候选节点/普通节点优化 182
10.4 邀请算法 183
10.5 环算法 184
10.6 本章小结 185
第11章 复制和一致性 187
11.1 实现可用性 188
11.2 臭名昭著的CAP理论 188
11.2.1 小心使用CAP 189
11.2.2 收成与产量 190
11.3 共享内存 191
11.4 顺序 192
11.5 一致性模型 193
11.5.1 严格一致性 194
11.5.2 可线性化 194
11.5.3 顺序一致性 198
11.5.4 因果一致性 199
11.6 会话模型 202
11.7 最终一致性 204
11.8 可调一致性 204
11.9 见证者副本 206
11.10 强最终一致性和CRDT 207
11.11 本章小结 209
第12章 反熵和传播 212
12.1 读修复 213
12.2 摘要读 214
12.3 提示移交 215
12.4 Merkle树 215
12.5 位图版本向量 216
12.6 Gossip传播 218
12.6.1 Gossip技术细节 219
12.6.2 覆盖网络 219
12.6.3 混合Gossip 220
12.6.4 局部视图 221
12.7 本章小结 222
第13章 分布式事务 224
13.1 多个操作的原子性 225
13.2 两阶段提交 226
13.2.1 2PC中的参与者故障 227
13.2.2 2PC中的协调者故障 228
13.3 三阶段提交 229
13.4 Calvin分布式事务 231
13.5 Spanner分布式事务 233
13.6 数据库分区 235
13.7 Percolator分布式事务 236
13.8 协调避免 238
13.9 本章小结 240
第14章 共识 243
14.1 广播 244
14.2 原子广播 245
14.2.1 虚同步 245
14.2.2 Zookeeper原子广播 246
14.3 Paxos 248
14.3.1 Paxos算法 249
14.3.2 Paxos的Quorum 250
14.3.3 故障场景 251
14.3.4 Multi-Paxos 253
14.3.5 快速Paxos 254
14.3.6 平等Paxos 255
14.3.7 柔性Paxos 257
14.3.8 共识的推广解法 259
14.4 Raft 261
14.4.1 Raft中的领导者角色 263
14.4.2 故障场景 264
14.5 拜占庭共识 266
14.5.1 PBFT算法 266
14.5.2 恢复和检查点 268
14.6 本章小结 269
第二部分总结 272
参考文献 275



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4