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

问题描述 投票:0回答:3

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

阅读 HN 主题。

更新

NOSQL v1.0 漫游指南,幻灯片 71 说:CAP 中的 C = A+C(原子一致性)

nosql
3个回答
11
投票

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


2
投票

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

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

有一个数据库有两个帐户。我们的数据库中没有资金。就两个账户上的钱。在数据库中,资金在一个帐户之间转移到另一个帐户。

如果没有原子性,当钱已经从一个账户中扣除而尚未写入另一个账户时,用户可以读取数据。在这种情况下,两个帐户的总计会因读取而异,这应该是不可能的,因为“新”资金不会离开或进入数据库。

以任何其他方式谈论一致性就像认为 Java 布尔值“几乎”为 true,而世界其他地方将其视为 false。


0
投票
  • ACID 属性中的一致性 (C) 是在事务的上下文中 在数据库系统中。
    • 一致性确保数据库在之前保持有效状态 以及执行交易后。它阻止数据库 避免进入无效状态。
  • CAP 定理中的一致性 (C) 强调了权衡 分布式系统。
    • 一致性意味着所有客户端无论连接到哪个节点都同时看到相同的数据。这确保所有节点都具有相同的数据副本。
© www.soinside.com 2019 - 2024. All rights reserved.