NoSQL分布式系统CAP和BASE理论

Posted IT每日笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoSQL分布式系统CAP和BASE理论相关的知识,希望对你有一定的参考价值。

  1. 传统关系数据库的ACID理论

  2. NoSQL系统是分布式系统,用户通过一些API接口访问他们,并不知道最终内部工作需要很多机器协同完成;

  3. CAP理论:

    Consistency:强一致性

    系统在执行某项操作后为一致性状态

    Availability:可用性

    每个操作总是在一定时间内返回结果,需要注意的是一定时间内和返回结果。

    Partition Tolerance:分区容错性

    可以理解为系统在存在网络分区下任然可以接收请求(满足一致性和可用性);

    CAP理论是数据共享系统只能满足三者中的两个


  4. 处理CAP问题:

    放弃P:避免分区容错性的问题的发生,一般把所有的数据放到同一主机               上,放弃P在这种情况不能接受,所有的NoSQL系统都假定P存在;

      放弃A:一旦遇到分区容错故障,受到影响的服务器需要等待数据一致,在                    等待的时间系统无法提供服务;

      放弃C:放弃强一致性,保留最终一致性,所以引入BASE理论;


  5.BASE理论

    基本可用(BA:Basically Available)

    软状态(S:Soft-state)

    最终一致性(Eventually consistency)



一致性or可用性,鱼和熊掌不可得兼


下面是一个牺牲一致性换取可用性的小例子。

假设N1N2是分布式环境下的两个节点,它们有保存了共同的数据V,它们的值都是V0AB是两个分别对数据进行操作的进程。我们看看这么一个过程:AN1节点写入了新的VV1B读取V的值。

 如果一切正常的话,这个过程看起来像是这样的:

 (1) A写入V的新值V1

(2) N1N2发送消息M以更新V值。

(3) B读取V的新值V2 

 但是现实可能是这样子的:

 

 由于网络分区,N1发向N2的消息很有可能没送达,那么,B节点将读取到一个过时的V值,不一致性产生了。并且当把节点的规模不断扩大的时候,不一致性问题也会更加严重。

所以如果我们希望A B都是高可用的(也就是低延迟),那么一致性通常就不能得到很好的保证,我们必须要容忍一定的不一致性以换取高可用性。

 

参考:

     《NoSQL数据库技术实践》

       http://www.cnblogs.com/CBDoctor/archive/2013/01/28/2879883.html


以上是关于NoSQL分布式系统CAP和BASE理论的主要内容,如果未能解决你的问题,请参考以下文章

CAP原则(CAP定理)BASE理论

分布式理论基础CAP和BASE理论

Redis分布式理论(基础篇系列二)

分布式系统的CAP和BASE理论

分布式系统的CAP和BASE理论

分布式基础理论之CAP 和BASE