《DDIA》读书笔记系列

本系列将 《Designing Data-Intensive Applications》DDIA,Martin Kleppmann)的笔记按原书三部分整理;正文收录在固定目录 /books/ddia/(与 《LLM Interview Handbook》全译系列 相同的 books 编排),便于收藏章节链接与全文内检索。

声明:本文为个人学习笔记,非官方译本;转载请注明出处,勿用于商业再发行。阅读原书请支持正版(dataintensive.net)。

在线目录(全书三部分)

部分 主题 涵盖章节 链接
数据系统基础 第 1–4 章 阅读
分布式数据 第 5–9 章 阅读
衍生数据 第 10–12 章 阅读
  • 仅部分标题与表格的目录页(方便收藏):/books/ddia/

书籍信息

项目 内容
书名 Designing Data-Intensive Applications (DDIA)
中文名 数据密集型应用系统设计
作者 Martin Kleppmann(剑桥大学分布式系统研究员)
出版时间 2017 年 3 月

核心主题

本书围绕三个核心概念展开:

  • 可靠性 (Reliability):系统在遇到故障时仍能正确工作
  • 可扩展性 (Scalability):系统能够应对负载增长
  • 可维护性 (Maintainability):系统易于理解、修改和扩展

全书结构(章节摘要)

第一部分:数据系统基础

章节 核心内容
第 1 章 可靠性、可扩展性、可维护性的定义与实践
第 2 章 关系模型、文档模型、图模型的对比与选择
第 3 章 存储引擎原理:B-Tree、LSM-Tree、OLTP vs OLAP
第 4 章 数据编码格式与模式演化:JSON、Protobuf、Avro

第二部分:分布式数据

章节 核心内容
第 5 章 数据复制:主从、多主、无主复制策略
第 6 章 数据分区:分区策略、再平衡、请求路由
第 7 章 事务:ACID、隔离级别、分布式事务
第 8 章 分布式系统挑战:网络、时钟、故障模型
第 9 章 一致性与共识:CAP、Paxos、Raft

第三部分:衍生数据

章节 核心内容
第 10 章 批处理:MapReduce、Spark、数据流引擎
第 11 章 流处理:Kafka、Flink、事件时间与水位线
第 12 章 数据系统未来:数据集成、端到端正确性、伦理

为何这样归档

  • 岗位侧:系统设计面试常问存储选型、复制与分区、事务隔离、一致性与消息语义。
  • 学习侧:需要一条「单节点 → 分布式 → 批流一体」的主线,避免孤立背题。
  • 实践侧:固定在 /books/ddia/ 下,写方案时便于引用与对齐追问点。

各部分的表格与示意图已整理为 Markdown/SVG,图片位于站点 /images/(含 ddia-part1-*ddia/part2ddia/part3 等路径)。

学习路线

入门路线(适合初学者)

1
2
3
4
5
第1章 → 第2章 → 第3章 → 第4章(建立基础)

第5章 → 第6章(理解分布式基础)

第10章 → 第11章(了解数据处理)

进阶路线(适合有经验的开发者)

1
2
3
4
5
第7章 → 第8章 → 第9章(深入分布式)

第12章(展望未来)

回顾第1-4章填补知识空白

专题路线

方向 推荐阅读顺序
数据库 2 → 3 → 5 → 6 → 7
分布式系统 5 → 6 → 8 → 9
数据工程 3 → 10 → 11 → 12

核心要点速览

数据模型选择

1
2
3
4
5
关系模型 ──── 结构化数据、复杂查询、事务支持

文档模型 ──── 灵活模式、树状结构、局部性好

图模型 ───── 复杂关系、社交网络、知识图谱

存储引擎对比

引擎 优化目标 典型应用
B-Tree 读取优化 OLTP 数据库
LSM-Tree 写入优化 日志、时序数据
列存储 分析优化 OLAP、数据仓库

分布式系统核心权衡

$$
\text{CAP 定理:网络分区时,一致性与可用性不可兼得}
$$

处理范式对比

范式 数据特性 延迟 典型框架
批处理 有界、静态 分钟~小时 Spark, Hadoop
流处理 无界、持续 毫秒~秒 Flink, Kafka Streams

延伸资源