跳到正文

第10章学习笔记:分布式数据库与 NoSQL 边界

课程笔记

从分片、复制、一致性和数据模型选择理解分布式代价,不用产品名替代理论。

关联:章节 第10章 分布式数据库与 NoSQL 边界

第10章笔记:分布式数据库与 NoSQL 边界

本章不是七个并列名词

从分片、复制、一致性和数据模型选择理解分布式代价,不用产品名替代理论。 学习顺序从《为什么分布:容量、地域与故障域》开始,到《关系型与 NoSQL 的组合边界》闭合。每一节都要留下下一节能直接使用的对象:模式、关系、查询结果、页、计划、事务状态、日志记录或部署证据。若你只能逐条背定义,却说不清前一节输出怎样成为后一节输入,这一章还没有真正连起来。

七节依赖与例题

1. 为什么分布:容量、地域与故障域

要解决的问题: 分布式化可突破单机容量、靠近用户并隔离故障,但引入网络不确定性、跨节点协调和运维复杂度。

跟着做: 全球用户资料可按 home_region 放置降低延迟,但跨区转账仍需明确主权威、超时和重试语义。

验收规则: 先证明单机瓶颈与目标,再承担分布式复杂度;节点更多不自动更可靠。

2. 分片键与数据倾斜

要解决的问题: 分片键决定请求路由、负载分布和跨片操作;高基数不等于均匀,时间或大客户都可能形成热点。

跟着做: 按 tenant_id 分片时超级租户压垮单片,可对大租户再分桶;按递增时间分片会把新写集中到末片。

验收规则: 负载份额 max_i(load_i)/avg(load) 是倾斜信号,设计需同时看读写与数据量。

3. 复制、一致性与 quorum

要解决的问题: 复制提高容错与读扩展;quorum 通过读写副本数交叠提高读到新值概率,但故障、时钟和冲突仍需协议定义。

跟着做: N=3、W=2、R=2 时 R+W>N,读写集合必有交点;这不自动解决并发写冲突的最终选择。

验收规则: 常见交叠条件 R+W>N;写冲突仍需版本、共识或应用合并策略。

4. CAP 的准确使用

要解决的问题: CAP 讨论网络分区发生时,一致性与可用性的取舍,不是平时任意三选二,也不代表系统只能永久固定一种模式。

跟着做: 支付余额在分区时可拒绝部分写以保持单一真值,社交点赞可接受暂时分歧后合并;必须按数据项说明。

验收规则: 先定义一致性语义与可用响应,再说明分区下行为,禁止只贴 CP/AP 标签。

5. 文档、键值、列族与图模型

要解决的问题: NoSQL 模型各自优化访问模式:文档聚合对象、键值按键取值、列族做宽表与顺序访问、图数据库做多跳关系。

跟着做: 商品详情常整体读取可嵌入文档,好友多跳推荐更适合图遍历;跨聚合强事务会削弱文档模型优势。

验收规则: 模型选择从查询、更新原子边界、关系密度和一致性要求推导。

6. 一致性模型与客户端会话

要解决的问题: 线性一致、顺序一致、因果一致和最终一致承诺不同;读己之写、单调读等会话保证直接影响用户体验。

跟着做: 用户改头像后刷新应至少读到自己的新头像,即使其他地区稍后收敛;可用粘性会话或版本令牌实现。

验收规则: 最终一致只承诺无新写时趋于同值,不承诺收敛时间、冲突规则或会话体验。

7. 关系型与 NoSQL 的组合边界

要解决的问题: 同一系统可按事实权威、搜索、缓存、分析拆分存储,但必须定义单一写入源、同步机制与重建路径。

跟着做: 订单以关系库为权威,搜索索引由变更日志异步构建;搜索结果可延迟,扣款状态不能由索引反写。

验收规则: 多存储设计必须写清 source of truth、传播延迟、幂等消费、补偿与全量重建。

章内共同推理方法

先写“一行或一个状态代表什么”,再写它必须满足的键、约束、顺序或故障假设。遇到 SQL,先定结果粒度和重复/NULL 语义,再编码;遇到存储与优化,先估算页数、基数和 I/O,再看真实执行计划;遇到事务与分布式,先画时间线和允许历史,再讨论隔离级别、日志或共识。任何公式都要带单位、数据分布和适用边界。

可复现练习

从本章七个例题中任选两个,用 SQLite 或课程给定模型从空环境重做。保存建表/输入、执行步骤、实际输出和断言;随后故意加入一个重复键、NULL、并发交错、崩溃点、倾斜分布或网络分区,记录第一个被破坏的不变量。只截成功界面、只贴 SQL 或只报告耗时不算完成。

闭卷验收

用十分钟画出本章七节箭头图;任选一条箭头解释传递的具体字段、状态或证据。再为《关系型与 NoSQL 的组合边界》写一个最小失败案例,并追溯它需要《为什么分布:容量、地域与故障域》中的哪条定义才能修复。最后列出三道题:一道唯一答案判断、一道多条件选择、一道必须计算或写 SQL/状态轨迹的问题,且每题都写清为什么其他答案错。