数据库ACID 1、ACID是RDBMS的理论基石; A原子(Atomiclty )事务原子性; C一致(Consistency)插入一张表数据,会影响其它(索引/其它表)等一致。 I 隔离性(ioslation)事务独立,封闭;隔离性强度; D持久性(Durabilty)数据永存。 对应分布式数据库,
数据库ACID
1、ACID是RDBMS的理论基石;
A原子(Atomiclty )事务原子性;
C一致(Consistency)插入一张表数据,会影响其它(索引/其它表)等一致。
I 隔离性(ioslation)事务独立,封闭;隔离性强度;
D持久性(Durabilty)数据永存。
对应分布式数据库,某些业务不需全部一致性事务,可采用弱化其中之一,提供其它响应速度等。
理解:
A 事务原子性,指对一个事务要么完全提交要么完全回滚,保证提交成功的给数据库的和外部反应的一致。或者提交不成功,完全回滚,数据库完全没反应于外部。这种事务原子保证了现实生活很多业务现象的合理。例如:银行存款,如果确定成功存入,数据库必须完整修改。如果存入失败,数据库必须完全回滚。不能在数据库只存一半或回滚一半。
C 事务一致性:一个事务执行前和执行后在数据库必须保证一致状态;例如:表a和表b有主外键约束,更新a,级联b值需要保持一致性更新。
I 是事务的隔离性 ,事务的隔离有4个级别(?read Uncommitted,read committed ,rapeatable read?,可串行)数据库为了防止出现数据库读取不一致,可设置不同等级的事务的隔离性;
D、 持久性 :在事务完成以后,数据持久的保存在数据库之中,并不会被回滚。
BASE模型完全不同ACID模型,牺牲高一致性,获得可用性或可靠性: Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库) Soft state软状态 状态可以有一段时间不同步,异步。 Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时一致。
BASE思想的主要实现有
1.按功能划分数据库
2.sharding碎片
BASE思想主要强调基本的可用性,如果你需要高可用性,也就是纯粹的高性能,那么就要以一致性或容错性为牺牲,BASE思想的方案在性能上还是有潜力可挖的。
?强一致性
强一致性(即时一致性) 假如A先写入了一个值到存储系统,存储系统保证后续A,B,C的读取操作都将返回最新值
?弱一致性
假如A先写入了一个值到存储系统,存储系统不能保证后续A,B,C的读取操作能读取到最新值。此种情况下有一个“不一致性窗口”的概念,它特指从A写入值,到后续操作A,B,C读取到最新值这一段时间。
?最终一致性
最终一致性是弱一致性的一种特例。假如A首先write了一个值到存储系统,存储系统保证如果在A,B,C后续读取之前没有其它写操作更新同样的值的话,最终所有的读取操作都会读取到A写入的最新值。此种情况下,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:交互延迟,系统的负载,以及复制技术中replica的个数(这个可以理解为master/salve模式中,salve的个数)。