一本神书:《数据密集型应用系统设计》


我最近在读一本好书《数据密集型应用系统设计》(也被叫做 DDIA)。这真是本相见恨晚的神书。

数据密集型应用系统设计: Martin Kleppmann 赵军平吕云松耿煜李三平: 9787519821968: Amazon.com: Books

这是怎样一本神书?豆瓣评分高达 9.7 分!

在这里插入图片描述

什么是「数据密集型应用系统」?

当数据(数据量、数据复杂度、数据变化速度)是一个应用的主要挑战,那么可以把这个应用称为数据密集型的。与之相对的是计算密集型——处理器速度是主要瓶颈。

其实我们平时遇到的大部分系统都是数据密集型的——应用代码访问内存、硬盘、数据库、消息队列中的数据,经过业务逻辑处理,再返回给用户。

image-20211011223218294

很多软件都是在解决不同场景下的数据存储和检索问题——MySQL,Redis,HBase,Kafka,ElasticSearch……

还有很多技术是围绕着数据展开——索引,编码(JSON, XML, Thrift, ProtoBuffer),行列存储……

当分布式处理数据时,要考虑——数据复制,分区,事务等等。

总之,只要是个程序员,就肯定跟数据打过交道,或多或少对上述软件与技术有所了解。

我之前在阿里巴巴的主要工作就是跟数据打交道,但我对数据相关的技术只是处于「看山是山」的阶段,远远没有达到融会贯通的地步。

在我们学知识的时候,往往都是分门别类的学:这本书讲 MySQL 的,那本书讲 Redis 的。这种学习方法使知识割裂,很难让我们掌握不同的技术之间的区别和联系。

《数据密集型应用系统设计》这本书,把所有跟「数据」有关的知识点进行了整理、归纳、总结,从一个很高的层次把各项技术的共性和区别讲得透彻。 当我们懂了底层原理之后,就明白了每项技术产生的背景是什么,解决了什么问题,有什么适用场景。

这本书分为了三部分:

  • 第一部分:数据系统的基石,包括数据模型与查询语言、存储与检索、数据编码与演化;
  • 第二部分:分布式数据,包括复制、分片、事务、一致性与共识;
  • 第三部分:衍生数据,包括批处理、流处理、数据系统的未来。

我现在刚读完第一部分,正在读第二部分。第一部分的第三章「存储与检索」真是精华,从一个最简单的数据库开始,逐步越讲越深入,把常见的数据库的存储与检索方式剖析完了。如果你可以按照第三章的讲解,自己动手实现一个数据库,是绝对可以写到简历里面的。

我在读《数据密集型应用系统设计》的时候,一边读,一边做笔记。虽然读的比较慢,但是确实收获很多。这种书根本就读不快啊!因为里面处处都是我从未看到过的知识点,只能一边读一边思考。不过,这时间花得值,解决了之前我对「数据」的理解只浮于表面、而没有深究的问题。

我的读书笔记

总之,我强烈推荐《数据密集型应用系统设计》这本书。在阅读的同时也做好笔记,增加知识与大脑摩擦往往能记得更牢哦!

这本书我还在阅读之中,欢迎大家跟我交流。

 

最后,分享一下资源:

  1. 负雪明烛的读书笔记:https://fuxuemingzhu.cn/ddia/
  2. 《数据密集型应用系统设计》开源翻译仓库:https://github.com/Vonng/ddia
  3. 在线阅读:https://vonng.gitbooks.io/ddia-cn/content/
  4. 《数据密集型应用系统设计》纸质书(翻译水平比在线阅读版好很多,当当网限时 5 折,强烈建议买书):https://st.jingxi.com/pingou/detail.shtml?sku=10030245018628&activeid=16199334571994&tuanid=99999&d=DwUDd3D&s=&from=cps&addpara=&headUrl=&nickname=&hideyl=&cpsjxsid=16341719319890692325

大家是怎么看待这本书呢?可以在评论区中给我留言。

点击阅读原文,跳转到在线阅读地址。

 
 
 
 
 
 
 
 
 
 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM