我的问题很简单,正在寻找一个更简单的答案,为什么 CAP 定理中的 C 与 ACID 中的 C 不同?
阅读此 HN 主题。
更新
NOSQL v1.0 漫游指南,幻灯片 71 说:CAP 中的 C = A+C(原子一致性)
两个 C 都代表一致性,但是 CAP 中的一致性概念意味着“所有节点同时看到相同的数据”,ACID 中的一致性概念意味着“数据库执行的任何事务都会从一个一致的状态开始”到另一个”。 (来自维基百科。)
如果没有原子性,你就很难获得有意义的一致性。这就是 CAP 定理以这种方式定义 C 的原因。
想象一下这个简单的场景:
有一个数据库有两个帐户。我们的数据库中没有资金。就两个账户上的钱。在数据库中,资金在一个帐户之间转移到另一个帐户。
如果没有原子性,当钱已经从一个账户中扣除而尚未写入另一个账户时,用户可以读取数据。在这种情况下,两个帐户的总计会因读取而异,这应该是不可能的,因为“新”资金不会离开或进入数据库。
以任何其他方式谈论一致性就像认为 Java 布尔值“几乎”为 true,而世界其他地方将其视为 false。