CAP定理与BASE(NoSQL)


12

CAP定理与BASE(NoSQL)

嗨,我正在尝试写一篇有关NoSQL的论文,并将CAP定理描述为(如果不是全部的话)大多数NoSQL数据库都遵守。稍后,我阅读了一篇有关NoSQL与RDBMS之间差异的论文,该论文指出NoSQL数据库使用ACID对应的BASE。

我知道BASE,ACID和CAP的属性,但是我很难确定CAP定理和BASE之间有什么关系。据我了解,CAP定理导致BASE的首字母缩写,但这是正确的结论吗?还是用两种不同的方法“构建”一个共享相似属性的数据库?

在此博客文章(http://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/)中,作者写道:

与苛刻的ACID世界相比,在容错的BASE世界中开发软件更加困难,但是Brewer的CAP定理指出,如果要扩展,则别无选择。但是,正如Brewer在本演示文稿中指出的那样,ACID和BASE之间存在连续性。您可以根据自己的优先级来决定与连续体一端或另一端相距多远。

作者在另一篇文章中写道:

最重要的是,许多NOSQL数据库已经放宽了对一致性的要求,以实现更好的可用性和分区。这导致系统被称为BASE(基本可用,软状态,最终一致)。这些没有经典意义上的事务,并且在数据模型上引入了约束,以实现更好的分区方案(例如Dynamo系统等)。简介中提供了有关CAP,ACID和BASE的更全面的讨论。

这清楚地表明CAP会导致 BASE。

我希望有人可以向我澄清这一点,消除我的困惑。

谢谢
-Mestika

Answers:


15

CAP基本上是一个连续体,BASE和ACID沿着相对的两端。

CAP图

CAP是一致性,可用性和分区容限。基本上,您可以选择其中的2个,但不能全部选择3个。

ACID专注于一致性和可用性。

BASE专注于分区容忍度和可用性,并在窗口之外保持一致性。


1
一个好的ACID数据库应该关注一致性和分区容忍度,因为每当发生分区时,将分区容忍度丢掉(用你的话来说)会破坏一致性。
彼得,2013年

ACID并没有专注于可用性。“ A”代表原子性,涵盖诸如中止-回滚-重新启动之类的内容。
momo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.