DDIA 全书知识图谱 · 详版

Designing Data-Intensive Applications, 2nd Edition · 14 章 · 112 个概念节点 · 三大部分 + 跨章论证链 · 2026-09-26

第一部分 · 数据系统基础(Ch.1–5) 第二部分 · 分布式数据(Ch.6–10) 第三部分 · 派生数据(Ch.11–13)+ 伦理(Ch.14) 编码兼容性支撑滚动升级 协调器单点 → 容错共识 token = 日志序号 w+r>n ≠ 线性一致 逻辑日志 = CDC 事件溯源 = 日志派生 列存为扫描而生 时间线 = 物化视图 主线:派生一切 append-only × 删除权 时钟 → 事件时间 有界→无界 全序 共识 → 日志约束 Ch.1 架构权衡 Trade-offs Ch.2 非功能需求 Nonfunctional Ch.3 数据模型 Data Models Ch.4 存储与检索 Storage Ch.5 编码与演化 Encoding Ch.6 复制 Replication Ch.7 分片 Sharding Ch.8 事务 Transactions Ch.9 分布式之痛 Trouble Ch.10 一致性与共识 Consensus Ch.11 批处理 Batch Processing Ch.12 流处理 Stream Processing Ch.13 流派哲学 Philosophy Ch.14 做正确的事 Ethics OLTP 在线事务 点查 · 最新状态 GB–TB · 低延迟 OLAP 在线分析 聚合扫描 · 事件历史 TB–PB · 高吞吐 Data Warehouse 集中分析 · star/snowflake BI · 决策支持 Data Lake 原始文件 · 格式自由 Parquet/Avro · 对象存储 System of Record 权威数据 · 事实存一份 source of truth Derived Data 派生 缓存·索引·物化视图 可重建 · 读加速 云 ⇄ 自托管 弹性·免运维 ⇄ 控制 vendor lock-in 分布式 ⇄ 单节点 容错·伸缩 ⇄ 简单便宜 微服务 · serverless 性能度量 响应=服务+排队+网络 近容量→排队延迟暴涨 百分位 Percentiles p50 典型 · p99 尾部 SLO/SLA · 直方图相加 尾延迟放大 并行调用 = 等最慢者 后端越多越慢 fault ≠ failure SPOF · 容错有限度 混沌工程验证 三类故障源 硬件 2–5%/年 · 闰秒 配置变更是宕机首因 可扩展性 负载参数 · 数量级重审 shared-nothing 横向扩展 可维护性 可运维·简单·可演化 抽象 · 最小化不可逆 案例:时间线 fan-out 5,800 帖/s(峰 15 万) 轮询 200万qps → 写扩散 关系模型 SQL · schema-on-write 规范化 · 星型/雪花 文档模型 JSON schema-on-read 局部性 · 一对多树 属性图 Property Graph 顶点/边 · 变长遍历 易演化 · many-to-many 声明式查询语言 SQL·Cypher·SPARQL Datalog · ISO GQL GraphQL 澄清 可建于任何数据库 受限查询防 DoS 事件溯源 + CQRS append-only 日志 = SoR 投影 = 物化视图 可重算 DataFrame / 矩阵 稀疏矩阵 · one-hot ML 桥梁 分层抽象 对象→模型→字节→电 每层隐藏下层复杂性 Hash 索引段 追加日志 · byte offset 读 O(n) → 分段 SSTable 按键排序 · 稀疏索引 块压缩 · 段不可变 LSM-Tree memtable · compaction Bloom · tombstone B-Tree 页 · 分支因子数百 WAL · 原地覆写 · range LSM ⇄ B-Tree 写吞吐 ⇄ 读延迟稳 空间 · 快照友好 索引进阶 clustered · covering concatenated · 多维/R树 列存 + 压缩 bitmap+RLE · SIMD 向量化 · cube · 物化视图 全文与向量 倒排 · trigram kNN · IVF · HNSW 兼容性方向 backward = 新读旧 forward = 旧读新 JSON 的坑 >2^53 精度失真 Base64 +33% · 无 schema Protobuf / Thrift 字段 tag · varint 保留未知字段 Avro writer + reader schema 默认值 · alias · registry 数据库 = 发消息给未来 data outlives code 重写 vs 补默认值 REST / RPC 请求 backward 响应 forward · 幂等重试 Durable Execution Temporal 日志重放 跨服务工作流 exactly-once Message Broker 缓冲 · 重投 · fan-out queue / topic(→Ch.12) 单主复制 leader→log→follower WAL / 逻辑日志 failover 三风险 丢写 · 脑裂 · 超时 GitHub 主键回绕事故 复制延迟三异常 read-your-writes monotonic · prefix 多主复制 多DC · 离线优先 协作编辑 · 拓扑回环 写冲突处理 LWW 随机丢 · siblings CRDT / OT 收敛 无主 Dynamo 风格 quorum w+r>n read repair · hinted handoff version vector happens-before 并发 = 互不知晓 sloppy quorum 可用 ≠ 可读 降级代收 · hinted handoff range vs hash 预分裂 pre-splitting 热点加盐 · skew 二级索引分片 document 本地索引 term 全局 · scatter/gather 再平衡策略 固定分区 · 动态分裂 按节点比例 一致性哈希 虚拟节点 · 迁移 ~1/N rendezvous / jump 请求路由 转发 · 路由层 · 感知客户端 ZooKeeper/etcd · gossip 多租户分片 隔离 · 按租户备份 合规 · cell-based 跨分片事务之难 慢且可能成瓶颈 → 2PC(Ch.8) 元数据 vs 服务发现 元数据需强一致 发现只需 HA + 低延迟 ACID 本义 A = abortability C=应用不变量 · D=WAL read committed 防脏读 / 脏写 行锁 + MVCC 旧值 快照隔离 SI MVCC 可见性四规则 repeatable read 混名 丢失更新 原子写 · FOR UPDATE CAS · 冲突检测 write skew 医生值班 · SI 防不了 phantom · 物化冲突 串行执行 单线程 · stored procedure 内存数据 VoltDB/Redis 两阶段锁 2PL 共享/排他 · 死锁 谓词 → index-range 锁 SSI 乐观串行化 检测过时前提 PG · CockroachDB 分布式 2PC prepare → commit in-doubt 持锁 · XA XA 事务的坑 协调器 = 应用进程 崩溃 → 孤儿事务持锁 partial failure 非确定 · 定义性特征 容错 → rolling upgrade 不可靠网络 六种失败不可区分 timeout · TCP ≠ 应用确认 不可靠时钟 wall vs monotonic LWW 丢写 · TrueTime 区间 process pause GC · VM 挂起 · lease 过期 暂停期间世界继续运转 quorum 真相 节点不能自证存活 多数派决策 · 服从退位 fencing token 单调递增令牌 拒绝 zombie 迟到写 系统模型 部分同步 + crash-recovery safety vs liveness Byzantine 容错 >2/3 节点 · 昂贵 区块链 · 弱谎言防线 线性一致性 recency 保证 ≠ 可串行化 · 单对象 何时需要 锁 · 硬唯一约束 跨通道时序竞争 CAP 辨析 分区时 C/A 二选一 PACELC · 延迟也是代价 因果与并发 happens-before 并发 = 互不知晓 Lamport 时间戳 (counter, nodeID) 全序 ≠ 揭示并发 全序广播 / 共享日志 可靠 + 全序投递 ≡ 共识 · fencing 来源 共识 Paxos/Raft epoch 选举 · 多数派 2PC ≠ 共识 · FLP ZooKeeper / etcd 线性一致 CAS · lease watch · 分区分配/选主 Unix 管道哲学 小工具组合 · stdin/out 排序优于内存聚合 MapReduce map→shuffle→reduce shuffle = 分布式排序 容错 = 任务重试 任务独立 · 无共享状态 skip bad records sort-merge join 按 key shuffle 聚合 reducer 持单 user 全记录 物化中间态的代价 DFS 写放大 无 pipelining Spark / 数据流引擎 血缘重算 · 算子合并 惰性执行 · 少物化 产出 = 派生数据 索引/特征回灌线上 Kafka 缓冲 · bulk import DAG 工作流编排 Airflow / Dagster 中间结果写 DFS 解耦 两类 broker ack 删除 vs 追加日志 offset · 重放 · fan-out Change Data Capture WAL→变更流 · Debezium snapshot · log compaction dual-write 竞态 并发交错→永久不一致 CDC 是解法 event time ≠ processing time 补 backlog = 伪尖峰 watermark 宣告“不再等更早” 迟到:丢弃 / correction 窗口类型 tumbling · hopping sliding · session 流 join stream-stream 窗口 stream-table · table-table 流容错 checkpoint(Flink) 幂等 · effectively-once derive everything 日志决定全序 meta-database of everything lambda → kappa 重放日志重派生 dual gauge 灰度迁移 数据库解绑 索引/视图 = 日志派生 CREATE INDEX ≈ bootstrap 应用代码 = 派生函数 读写路径边界移动 turning db inside-out 端到端 exactly-once request ID 去重 end-to-end argument 日志强制约束 hash 分片 · 单线程 唯一性 = 共识 · 无需协调 integrity > timeliness 永久 vs 暂时违反 Sagas · trust but verify Reads are events too 读 = 瞬态 join 订阅 = 持久 join 预测分析偏见 外推过去 = 放大歧视 proxy 变量绕开监管 反馈循环 信用螺旋 · echo chamber systems thinking 责任与可解释 不可外包给算法 algorithmic prison 隐私与监控 meaningful consent 不可能 surveillance capitalism 数据最小化 data = toxic asset k-匿名 · 用后即删 工程师的责任 不用户当 metric 自律 + 支持监管 数据密集型应用 · Designing Data-Intensive Applications 三大目标:可靠 Reliability · 可扩展 Scalability · 可维护 Maintainability | 构建块:数据库 · 缓存 · 搜索索引 · 流处理 · 批处理 贯穿主线:System of Record → 派生数据 → 物化 —— 一切读优化视图皆可从不可变日志重放重建 ▼ 把数据放到多台机器:复制 × 分片 × 事务 × 故障 × 共识 ▼ ▼ 从数据库内部走向数据流哲学:派生一切 ▼ Part I · 基础概念 Part II · 分布式数据 Part III · 派生数据 存储与数据模型 风险与伦理 通用概念 全书框架 章内衔接 跨章关系(贯穿主线 / 伏笔) 112 个概念节点 · 25 条关系边 · 基于《DDIA 2nd Edition》全书 14 章整理

