ACID的C和CAP的C是不一样的。
数据库教科书里提炼的,ACID的C指的是从业务层面定义约束,例如银行转账场景,转入和转出金额要平衡,又或者外键指向的行必须存在,这个C一方面依赖数据库的保证,例如原子性,也依赖于业务特性和业务层代码实现。
CAP的C是现代分布式系统中大家经常谈到的一致性,其内涵和外延比较丰富。例如,ACID中的I,在分布式系统中如何保证并发Query的隔离级别Isolation,可以认为是一种一致性;多副本间达到一致状态机如Paxos和Raft,也是一种一致性。
作者:鸣嵩