最近一口气看了 10 章 DDIA-V2,确实是好书啊

YanSeven 2026-09-07 20:58 1

尤其是在 AI 时代,对于入行两年的我而言,DDIA 完全是起到了提纲挈领,导师级的作用。

并且阅读的时候,DDIA-V2 配合 LLM 问答,完全相得益彰。书中无需赘述过多的技术细节。有疑惑不懂地及时问 AI 。也能快速的从逻辑和知识面上予以解惑。

虽然学了照样还是要面临行业危机,但确实是好书。
最新回复 (12)
  • midasplus 09-07 22:17
    1
    竟然已经出第二版了
    DDIA 第一版读完确实收获了很多
  • levelworm 09-07 22:38
    2
    的确看了,但是感觉一个说的比较粗,另外一个毕竟亲身实践的太少。可能还是要针对里头每一章做实验。
  • YanSeven 楼主 09-07 22:52
    3
    @midasplus 是的,和第一版相差不大,算是小迭代
  • YanSeven 楼主 09-07 22:55
    4
    @levelworm 提纲挈领式的,粗点到不是缺点了。细节的基于书里的参考文献然后让高级 llm 譬如 gpt6 这种发散一下就是一篇深度文章甚至加上实验计划。在 llm 时代倒也没什么问题了。
  • sora2blue 09-07 23:31
    5
    确实是好书,人工含量很高,能跟着大佬建立基本的认知框架
  • JasonYip 09-07 23:48
    6
    感谢佬推荐 已经加入书单准备学习
  • prosgtsr 09-08 01:09
    7
    忘干净了已经。。
    几乎所有读过的书都忘干净了。。
  • levelworm 09-08 04:26
    8
    @YanSeven #4
    的确也是。我读了一遍之后觉得还得继续精读。现在在重新读第二遍。
  • YanSeven 楼主 09-08 09:15
    9
    @prosgtsr 说明已经内化了,进入无招胜有招境界
  • FeifeiJin 09-08 09:56
    10
    @prosgtsr
    这种就是张无忌的所有招式都忘记了。
  • FeifeiJin 09-08 09:59
    11
    DDIA 是一本绝对意义的好书,分享看第一版时的一些笔记。

    #读书感悟/DesigningDataIntensiveApplication
    第一章围绕构建系统的三个原则,
    - Reliability
    - Scalability
    - Maintainability
    工作超过五年,只要稍微看过几本关于分布式系统、微服务或 DDD 方面的书的话,对这些东西早已经滚瓜烂熟。这一章不过是把一些散落在天涯的知识进行归纳而已。如果是刚毕业读这本书必然从这里开始便能醍醐灌顶,但对于工作十年以上的老油条而言,但凡你经历过上线即宕机、负载过大仿佛被 DDoS 以及堆积如屎山的技术债,那么这章不过是在简单描述你经历过的惨事罢了。
    不过里面提到两个例子还蛮有趣的,
    - 一个是 Twitter 的信息流,从每次刷新 timeline 的时候去即时读取数据,转变为有人发 Twitter 就往粉丝的 timeline 里主动插入数据,把读的压力转换为写的压力。
    - 另外是 Amazon 对于服务的 p99 ,致力于满足 99%的客户。动机很有趣,因为正是那 1 %的客户使用频次高,他们才是核心用户。



    #读书感悟/DesigningDataIntensiveApplication
    第二章则是宽泛地介绍了数据库类型与选择。
    - 关系型数据库 (MySQL, PostgreSQL, etc.)
    - 文档型数据库 (MongoDB)
    - 图数据库(Neo4J)
    Data models 旨在去思考我们想要解决的问题,而不仅仅是数据如何在软件中存储。在现代化的编程模型中,细节都一层层的被隐藏了,比如对于我这个时代而言 DataLog 是所有数据库模型基础,也是今天才知道。对于下一代使用 Ai 或 No-Code 的人而言,他们可能连数据模型都不需要知道,这些复杂的行为可以被 in-advanced 语言所隐藏。
    在现代编程思想里,万物皆可对象化,则万物皆可关系数据库化。不过世上没有银弹,应该在合适的场景下选择合适的数据库。
    - 一对多,且只有 writen 时,NoSQL 是最优解,例如聊天记录。
    - 多对多,以及超级复杂的数据模型时,Graphic Database 。比如社交网络关系,Page Ranking 。
    - 其余读写频繁,且关系不复杂基本可以用 Relational Databse 。
    本章宽泛地介绍了数据库基本选型,值得赞美是它并未陷入细节里,比如 MySQL 数据的存储方式、索引规则等等。它简洁明了地介绍 了各种数据库的使用场景,让你知道何时该选择什么样的数据库,也简述了数据库的发展发展历史。
    从业这么些年,每次接触一个新系统,其实只要弄清楚它的数据流向,那么这个系统也就手到擒来,说到底。Information System 的根本还是围绕数据的上下游进行各种处理。


    #读书感悟/DesigningDataIntensiveApplication
    第三章主题是数据在内存和硬盘里的存储和获取。
    对于 2010 年代后进入编程行业的程序员,数据库的存储细节也被现代化的数据库隐藏起来。从业良久,没有认真地去思考过数据的错处方式和细节,现在的感受就是:作为行业人员,真的好不合格。
    从功能性出发分为两类:
    - OLTP ,面向用户的数据库,写入大于读取,传统开发人员使用频次最高的数据库,几乎所有的关系性数据库都是 OLTP 。
    - OLAP ,面向的用户是数据分析师,转精于大体量的数据查询。但凡是开发人员(数据工程师除外)使用较少的数据库,几乎都是 OLAP 。
    数据最终是以文件形式持久化存储于磁盘的,这对于容灾备份、快速复制和数据恢复及节省成本都是有益的,而如何让数据快速的存储和读取则是我们需要考虑的问题。这里需要建立在一个鱼与熊掌的话题上:读写不可兼得。
    - Index 的引入是增加写压力而增强读能力。
    - Hash Index:Key-Value Index ,检索能力可以达到 O(1)。
    - SSTable:MemTable 和 compatced LSM Tree 的最佳实践。LSM Tree 设计上是 imuteable ,因此 SSTable 也多用于 NoSql ,Apache Cassandra 和 Apache HBase 。
    - B-Trees:Relational Database 的 Index 的流行通用实践,MySql 、MS SQL Server 和 Oracle SQL 都是使用 B-Trees 作为索引的存储结构。B-Tree 的 key point 是它有一个 worst predictable time 是 O(LogN)。
    - Red-Black-Tree:是 B-Tree 的延伸 Variant ,当下流行数据库 PostgreSql 就使用了它。
    还有其它对全文检索的 fuzzy idnex 、in memory index 等。
    还有介绍到 Column-Oriented Storage 、Data Cube 和 Materialized Views 。
    本章进入到数据存储和读取的核心原理,几乎是最痛的痛点进行讲解,而有没有去更深入到锁、同步、如何保持读写一致性等等都技术细节里,而是站在一个刚好适宜的位置去评价市面上主流和流行的数据库,这个尺度拿捏的恰到好处,读完本章节,已经开始对此书赞不绝口了。




    从第三章开始已经停不下对它的赞美。
  • FeifeiJin 09-08 10:00
    12
    然后分享一个有趣但无用的知识:第八章的作者是 Gay 。


    看《 DDIA 》,刚打开第八章看到引言作者名字后面跟着 Carly Rae Jepen 。我心想“大事不妙啊,蹲妹都蹲到我专业领域来了吗?”。于是把整个部分放到 google ,然后发现讲这句话的人现在穿着 leather 参加 pride ,倒也没震惊我一百年,不过下次再有人问不写代码去做什么的时候,我就把此人 Twitter 给甩过去,看!这就是本人的商业转型!
* 帖子来源V2EX
返回