Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
这是一份关于《数据密集型应用系统设计》(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章 |
数据系统未来:数据集成、端到端正确性、伦理 |
学习路线
入门路线(适合初学者)
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、数据仓库 |
分布式系统核心权衡
处理范式对比
| 范式 |
数据特性 |
延迟 |
典型框架 |
| 批处理 |
有界、静态 |
分钟~小时 |
Spark, Hadoop |
| 流处理 |
无界、持续 |
毫秒~秒 |
Flink, Kafka Streams |
延伸资源
本读书笔记整理于 2025年,基于 DDIA 第一版内容编写