DDIA 读书笔记:数据密集型应用系统设计

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 第一版内容编写