NoSQL分布式系统CAP和BASE理论
Posted IT每日笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NoSQL分布式系统CAP和BASE理论相关的知识,希望对你有一定的参考价值。
传统关系数据库的ACID理论
NoSQL系统是分布式系统,用户通过一些API接口访问他们,并不知道最终内部工作需要很多机器协同完成;
CAP理论:
Consistency:强一致性
系统在执行某项操作后为一致性状态
Availability:可用性
每个操作总是在一定时间内返回结果,需要注意的是一定时间内和返回结果。
Partition Tolerance:分区容错性
可以理解为系统在存在网络分区下任然可以接收请求(满足一致性和可用性);
CAP理论是数据共享系统只能满足三者中的两个;
处理CAP问题:
放弃P:避免分区容错性的问题的发生,一般把所有的数据放到同一主机 上,放弃P在这种情况不能接受,所有的NoSQL系统都假定P存在;
放弃A:一旦遇到分区容错故障,受到影响的服务器需要等待数据一致,在 等待的时间系统无法提供服务;
放弃C:放弃强一致性,保留最终一致性,所以引入BASE理论;
5.BASE理论
基本可用(BA:Basically Available)
软状态(S:Soft-state)
最终一致性(Eventually consistency)
一致性or可用性,鱼和熊掌不可得兼
下面是一个牺牲一致性换取可用性的小例子。
假设N1和N2是分布式环境下的两个节点,它们有保存了共同的数据V,它们的值都是V0,A和B是两个分别对数据进行操作的进程。我们看看这么一个过程:A向N1节点写入了新的V值V1,B读取V的值。
如果一切正常的话,这个过程看起来像是这样的:
(1) A写入V的新值V1。
(2) N1向N2发送消息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理论的主要内容,如果未能解决你的问题,请参考以下文章