您的位置:首页 > 其它

CAP与ACID与BASE理论综述

2016-07-25 15:54 274 查看
CAP理论是基于分布式存储系统的一种理论,CAP具体指的是:Consistency为一致性,Availability为可用性,partition tolerance是分区容错性。CAP指的是任何一个分布式存储系统很难同时满足这三个属性,最多只能满足其中两个。关系数据库因为最开始是在单机的环境,因此不用太在意分区容忍,又有严格的ACID事务管理机制,因此在一定的阶段内能比较好的支撑整个数据库系统的正常工作。

CAP定义



(1)C: Consistency 一致性

一致性的要求就是对数据库的修改具有原子性,要么整个操作都完成,要么整个操作都不会执行,不会出现部分的操作完成了,又出现了部分的操作提交失败的情况,这样造成了数据的不一致性。传统的关系数据库为了保证一致性有着严格的事务管理,还有ACID标准保证了数据的一致性。

随着web服务对性能的要求逐渐提高,我们传统的单击存储服务逐渐朝着分布式存储发展,不同的节点的数据在理想状态下,应该是数据保持一致,但是由于通信的原因会导致一个节点的数据更新之后,在读取另一个节点的时候并不会立刻看到最新的数据,因此这就造成了数据的不一致性,为了避免这种情况,传统的关系数据ACID事务管理严格的机制会保证数据的准确和一致性,但是代价是性能受到了一定的影响,因为最开始关系数据库就是按照单点数据源去存储管理的。在一些比较特俗的领域,例如金融或者是对事务要求很严格的系统里,我们会采用比较成熟的关系数据库,严格保持数据的一致性,而不会去采用NoSQL这样只保证最终一致性的数据库,因为对于数据的变化是非常的敏感的。



(2)A: Availability 可用性

关于数据的可用性,就是在现在的互联网服务下,我们大都提供7 X 24小时的web服务,对于很多服务我们主要的关注点在保持持续可靠稳定的服务,这个对整个数据管理的可用性提出了新的要求,例如在数据库集群的环境下,我们可能要修改某个关系数据库的存储结构这可能会导致停机或者是系统性能降低,这就很难保证数据管理的可用性,虽然现在在各个厂商的支持下,传统的关系数据库集群也可以在多个节点之间无缝地切换数据源,用户几乎感受不到,但是大都是在采用了大量的备份冗余的环境下。因此现在传统的关系数据的解决方案更多的是一种热备份的方式来解决系统可用性的问题。

(3)P:Partition Tolerance分区容错性

分区容错性指的是在分布式的环境下,整个集群的可靠性,如果集群当中的某个节点宕机或者是出现了数据的不一致性,最后是整个集群对外的服务的可靠性与性能问题。是否这个数据源还能够正常的工作。

CAP理论的意义

CAP理论从一致性、可用性、分区容忍三个方面去阐述了数据管理的三个重要的三个方面,为数据库设计提出了理论基础,让设计人员有的放矢地设计相关数据库产品。可以将精力更多地放在如何保证三者的平衡上,而不用考虑同时满足这三个状态。CAP理论给数据库的发展作出了一个参考。对于主流的NoSQL产品,在CAP之间各有取舍。

ACID理论

数据库管理系统只能同时保证CAP中的两点不能同时保证三个状态,传统的关系数据库通过遵守严格的ACID来完成。关系数据库是一种基于高可用和高度一致性的管理数据库系统,它分区容忍程度较低。Automatic原子性代表了操作的粒度下要么都完成,要么一个都不完成。

Consistency一致性代表了事务的开始和结束都能够保证数据的一致性。Isolation代表着事务与事务之间是相互隔离的不会有影响。Durability持久性,就是事务一旦完成就不会返回。关系数据库大都遵守ACID准则。

BASE

BASE理论就是按照功能设计数据库,只要遵守最终的一致性即可,对于想要提升性能的分布式数据库系统,就必须要用一定的一致性和容错性来换取。NoSQL大都是牺牲了一致性而完成了性能的提升,使得高并发或者是高性能数据库可用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: