知识卡片

ACID与CAP的A和C:同名不同义的"关公战秦琼"式对比

普通读书笔记卡

内容

ACID是数据库管理系统为保证事务正确性提出的理论,包含四个约束:原子性(Atomicity,事务内所有操作要么全部完成要么全部不完成,出错就回滚到事务开始前的状态)、一致性(Consistency,事务开始前和结束后数据库的完整性不被破坏)、隔离性(Isolation,多个并发事务同时读写修改数据时互不干扰,按读未提交/读提交/可重复读/串行化等不同隔离级别控制并发事务交叉执行导致的数据不一致)、持久性(Durability,事务处理结束后对数据的修改是永久的,即便系统故障也不会丢失)。ACID和CAP虽然共用了A、C这两个字母,含义却完全不是一回事:ACID里的A(Atomicity,原子性)和CAP里的A(Availability,可用性)没有任何关联;ACID里的C(Consistency)虽然中文都翻译成”一致性”,指的却是数据库自身的数据完整性(单个数据库内部事务前后状态的完整),而CAP里的C指的是分布式多个节点之间数据是否一致,两者含义完全不同。再结合应用场景来看,ACID讨论的是单个数据库内部的事务处理,CAP讨论的是分布式系统里跨节点的数据读写,两者关注的问题层面本来就不是同一个维度,把ACID和CAP直接拿来类比对照,就像”关公战秦琼”——两人虽然都是武将,但压根不是同一个时代的人,硬放在一起比较意义不大。

参考来源

- 位置:《从零开始学架构》第23讲《想成为架构师,你必须掌握的CAP细节》"ACID"(源文件:_epub-src/OEBPS/text00002.html) - 结论依据:原文逐一解释Atomicity、Consistency、Isolation、Durability四项约束后指出"ACID 中的 A(Atomicity)和 CAP 中的 A(Availability)意义完全不同,而 ACID 中的 C 和 CAP 中的 C 名称虽然都是一致性,但含义也完全不一样……CAP 和 ACID 的对比就类似关公战秦琼,虽然关公和秦琼都是武将,但其实没有太多可比性",直接支撑本卡片结论。 - 原始内容:ACID 中的 A(Atomicity)和 CAP 中的 A(Availability)意义完全不同,而 ACID 中的 C 和 CAP 中的 C 名称虽然都是一致性,但含义也完全不一样。ACID 中的 C 是指数据库的数据完整性,而 CAP 中的 C 是指分布式节点中的数据一致性……其实 CAP 和 ACID 的对比就类似关公战秦琼。