ddia_read/preface.md
2023-02-22 16:06:40 +08:00

3.2 KiB
Raw Blame History

早就在知乎上听人推荐过这本书,之前偶尔翻过第二部分 Replication 和 Partition 两章,感觉讲的还不错,但对于做分布式存储和数据库人员来说,稍微有点泛泛而谈。初次见面,只觉其好而不神。

今年2022建了一个分布式系统和数据库爱好者的微信群如果不组织大家做点什么微信群迟早沦为僵尸群“好”一点的可能变成吹水群但这显然不是我的初衷。念念不忘必有回响心里又掠过了这本书更兼在北美华人群里见过本书被分享过还挺受欢迎。一拍大腿就是他了组织大家一块过一遍 DDIA 把,于是有了这个读书会。

一精读,便不可收拾。这才发现了此书之妙:数据系统方方面面,知识线索极为庞杂,本书却能以极为合理的脉络将其勾连在一起,形成环环相扣的知识体系。至于泛泛而谈?自然是真真香:这本就是框架式书籍,更何况,每章附录列出参考引用、论文列表,都是非常经典的深入阅读材料。

那么它的组织妙在何处?

现在20220425刚精读到第五章仅以现在认识来简单聊聊我的看法。

第一,全书分三个部分。分别是单机,多机,衍生。从单机开始聊数据系统,可以摒除分布式庞杂理论的影响,专注在数据系统本身相关理论;到第二个部分放开单机限制,着重讲将数据系统扩展到多机所面临的问题和一般解决方案;最后一部分笔锋一转,着眼数据处理,以数据系统视角看,无非是一个数据集的变换,也即数据的派生。三个部分,层层递进,相互正交。这种行文思路,正是大型工业代码组织思路:将复杂度拆解到几个正交、但又相互连结的模块,从而使每个部分都相对内聚而简洁。

第二,具体到第一部分,开篇就给了三个总纲式的“心法”:可靠性、可伸缩性、可维护性。然后,从上到下,由离用户最近的数据模型(比如关系模型)和查询语言(比如 SQL到稍微底层一点的存储引擎比如 B+ tree 和 lsm tree和查询引擎再到最底层的编码数据结构的降维和演化层层下探令人拍案叫绝。我之前工作和兴趣之余所接触到的零碎知识至此百川入海万法归一。

第三,具体到每一章,也是节节递进,读起来无比丝滑。比如第三章,在讲存储引擎时,从一个仅由两个 shell 函数组成的“kv 引擎”起到一个简单的日志结构的存储Bitcask再到经典的 LSM-Tree。这又是工程中惯用思路从一个最小可用原型开始不断增加需求、解决瓶颈最终得到一个工业可用的存储引擎。

我们如何认识世界?不断归纳然后演绎。我们如何处理复杂度?不断拆解然后勾连。将汪洋恣肆的复杂度合理疏导,渐次递进,本书无愧神书!

如果你也对此书感兴趣,但苦于无人交流,欢迎参加我们的读书会:https://docs.qq.com/sheet/DWHFzdk5lUWx4UWJq?tab=BB08J2。里面有往期分享录屏、进群方式和之后安排共勉~