知识卡片

CAP理论与NoSQL的一致性权衡逻辑

结构图卡

内容

分布式系统有三个理想特性:一致性(每次读操作要么读到最新数据、要么 读取失败,绝不返回过期数据)、可用性(每次读操作都能返回数据,绝不 返回错误)、分区容忍性(节点或网络故障时系统依然能对外提供服务)—— CAP理论指出一个分布式系统最多同时满足这三者中的两个,不存在三者 兼得的方案。这个理论直接解释了关系数据库和NoSQL数据库在架构选择 上为什么走向不同方向:关系数据库面对的是银行、超市这类对一致性 要求极高的业务(不能接受读到过期余额),一致性C是业务底线不能 妥协,因此选择CA组合——用事务机制严格保证一致性和可用性,代价 是牺牲分区容忍性P(愿意在网络分区故障时降低服务效率甚至暂停服务, 而不是在数据不一致的情况下继续对外提供服务)。NoSQL面对的是社交 网络、传感器监测这类新型互联网应用,这些场景里节点故障、网络故障 是影响服务的主要因素,而少量数据的短暂不一致往往不会造成严重后果, 因此选择CP或AP组合——保住分区容忍性P(大规模分布式部署下网络 分区几乎不可避免),在C和A之间视具体场景取舍。这套选择逻辑说明: 选CA还是CP/AP不是技术优劣的问题,而是业务对”数据必须绝对准确”和 “服务必须持续可用”这两个诉求各自的容忍度不同,决定了架构必须往 哪个方向妥协。

结构图

flowchart TD
    A[CAP理论: 分布式系统最多满足三选二] --> B[C 一致性<br/>读到最新数据或读取失败]
    A --> C[A 可用性<br/>每次读都返回数据,不返回错误]
    A --> D[P 分区容忍性<br/>节点/网络故障时仍能服务]
    E[关系数据库<br/>银行/超市等强一致性业务] -->|选CA, 舍弃P| F[事务机制保证一致可用<br/>网络分区时可降级/暂停]
    G[NoSQL数据库<br/>社交/传感器等新型互联网应用] -->|选CP或AP, 保留P| H[大规模分布式下<br/>网络分区不可避免]

参考来源

- 位置:《数据库原理(微课版)》第13章《数据库前沿技术》13.3.1节"NoSQL 数据库的概念"(源文件:_epub-src/index_split_008.html) - 结论依据:原文明确"CAP理论的内容是指一个分布式系统只能满足CAP 特性中的两个……关系数据库处于CA交集,即满足一致性和可用性…… NoSQL数据库则处于CP、AP交集……关系数据库选择了CA特性是因为 其所面对的是像传统银行、大型超市等严谨的业务……C是业务的基本 要求……NoSQL数据库面向的新型互联网应用……节点故障、网络故障 是影响服务提供的主要因素,P和A是更重要的需求",因此可以推出 两类数据库CAP选择差异背后的业务动因。 - 原始内容:关系数据库处于CA交集,即满足一致性和可用性。而NoSQL 数据库则处于CP、AP交集……关系数据库选择了CA特性是因为其所面对 的是像传统银行、大型超市等严谨的业务,C是业务的基本要求。