ACID、BASE与CAP三者联系与区别

ACID原则

我们先介绍什么是ACID原则,ACID是关系数据库系统采纳的原则,也是一种简称,其代表含义如下。

原子性(Atomicity):是指一个事务要么全部执行, 要么完全不执行。也就是不允许一个事务只执行了一半就停止。

以银行转账为例,这是一个典型的事务.它的操作可以分成几个步骤.首先从A账户取出要转账的金额, A账户扣除相应的金额, 之后将其转入B账户的户头, B账户增加相同的金额。这个过程必须完整地执行,否则整个过程将被取消,回退到事务未执行前的状态,不允许出现从A账户巳经扣除金额,而没有打入B账户这种情形。

一致性(Consistency) :事务在开始和结束时, 应该始终满足一致性约束条件。比如系统要求A+B= 100,那么事务如果改变了A的数值, 则B的数值也要相应修改来满足这种一致性要求;这里需要注意的是,尽管CAP和ACID都有关于一致性的定义, 但是两者的含义是不同的。即两个C代
表了不同含义,这点要特别注意。

事务独立(Isolation):如果有多个事务同时执行, 彼此之间不需要知晓对方的存在.而且执行时互不影响,不允许出现两个事务交错、间隔执行部分任务的情形, 也即事务之间需要序列化执行。

持久性(Durability) :事务的持久性是指事务运行成功以后.对系统状态的更新是永久的,不会无缘由地回滚撤销。

BASE原则

数据库系统采纳ACID原则,获得高可靠性和强一致性。而大多数大数拟环埮下的云存储系统和NoSQL系统则采纳BASE原则,这种原则与AClD原则差异佷大。具体而言, BASE原则是指:

基本可用(Basically Available):在绝大多数时间内系统处于可用状态。允许偶尔的失败,所以称为基本可用。

软状态或者柔性状态(Soft State) : 是指数据状态不要求在任意时刻都完全保持同步,到目前为止软状态并无一个统一明晰的定义, 但是从概念上是可理解的, 即处于有状态(State) 和无状态(Stateless) 之间的中间状态。

最终一致性(Eventual Consistency): 与强一致性相比, 最终一致性是一种弱一致性, 尽管软状态不要求任意时刻数据保持一致同步, 但是最终一致性要求在给定时间窗口内数据会达到一致状态。

二者区别

BASE 原则与ACID 原则不同,前者是通过牺牲强一致性来获得高可用性。尽管现在大多数的NoSQL 系统采纳了BASE 原则,但是有一点值得注意:

NoSQL 系统与云存储系统的发展过程正在向逐步提供局部ACID 特性发展, 即从全局而言符合BASE 原则,但是从局部支持ACID 原则,这样就可以吸取两者各自的好处,在两者之间建立平衡, 从Google 的MegaStore 便可以看出这种发展趋势。

ACID、BASE与CAP的关系

ACID 和BASE 原则是在明确提出CAP理论(分布式中CAP理论详解)之前关于如何对待可用性和强一致性的两种完全不同的设计哲学。ACID 更强调数据一致性,这是传统数据库设计的思路。而BASE 更强调可用性, 弱化数据强一致性的概念, 这是互联网时代对于大规模分布式数据系统的一种需求,尤其是其中的软状态和最终一致性, 这两者是在容忍网络分区情形下强调可用性的具体手段。

由以上所述可知, CAP 与BASE 两者的一致性显而易见;但相比较而言, CAP 和ACID 的关系就稍显复杂了。这主要是出千两个原因, 首先因为CAP 和ACID 两者都包含了A 和C, 但是其具体含义和所指是不同的,所以易混淆。另外如果CAP 中选择A 的话, 在一定程度上是会影响ACID 中的部分要求和保证的。具体而言, CAP 和ACID 的明显差异包括如下。

a、首先两者中尽管都包含一致性,但是两者含义不同,ACID 中的C 指的是对操作的一致性约束, 而CAP 中的C 指的是数据的强一致性(多副本对外表现类似于单副本) , 所以可以将CAP 中的C 看作一致性约束的一种,即CAP 中的C 是ACID 中的C 所涵盖语义的子集。在出现网络分区情形下, 很明显ACID 中的C 所要求的一致性约束是无法保证的, 所以在网络分区解决后需要通过一定手段来恢复ACID 中要求的一致性。

b、当出现网络分区时, ACID 中的事务独立只能在多个分区中的某个分区执行,因为事务的序列化要求通信, 而当网络分区时明显无法做到这点,所以只能在某个分区执行。

c、当出现网络分区时,多个分区都可以各自进行ACID 中的数据持久化(D)操作,当网络分区解决后, 如果每个分区者都提供持久化记录, 则系统可以根据这些记录发现违反ACID 一致性约束的内容并予以修正。

总而言之,当CAP中的P出现时,如果每个网络分区都尽可能地执行ACID,那么对于网络分区解决后的数据一致性恢复是有很大帮助的。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值