数据库系统内幕
Alex Petrov
黄鹏程, 傅宇, 张晨 译
出版时间:2020年06月
页数:300
“为了在工作中选择正确的工具,我们需要理解它们背后的设计思路和算法。这本书对初学者很友好,它由业界的实践者撰写,介绍了一些与分布式数据库系统相关的主题。”
——Michael Klishin
RabbitMQ资深贡献者
“这本书对于和任何数据库系统技术打交道的人来说都是必读之书,尤其是那些需要决定使用什么系统的人。”
——Nate McCall
Apache Cassandra提交者
PMC主席

当我们选择、使用并维护一个数据库系统时,理解它的原理至关重要。但是现今有太多的分布式数据库和工具可供使用,要想弄明白每一种工具的作用以及它们之间的区别往往并不容易。在这本实用指南中,作者讲解了现代数据库和存储引擎背后的概念。
通过本书,你将领略到从众多书籍、论文、博客和多个开源数据库源代码中精心选取的相关材料,并且了解到众多现代数据库之间最重要的区别在于决定存储结构和数据分布的子系统。
你将深入了解如下内容:
● 存储引擎:学习存储的种类、分类依据,理解基于B树和不可变日志存储结构的存储引擎。
● 存储构建块:理解数据库文件如何使用诸如页缓存、缓冲池等辅助数据结构来组织构建高效的存储。
● 分布式系统:逐步学习节点和进程间如何连接并构建复杂的通信模式。
● 数据库集群:深入探究现在数据库中常用的一致性模型,并了解分布式存储系统是如何实现一致性的。
  1. 前言
  2. 第一部分 存储引擎
  3. 第1章 简介与概述
  4. 1.1 数据库架构
  5. 1.2 内存数据库与磁盘数据库
  6. 1.3 面向列与面向行的数据库
  7. 1.3.1 面向行的数据布局
  8. 1.3.2 面向列的数据布局
  9. 1.3.3 区别与优化
  10. 1.3.4 宽列式存储
  11. 1.4 数据文件和索引文件
  12. 1.4.1 数据文件
  13. 1.4.2 索引文件
  14. 1.4.3 间接的主索引
  15. 1.5 缓冲、不可变性和有序性
  16. 1.6 本章小结
  17. 第2章 B树基础知识
  18. 2.1 二分搜索树
  19. 2.1.1 树的平衡
  20. 2.1.2 基于磁盘存储的树
  21. 2.2 基于磁盘的结构
  22. 2.2.1 机械硬盘
  23. 2.2.2 固态硬盘
  24. 2.2.3 磁盘存储结构
  25. 2.3 无处不在的B树
  26. 2.3.1 B树的层次结构
  27. 2.3.2 分隔键
  28. 2.3.3 B树查找复杂度
  29. 2.3.4 B树查找算法
  30. 2.3.5 键的数目
  31. 2.3.6 B树的节点分裂
  32. 2.3.7 B树的节点合并
  33. 2.4 本章小结
  34. 第3章 文件格式
  35. 3.1 动机
  36. 3.2 二进制编码
  37. 3.2.1 原始类型
  38. 3.2.2 字符串和变长数据
  39. 3.2.3 按位打包的数据:布尔值、枚举值和标志
  40. 3.3 通用原理
  41. 3.4 页的结构
  42. 3.5 分槽页
  43. 3.6 单元格布局
  44. 3.7 将单元格放进分槽页
  45. 3.8 管理变长数据
  46. 3.9 版本
  47. 3.10 校验和
  48. 3.11 本章小结
  49. 第4章 B树的实现
  50. 4.1 页头
  51. 4.1.1 魔数
  52. 4.1.2 同级指针
  53. 4.1.3 最右指针
  54. 4.1.4 节点的高键
  55. 4.1.5 溢出页
  56. 4.2 二分搜索
  57. 4.3 传播分裂与合并
  58. 4.4 再平衡
  59. 4.5 仅在右侧追加
  60. 4.6 压缩
  61. 4.7 清扫与维护
  62. 4.7.1 更新和删除导致的碎片
  63. 4.7.2 页的碎片整理
  64. 4.8 本章小结
  65. 第5章 事务处理与恢复
  66. 5.1 缓冲区管理
  67. 5.1.1 缓存语义
  68. 5.1.2 缓存回收
  69. 5.1.3 在缓存中锁定页
  70. 5.1.4 页置换
  71. 5.2 恢复
  72. 5.2.1 日志语义
  73. 5.2.2 操作日志与数据日志
  74. 5.2.3 steal和force策略
  75. 5.2.4 ARIES
  76. 5.3 并发控制
  77. 5.3.1 可串行化
  78. 5.3.2 事务隔离
  79. 5.3.3 读异常和写异常
  80. 5.3.4 隔离级别
  81. 5.3.5 乐观并发控制
  82. 5.3.6 多版本并发控制
  83. 5.3.7 悲观并发控制
  84. 5.3.8 基于锁的并发控制
  85. 5.4 本章小结
  86. 第6章 B树的变体
  87. 6.1 写时复制
  88. 6.2 抽象节点更新
  89. 6.3 惰性B树
  90. 6.3.1 WiredTiger
  91. 6.3.2 惰性自适应树
  92. 6.4 FD树
  93. 6.4.1 分段级联
  94. 6.4.2 对数级的有序段
  95. 6.5 Bw树
  96. 6.5.1 更新链
  97. 6.5.2 用CAS控制并发
  98. 6.5.3 结构修改操作
  99. 6.5.4 合并和垃圾收集
  100. 6.6 缓存无关B树
  101. 6.7 本章小结
  102. 第7章 日志结构存储
  103. 7.1 LSM树
  104. 7.1.1 LSM树的结构
  105. 7.1.2 更新与删除
  106. 7.1.3 LSM树的查找
  107. 7.1.4 合并迭代
  108. 7.1.5 协调
  109. 7.1.6 LSM树的维护
  110. 7.2 读写放大与空间放大
  111. 7.3 实现细节
  112. 7.3.1 有序字符串表
  113. 7.3.2 布隆过滤器
  114. 7.3.3 跳表
  115. 7.3.4 磁盘访问
  116. 7.3.5 压缩
  117. 7.4 无序LSM存储
  118. 7.4.1 Bitcask
  119. 7.4.2 WiscKey
  120. 7.5 LSM树中的并发
  121. 7.6 日志堆叠
  122. 7.6.1 闪存转换层
  123. 7.6.2 文件系统日志记录
  124. 7.7 LLAMA与精心堆叠
  125. 7.8 本章小结
  126. 第一部分总结
  127. 第二部分 分布式系统
  128. 第8章 简介与概述
  129. 8.1 并发执行
  130. 8.2 分布式计算的误区
  131. 8.2.1 处理
  132. 8.2.2 时钟和时间
  133. 8.2.3 状态一致性
  134. 8.2.4 本地和远程执行
  135. 8.2.5 处理故障的需要
  136. 8.2.6 网络分区和部分故障
  137. 8.2.7 级联故障
  138. 8.3 分布式系统抽象
  139. 8.4 两将军问题
  140. 8.5 FLP不可能定理
  141. 8.6 系统同步性
  142. 8.7 故障模型
  143. 8.7.1 崩溃故障
  144. 8.7.2 遗漏故障
  145. 8.7.3 任意故障
  146. 8.7.4 故障处理
  147. 8.8 本章小结
  148. 第9章 故障检测
  149. 9.1 心跳和ping
  150. 9.1.1 无超时的故障检测器
  151. 9.1.2 外包心跳
  152. 9.2 phi增量故障检测器
  153. 9.3 Gossip和故障检测
  154. 9.4 反向故障检测
  155. 9.5 本章小结
  156. 第10章 领导者选举
  157. 10.1 霸道选举算法
  158. 10.2 依次故障转移
  159. 10.3 候选节点/普通节点优化
  160. 10.4 邀请算法
  161. 10.5 环算法
  162. 10.6 本章小结
  163. 第11章 复制和一致性
  164. 11.1 实现可用性
  165. 11.2 臭名昭著的CAP理论
  166. 11.2.1 小心使用CAP
  167. 11.2.2 收成与产量
  168. 11.3 共享内存
  169. 11.4 顺序
  170. 11.5 一致性模型
  171. 11.5.1 严格一致性
  172. 11.5.2 可线性化
  173. 11.5.3 顺序一致性
  174. 11.5.4 因果一致性
  175. 11.6 会话模型
  176. 11.7 最终一致性
  177. 11.8 可调一致性
  178. 11.9 见证者副本
  179. 11.10 强最终一致性和CRDT
  180. 11.11 本章小结
  181. 第12章 反熵和传播
  182. 12.1 读修复
  183. 12.2 摘要读
  184. 12.3 提示移交
  185. 12.4 Merkle树
  186. 12.5 位图版本向量
  187. 12.6 Gossip传播
  188. 12.6.1 Gossip技术细节
  189. 12.6.2 覆盖网络
  190. 12.6.3 混合Gossip
  191. 12.6.4 局部视图
  192. 12.7 本章小结
  193. 第13章 分布式事务
  194. 13.1 多个操作的原子性
  195. 13.2 两阶段提交
  196. 13.2.1 2PC中的参与者故障
  197. 13.2.2 2PC中的协调者故障
  198. 13.3 三阶段提交
  199. 13.4 Calvin分布式事务
  200. 13.5 Spanner分布式事务
  201. 13.6 数据库分区
  202. 13.7 Percolator分布式事务
  203. 13.8 协调避免
  204. 13.9 本章小结
  205. 第14章 共识
  206. 14.1 广播
  207. 14.2 原子广播
  208. 14.2.1 虚同步
  209. 14.2.2 Zookeeper原子广播
  210. 14.3 Paxos
  211. 14.3.1 Paxos算法
  212. 14.3.2 Paxos的Quorum
  213. 14.3.3 故障场景
  214. 14.3.4 Multi-Paxos
  215. 14.3.5 快速Paxos
  216. 14.3.6 平等Paxos
  217. 14.3.7 柔性Paxos
  218. 14.3.8 共识的推广解法
  219. 14.4 Raft
  220. 14.4.1 Raft中的领导者角色
  221. 14.4.2 故障场景
  222. 14.5 拜占庭共识
  223. 14.5.1 PBFT算法
  224. 14.5.2 恢复和检查点
  225. 14.6 本章小结
  226. 第二部分总结
  227. 参考文献
书名:数据库系统内幕
作者:Alex Petrov
译者:黄鹏程, 傅宇, 张晨 译
国内出版社:机械工业出版社
出版时间:2020年06月
页数:300
书号:978-7-111-65516-9
原版书书名:Database Internals
原版书出版商:O'Reilly Media
Alex Petrov
 
Alex Petrov是一位数据基础架构工程师,数据库和存储系统的狂热爱好者,Apache Cassandra提交者和PMC成员,精通存储、分布式系统和算法。
 
 
购买选项
定价:119.00元
书号:978-7-111-65516-9
出版社:机械工业出版社