从ACID到CAP及BASE

从ACID到CAP及BASE

ACID

说到事务,肯定想到事务的ACID特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

1.原子性:全部成功或者全部失败。

2.一致性:不好描述,取个例子:银行转账,TOM给JIM转1000元,TOM的账户减少1000,同时JIM的账户要增加1000。不允许出现只减少或者只增加的情况。

3.隔离性:事务之间不能项目干扰。包含四种隔离级别,即read_uncommitted、read_committed、repeatable_read、serializable。

3.1 read_uncommitted:该隔离级别会发生脏读。举个例子,事务A更新字段的值从1到10,事务B在此过程中可以读到该字段的值1,2,3,4,5…10。

3.2 read_committed:该隔离级别不可重复读。举个例子,事务A更新字段的值从1到10,事务B在此过程中只能读到事务A提交后的值10。若此时有另外一个事务执行更新字段从10到20,那么事务B再次读取会读到20。

3.3 repeatable_read:该隔离级别会发生幻读。举个例子,事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

3.4serializable:最严格的事务隔离级别。要求所有事务都串行执行,不能并发。

4.持久性:事务一旦提交,事务的数据就会永久保存下来。

 

提供一个隔离级别对比表格:


隔离级别


脏读


可重复读


幻读


Read_uncommitted


存在


不可以


存在


Read_committed


不存在


不可以


存在


Repeatable_read


不存在


可以


存在


Serializable


不存在


可以


不存在

CAP

提到分布式事务,应该就会想到CAP。一个分布式系统是不可以同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)

1.一致性:分布式系统中多个副本数据保持相同。

2.可用性:系统提供的服务处于可用状态,能够在有限的时间后返回结果。

3.分区容错性:分布式系统在遇到任何网络分区故障的时候,必须能够保证对外提供给满足一致性和可用性的服务,除非整个网络出现问题。

以上三点,对于一个分布式系统不可能同时满足,但是分区容错性是最基本的。


放弃CAP定理


描述


放弃P


如果希望避免系统出现分区容错性问题,一种较为简单的做法是将所有数据放在一个分布式节点上。这样至少不会碰到由于网络分区带来的负面影响,如果放弃P,就意味着放弃系统可扩展性。


放弃A


如果遇到网络分区故障或者其他故障,那么受影响的服务需要等待一定的时间,在等待期间服务无法对外提供服务。


放弃C


放弃一致性是放弃数据的强一致性,保留数据的最终一致性。

BASE

base是Basically Available(基本可用)、soft state(软状态)、Eventually consistent(最终一致性)的缩写。

基本可用:分布式系统出现不可预知的故障时,允许损失部分可用性。例如响应时间上的损失、功能上的损失。

软状态:允许系统的在不同的节点的数据副本之间进行数据同步时存在延迟。

最终一致性:本质是保证数据最终能达到一致。包括因果一致性、读已之所写、回话一致性、单调读一致性、单调写一致性。

原文地址:https://www.cnblogs.com/share2perfect/p/9529273.html

时间: 2024-11-05 15:17:42

从ACID到CAP及BASE的相关文章

ACID、Data Replication、CAP与BASE

ACID.Data Replication.CAP与BASE http://www.cnblogs.com/hustcat/archive/2010/09/07/1820970.html ACID 在传数据库系统中,事务具有ACID 4个属性(Jim Gray在<事务处理:概念与技术>中对事务进行了详尽的讨论). (1)原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行. (2)一致性(Consistent):在事务开始和完成时,数据都必须保持一

分布式CAP与BASE理论

参考: CAP和BASE理论 https://juejin.im/post/5d720e86f265da03cc08de74 https://github.com/changmingxie/tcc-transaction <从Paxos到Zookeeper> 1. CAP理论 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP.之后,CAP理论正式成为分

CAP和BASE理论

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt370 1. CAP理论 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP.之后,CAP理论正式成为分布式计算领域的公认定理. CAP理论为:一个分布式系统最多只能同时满足一致性(Consistency).可用性(Availabili

NoSql的三大基石:CAP理论&amp;BASE&amp;最终一致性

关系型数据库的局限 NoSql出现在关系型数据库之后,主要是为了解决关系型数据库的短板,我们先来看看随着软件行业的发展,关系型数据库面临了哪些挑战: 1.高并发 一个最典型的就是电商网站,例如双11,几亿大军的点击造成在某一时刻的并发量是很高的,传统的关系型数据库肯定已经是不堪重负了,如Oracle的Session数量推荐的才只有500. 2.高效率存储海量数据 大数据时代,数据量已经不是用GB.TB来衡量了,而是EB.ZB了,面对这海量的数据,如何高效率的存储这些数据,关系型数据库无法解决这个

分布式理论之CAP和BASE

分布式理论 一.分布式基本概述 分布式系统是一个内涵极度丰富的领域,单就应用层次而言就设计分布式缓存,分布式存储,分布式文件系统,分布式锁,分布式事务,分布式调度任务,分布式调度计算,分布式消息,分布式采集等. 二.CAP理论 在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence).可用性(Availability). 分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲. 可以注意上述描述中着重强调了两

NOSQL数据库事务的CAP、BASE原理--redis(2)

传统数据库中的特性为: 4个,ACID:A (Atomicity) 原子性 C (Consistency) 一致性 I (Isolation) 独立性 D (druability) 持久性 NOSQL的CAP特性: C (Consistency) 强一致性:事物提交时数据不能发生变化 A (Availability) 可用性 P (Partition) 分区容错性 CAP理论就是说:很难同时满足CAP三条特性,正常只能较好的满足其中的两条. 在Oracle数据库中:满足CA两条特性. 在网站架构

10分钟了解分布式CAP、BASE理论

CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理. CAP定律说的是在一个分布式计算机系统中,一致性,可用性和分区容错性这三种保证无法同时得到满足,最多满足两个. CAP:C :Consistency(一致性)A:(Availability)可用性P:(Partition Tolerance)分区容错性 让我们构造一个非常简单的分布式系统. 两台服务

数据库的ACID和CAP

传统数据库的ACID分别是:         A(Atomicty)原子性         B(Consistency)一致性         I(Isolation)独立性         D(Durability)持久性 (分布式下的数据库)CAP是指:  (3进2原则,只能在三个条件里,选择两个满足)     C:Consistency(强一致性), A:Avaliabilty(可用性), P(partiton toleerance)分区容错 3进2原则(RDBMS--传统的数据库如,my

事务隔离级别,分布式数据库,ACID,CAP

spring事务 数据库事务的四种特性 1:原子性:事务包含的所有操作要么全部成功,要么全部失败回滚;成功必须要完全应用到数据库,失败则不能对数据库产生影响:?2:一致性:事务执行前和执行后必须处于一致性状态,例:用户A和用户B的前加起来一共是5000; 无论AB用户之间是如何相互转换的,事务结束后两个用户的钱加起来还是5000,这就是事务的一致性.?3:隔离性:当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不被其他事务的操作所干扰,多个并发事务之间要相互隔离:?4:持久性:一个事务