mysql 技术内幕 pdf_【书】数据库系统内幕

本书深入探讨了数据库存储引擎及分布式系统的工作原理,重点讲解了B树与LSM树两种数据结构的区别及其应用场景,并对分布式系统中的一致性和事务处理进行了详细阐述。

0297e62f99a2d15510f71bf890cb5e66.png

本书大标题是“数据库系统内幕”,其实还有个小标题没有翻译:

A Deep Dive into How Distributed Data Systems Work

简单翻译就是“分布式数据系统运行原理”。

所以本书的主要内容是数据库 + 分布式系统。

第一部分

第一部分主要介绍数据库的存储引擎,其中主要涉及两个数据结构:

  1. B 树(包括 B 树、B+ 树以及其他变体)
  2. LSM 树

这二者的区别在于 B 树是可变的存储结构,在修改时直接操作磁盘上的原纪录,而 LSM 可以作为不可变存储结构,仅支持追加存储。

我们知道 B 树是 MySQL InnoDB 存储引擎所采用的数据结构,本书几乎前三分之一的内容都在介绍 B 树相关内容,包括原理、实现、使用等,对于可变性,重点介绍了节点的分裂与合并、页布局,即如何编码数据、组织数据等。

对于 LSM 树,首先介绍其结构,一般包括两部分:内存表(MemTable)、磁盘表(SSTable),其中磁盘方面考虑到后期读时的优化,又可以再加一个压实(Compaction)的表。然后提到不可变结构面临的共通问题:

  1. 读放大:为了检索数据而读取多个表
  2. 写放大:压实过程带来额外的写
  3. 空间放大:一条记录可能同时出现在多层

最后介绍 LSM 的一些实现细节,包括布隆过滤器,采用跳表作为内存表的存储结构等。

第二部分

这一部分的内容最让我感到混乱,明明领导者的选举依赖于共识算法,但是却在第 10 章介绍选举,而在最后一章(第 14 章)才讲共识。并且把同样介绍分布式系统中的故障问题,拆成了两个章节,一个是第 9 章的故障检测,另一个是第 12 章的反觞。

此外主要介绍了分布式系统中的一致性概念,这部分的内容可圈可点,其中提到了各种一致性模型,包括:

  • 严格一致性
  • 可线性化
  • 顺序一致性
  • 因果一致性

另外重点介绍了分布式事务相关内容,其中还点到了国产开源数据库 TiDB(值得国人傲娇一下),本节内容对于 Spanner 等分布式数据库提供了一定帮助。

总结

看完本书的总体感觉是:整体思路混乱,部分章节可取

先说说缺点吧:

  1. 名为数据库系统,却只说存储,不讲计算。
  2. 思路混乱,没有过渡感,为什么有了 B 树,还要 LSM 树?从存储引擎到分布式系统的过渡太生硬,两部分的内容很难结合起来,其实我觉得可以增加一张来介绍分布式存储,这样会让整本书更有层次感。
  3. 部分数据结构与算法讲得太细,却很少提及为什么选择它们的原因,以及与其他方式的对比。

当然优点也有,最重要的恐怕就在于介绍分布式系统底层技术的书籍太少,这本书填补了一些空白,同时提到了一些分布式系统的通用问题,有利于我们站在更高的角度来面对实际生产中的一些问题,比如一致性模型等。

总的来说,还是值得一读。

番外

关于分布式系统,这里推荐一个知乎专栏【分布式系统之美】,目前由 PingCap 的几位大佬维护。另外有三篇文章分别从存储、计算、调度的角度谈 TiDB(关键字:三篇文章了解 TiDB 技术内幕),特别推荐一读!

本文首发于公众号“数据Man”,欢迎关注!

c6b52efe999699c283150b4bbe2446f8.png
数据Man
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值