知识卡片
ACID与CAP的C
内容
ACID 的一致性是事务前后满足业务约束,CAP 的一致性是多副本对外像单副本。混淆这两个 C 会导致错误设计:网络分区后,业务约束常要依靠日志、补偿和恢复流程重新建立。
参考来源
- 位置:《大数据日知录:架构与算法》第2章《数据复制与一致性》"2.1.3 ACID原则"及"2.1.5 CAP/ACID/BASE三者的关系"一节(源文件:_epub-src/OEBPS/text00007.html)
- 结论依据:原文明确"事务在开始和结束时,应该始终满足一致性约束条件……尽管CAP和ACID都有关于一致性的定义,但是两者的含义是不同的,即两个C代表了不同含义,这点要特别注意",并指出两者关系"稍显复杂","如果CAP中选择A的话,在一定程度上是会影响ACID中的部分要求和保证的"。
- 原始内容:(Consistency):事务在开始和结束时,应该始终满足一致性约束条件。比如系统要求A+B=100,那么事务如果改变了A的数值,则B的数值也要相应修改来满足这种一致性要求;这里需要注意的是,尽管CAP和ACID都有关于一致性的定义,但是两者的含义是不同的,即两个C代表了不同含义,这点要特别注意。