Part I · 数据系统基础(Ch.1–5)

  • • 权衡:OLTP⇄OLAP(Table 1-1)、SoR→派生、云⇄自托管、单机⇄分布式
  • • 度量:百分位/尾延迟放大、fault≠failure、负载参数、抽象治复杂度
  • • 模型:关系⇄文档、属性图+Cypher、事件溯源+CQRS、DataFrame/矩阵
  • • 存储:hash段→SSTable→LSM⇄B-Tree、列存+bitmap、倒排/向量索引
  • • 编码:Protobuf tag/Avro 双 schema、forward/backward 兼容、RPC/broker

Part II · 分布式数据(Ch.6–10)

  • • 复制:单主(延迟三异常/failover)、多主(CRDT)、无主(quorum/siblings)
  • • 分片:range/hash、本地 vs 全局索引、一致性哈希、ZooKeeper 路由
  • • 事务:隔离级别×异常矩阵;串行/2PL/SSI;2PC 的 in-doubt 与 XA 之坑
  • • 故障:六种失败不可区分、时钟是置信区间、process pause、fencing token
  • • 共识:线性一致、CAP 辨析、Lamport/全序广播、epoch 选举与协调服务

Part III · 派生数据(Ch.11–13)+ 伦理(Ch.14)

  • • 批处理:Unix 管道、shuffle=分布式排序、sort-merge join、Spark 血缘
  • • 流处理:日志 broker 可重放、CDC 杜绝双写竞态、watermark、checkpoint
  • • 哲学:kappa、数据库解绑、端到端 exactly-once、integrity>timeliness
  • • 伦理:偏见反馈循环、consent 不可能、data = toxic asset、数据最小化
  • • 终局:状态=事件流的积分;写路径派生一切,读路径只是缓存其结果

如何读这张图

  • • 横向:每章 6–10 个概念节点 = 该章的论证骨架(自上而下递进)
  • • 纵向:三条虚线分区 = 全书三部分,承接标签指出各部分使命
  • • 彩色虚线:跨章论证链(如 2PC→共识、事件溯源→CDC、SoR→派生一切)
  • • 玫红节点:书中的"危险/代价"警示(write skew、dual-write、偏见…)
  • • 配套精读与 19 个可运行代码实例见 DDIA-全书知识总结.md