// ddia 笔记
DDIA 笔记与学习路径
这些笔记按《Designing Data-Intensive Applications》第一版的 12 章组织。先理解概念,再通过设计题解释取舍;笔记用于复习,不替代原书。
按目标选择阅读路径
第一次阅读可按下面的章节顺序;准备面试时,选择一条路径并把答案讲出来。
- 打牢基础:第 1 章:可靠、可扩展、可维护 → 第 2 章:数据模型 → 第 3 章:存储与检索。练习:同一个商品目录,用关系模型和文档模型各会牺牲什么?
- 设计正确的交易流程:第 7 章:事务 → 第 8 章:分布式系统的麻烦 → 第 9 章:一致性与共识。练习:支付超时为什么不等于失败?如何处理重复请求?
- 扩展与数据管道:第 5 章:复制 → 第 6 章:分区 → 第 11 章:流处理。练习:搜索索引落后于数据库时,哪些操作可以容忍,哪些必须重新校验?
把阅读应用到完整设计题
用酒店预订系统练习多晚库存事务和过期竞争,用电商系统练习跨服务结账与补偿。对每道题写出一个不变式、一种失败情形和一种恢复方法,再解释代价。
版本说明:本页章节编号对应第一版,不是第二版目录。原书信息见 DDIA 官方网站。
从章节笔记走向面试练习
收藏或打印 DDIA 面试对照表,为每章配一个具体问题;再用 系统设计 30 题路线练习完整回答。
01
DDIA · 第 1 章
可靠、可扩展与可维护
每个数据系统背后的三大关切——以及每个在实践中究竟意味着什么。
Apr 01, 2023
↗
02
DDIA · 第 2 章
数据模型与查询语言
关系 vs 文档 vs 图模型,以及驱动它们的查询语言。
Apr 02, 2023
↗
03
DDIA · 第 3 章
存储与检索
数据库如何存储与查找数据——hash 索引、LSM-tree、B-tree 与 OLAP。
Apr 02, 2023
↗
04
DDIA · 第 4 章
编码与演化
向后 vs 向前兼容、用 Protobuf/Thrift/Avro 做 schema 演化,以及三种数据流模式。
Apr 03, 2023
↗
05
DDIA · 第 5 章
复制 (Replication)
单主、多主与无主复制、复制延迟与 quorum。
Apr 04, 2023
↗
06
DDIA · 第 6 章
分区 (Partitioning)
按 key 范围 vs hash 分区、热点、二级索引、再平衡与路由。
Apr 05, 2023
↗
07
DDIA · 第 7 章
事务 (Transactions)
ACID、隔离级别、丢失更新与写偏斜,以及通往可串行化的路径。
Apr 06, 2023
↗
08
DDIA · 第 8 章
分布式系统的麻烦
不可靠的网络与时钟、进程暂停、fencing token 与拜占庭故障。
Apr 07, 2023
↗
09
DDIA · 第 9 章
一致性与共识
线性一致性、CAP、顺序与因果、两阶段提交与共识。
Apr 08, 2023
↗
10
DDIA · 第 1 章0
批处理 (Batch Processing)
Unix 哲学、MapReduce、join,以及 Spark、Flink 等数据流引擎。
Apr 09, 2023
↗
11
DDIA · 第 1 章1
流处理 (Stream Processing)
事件流、基于日志的 broker、CDC、event sourcing、窗口与流 join。
Apr 10, 2023
↗
12
DDIA · 第 1 章2
数据系统的未来
从日志派生数据、拆解数据库、端到端正确性与伦理。
Apr 11, 2023
↗