7

尽管有 CAP 定理,但仍有NoSQL ACID(分布式)数据库。这怎么可能?CAP 定理和(可能/不可能)是 ACID 之间的关系是什么?

分布式计算机系统不可能同时提供一致性、可用性和分区容错性。

4

2 回答 2

11

CAP 定理实际上有点误导。您可以拥有 CA 设计的事实是无稽之谈,因为当分区发生时,您必然会遇到关于一致性(例如数据同步问题)或可用性(延迟)的问题。这就是为什么有一个更准确的定理说明:

在分布式系统中进行分区时,必须在一致性可用性之间进行选择。

在实践中仍然不是那么简单。您应该注意,一致性和可用性之间的选择不是二元的。你甚至可以两者兼得。例如,关于 ACID,您可以使用 NoSQL 进行原子和持久事务,但为了更好的可用性而放弃了一定程度的隔离和一致性。然后可用性可以被同化为延迟,因为您的响应时间将取决于几个因素(最近的服务器是否可用?)。

因此,要回答您的问题,这通常是营销废话。您需要真正从表面上看,以了解解决方案究竟获得和丧失了什么。

如果您想要更深入的解释,您可以查看此处此处此处

于 2013-05-27T19:43:30.480 回答
2

PACELC定理扩展了 CAP来讨论权衡,即使没有发生分区。分布式系统令人兴奋的见解之一是,当使用 RAFT 或 Paxos 等共识协议创建事务日志时,它们可以在不丢失一致性的情况下实现分区容错。Calvin 协议将 RAFT 日志与确定性事务应用程序相结合。

FaunaDB实现了 Calvin,允许它维护具有严格序列化能力的 ACID 事务,即使在分区期间或在副本故障期间,只要副本的法定人数没有分区。

于 2019-02-11T16:27:41.437 回答