CAP理论和BASE模型

来源:互联网 发布:mac python如何加载库 编辑:程序博客网 时间:2024/04/29 20:23

CAP (Eric Brewer)
Web服务无法同时满足以下3个属性
Consistency(一致性),数据一致更新,所有数据变动都是同步的
Availability(可用性),每个操作都必须以可预期的响应结束
Partition tolerance(分区容错性),即使出现单个组件无法可用,操作依然可以完成

在任何数据库设计中,一个Web应用至多只能同时支持上面的两个属性,不可能三者兼顾。对于分布式系统来说,分区容错是基本要求,所以必然要放弃一致性。对于大型网站来说, 分区容错和可用性的要求更高,所以一般都会选择适当放弃一致性。对应CAP理论,NoSQL追求的是AP,而传统数据库追求的是CA,这也可以解释为什么 传统数据库的扩展能力有限的原因。

ACID解决方案
ACID数据库事务极大地简化了应用开发人员的工作.正如其缩写标识所示,ACID事务提供以下几种保证:
Atomicity(原子性),事务中的所有操作,要么全部成功,要么全部不做.
Consistency(一致性)在事务开始与结束时,数据库处于一致状态.
Isolation(隔离性) 事务如同只有这一个操作在被数据库所执行一样.
Durability(持久性). 在事务结束时,此操作将不可逆转.(也就是只要事务提交,系统将保证数据不会丢失,即使出现系统Crash,译者补充).
数据库厂商在很久以前就认识到数据库分区的必要性,并引入了一种称为2PC(两阶段提交)的技术来提供跨越多个数据库实例的ACID保证

BASE解决方案
Basically Available(基本可用)
Soft-state( 软状态/柔性事务)
Eventual Consistency(最终一致性)
BASE模型是传统ACID模型的反面,不同与ACID,BASE强调牺牲高一致性,从而获得可用性,数据允许在一段时间内的不一致,只要保证最终一致就可以了。

0 0
原创粉丝点击