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

原文链接:https://book.douban.com/review/14358125/

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

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

那么它的组织妙在何处?

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

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

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

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

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

精读笔记:

DDIA 读书分享 第四章:编码和演化

DDIA 读书分享 第三章(下):TP AP 和列存

DDIA 读书分享 第三章(上):LSM-Tree 和 B-Tree

DDIA 读书分享 第二章:数据模型和查询语言


我是青藤木鸟,一个喜欢摄影的分布式系统程序员,欢迎关注我的公众号:“木鸟杂记”,获取更多分布式系统资料和面经。

再次推荐下这本书 —— DDIA相关推荐

  1. FPGA之道(总)推荐下这本书以及传递下作者的原话

    还记得我第一次读这本书的时候,大概是研一下学期或研二的时候,去学校图书馆看到的,当时学校也仅有这一本书,很厚很大的一本书,看到这本巨作,爱不释手. 由于自己也比较喜欢买书,想着下血本网上买一本属于自己 ...

  2. 推荐阅读10本书:提升个人管理能力和领导力

    阅读是一种习惯,阅读更是积累知识,提升自我能力的一种有效的手段.很难想象一个人整天把"我是热爱学习的人"挂在嘴边,但是甚至半年都不会阅读一本书,相信这样的人只是说说而已. 最近在面 ...

  3. 李静纯:我向英语教师推荐的20本书

    2019独角兽企业重金招聘Python工程师标准>>> 李静纯,人民教育出版社研究员,外研社国培与歆语工程讲座培训师,教育部<义务教育英语课程标准>研制专家组成员. 一个 ...

  4. 玉伯直播推荐的 3 本书、聊到的一些内容

    最近好长时间没发文章了,主要是因为最近在做新一代排版引擎的实现,目前大部分功能已经实现,不过有些地方实现的不是很好,没有达到我心中的预期.后面如果有机会和大家聊聊如果设计一个易扩展.易集成.易维护.易 ...

  5. 再次推荐数据安全清除软件----Eraser

    自从冠希兄的事件以来,现代人的数据安全意识越来越强,怎样安全的清理自己已经废弃的数据(尤其是艳照)呢? 今天出的微软technet杂志介绍了一组工具软件(文章link:Toolbox- New Pro ...

  6. 存储系统又慢又杂太难用?我们推荐这几本书帮你解决问题

    我们常用的存储系统种类非常多,有单机的也有分布式的,有的是数据库,有的是文件系统,还有介于二者之间的.无论是哪种存储系统(比如,MySQL.Redis.Elasticsearch,等等),它们都具有如 ...

  7. python三本经典书籍-《python编程入门经典》python之父推荐这三本书让你更快入门...

    在学习python的时候,我们不得不看一些书籍来辅助.有哪些书籍是比较经典的呢?python之父给大家推荐这3本书,其中又2本是属于一个系列,即<Python核心编程>第二版和第三版,一本 ...

  8. 厦门的几家公司,软件测试岗位,帮忙推荐下哪家好?

    厦门的几家公司,软件测试岗位,帮忙推荐下哪家好? 1.亿联 2.众库 3.厦门千时网络科技 4.瑞幸咖啡

  9. 【天天读书】2023 年,科技行业的创业者们推荐这 47 本书 | 创始人书单

    [天天读书]2023 年,科技行业的创业者们推荐这 47 本书 | 创始人书单 目录 [天天读书]2023 年,科技行业的创业者们推荐这 47 本书 | 创始人书单 商业传记: 学习历史上经典的商业案 ...

  10. 学习总结——按下按键灯亮,再次按下按键,灯灭

    按键控制灯的亮灭 1 主要实现按键控制灯的亮灭,按键按下,灯亮,再次按下,灯灭,主要对实现的逻辑进行控制,逻辑清晰,很简单,实现的方法有两种,方法1:将按键按下的值赋值给一个变量,变量除以2的值的是基 ...

最新文章

  1. dz 数据表分析!!!
  2. SignalR实现服务器与客户端的实时通信
  3. java好还是python好-学Python 好还是java 好?
  4. Apache Kafka: 优化部署的10个最佳实践
  5. Spring StateMachine,教你快速实现一个状态机
  6. 手撕设计模式之「单例模式」(详细解析)
  7. http --- http与https相关概念小结
  8. 在现有的python环境下创建另一个python版本【亲测有效】
  9. 忘记番石榴:5个Google库Java开发人员应该知道的
  10. 数组元素前移后移 RUNOOB python练习题 68
  11. 下一步工作的一些思考和问题
  12. flex柱状图和折线图的混合图使用
  13. 玩转linux文件描述符和重定向,玩转Linux文件描述符和重定向
  14. c mysql 并发处理_mysql队列中实现并发读的实现方法解析
  15. insert触发器实例
  16. Access restriction: The type 'BASE64Decoder' is not API (restriction on required library xxx)
  17. 抖音电商广告后台分为哪些?它们其中又有什么区别?
  18. 数据集成之数据整合(Data Consolidation)
  19. 在文件原位置修改文件内容
  20. 【目标跟踪】基于UKF实现自行车状态估计含Matlab源码

热门文章

  1. 北京铁路安检全面升级 四大站特警持枪巡逻
  2. mysql有没有开窗函数_mysql实现开窗函数
  3. ajax怎么会突然出现401,当jquery ajax遇上401请求
  4. 用分支限界法解决人员安排问题(Personnel assignment problem)
  5. java 货币符号_java使用Currency类获得指定国家的货币符号
  6. ASP站内搜索代码#
  7. 如何配置一台电脑。(一次解决电脑基础知识和如何选择合适电脑)
  8. 量子化学计算机理,量子化学计算在反应机理确证中的应用
  9. 2016小米-风口的猪-中国牛市-Java
  10. 组件(component)技术介绍