Nosql 为什么CAP定理中的C和ACID中的C不一样?

Nosql 为什么CAP定理中的C和ACID中的C不一样?,nosql,Nosql,我的问题很简单,我在寻找一个更简单的答案,为什么CAP定理中的C和ACID中的C不一样 阅读HN线程 更新 幻灯片71显示:CAP中的C=A+C(原子一致性)这两个C都代表一致性,但CAP中的一致性概念意味着“所有节点在同一时间看到相同的数据”,而ACID中的一致性概念意味着“数据库执行的任何事务都会将其从一个一致状态转移到另一个一致状态”。(来自维基百科。)如果没有原子性,你很难获得有意义的一致性。这就是为什么CAP定理以它的方式定义了C 想象一下这个简单的场景: 有一个数据库有两个帐户。我们

我的问题很简单,我在寻找一个更简单的答案,为什么CAP定理中的C和ACID中的C不一样

阅读HN线程

更新


幻灯片71显示:CAP中的C=A+C(原子一致性)

这两个C都代表一致性,但CAP中的一致性概念意味着“所有节点在同一时间看到相同的数据”,而ACID中的一致性概念意味着“数据库执行的任何事务都会将其从一个一致状态转移到另一个一致状态”。(来自维基百科。)

如果没有原子性,你很难获得有意义的一致性。这就是为什么CAP定理以它的方式定义了C

想象一下这个简单的场景:

有一个数据库有两个帐户。我们的数据库里没有钱。只是两个账户上的钱。在数据库中,资金在一个帐户和另一个帐户之间移动

在没有原子性的情况下,当一个账户的钱被扣除,而另一个账户的钱还没有被写入时,用户可以读取数据。在这种情况下,这两个帐户的总数会因读取的不同而有所不同,这是不可能的,因为“新”资金没有离开或进入数据库


以任何其他方式谈论一致性就像认为Java布尔值“几乎”是真的,而世界其他地方认为它是假的。

顺便说一句,除了我上面的回答,当你在这里谈论其他类型的“一致性”如“最终一致性”时,大声说皇帝是裸体的。把向客户解释为什么报告读错了数量的尴尬留给那些希望“重命名”问题的开发人员。有时候,真相是简单而残酷的。引入了新类型的“一致性”,因为一致性不会水平扩展,不扩展也不流行。不幸的是(或幸运的是),自然、数学和物理学往往不尊重人类的时尚(问问伽利略的敌人)。