赞
踩
传统关系数据库中事务的ACID特性
分布式系统中的经典理论——CAP定理和BASE理论
分布式实际上就是单一的本地一体解决方案,在硬件或者资源上不够业务需求,而采取的一种分散式多节点,可以扩容资源的一种解决思路。它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给多个计算机进行处理,最后把这些计算结果综合起来得到最终的结果。
事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit),狭义上的事务特指数据库事务
。
事务是基于数据进行操作,需要保证事务的数据通常存储在数据库中。
一个良好的事务处理系统,必须具备四个标准特性,即ACID。
隔离级别 | 脏读(Dirty Read) | 可重复读(Nonrepeatble Read) | 幻读(Phantom Read) |
---|---|---|---|
读未提交(Read Uncommitted) | 存在 | 不可以 | 存在 |
读已提交(Read Committed) | 不存在 | 不可以 | 存在 |
可重复读(Repeatable Read) | 不存在 | 可以 | 存在 |
串行化(Serializable) | 不存在 | 可以 | 不存在 |
以上4个级别的隔离性依次增强。事务隔离级别越高,就越能保证数据的完整性和一致性,但同时对并发性能的影响也越大。
不可重复读与脏读之间存在交叉。脏读侧重读到不应存在的数据,不可重复读强调两次相同查询的结果不一样。
实际上,可以将描述放宽到“目标记录的状态不符合预期状态”,如本应该不同,却读到了相同。本质上也是由于读已提交实现原理导致的问题。
MySQL的默认隔离级别是可重复读,解决了脏读、部分不可重复读问题,有幻读问题。
CAP定理:一个分布式系统不可能同时满足一致性(Consistence)
、可用性(Availability)
和分区容错性(Partition tolerance)
这三个基本要求,最多只能满足其中的两项。
序列一致性(sequential consistency):不要求时序一致,A 操作先于 B 操作,在 B 操作后如果所有调用端读操作得到 A 操作的结果,满足序列一致性;
最终一致性(eventual consistency):放宽对时间的要求,在被调完成操作响应后的某个时间点,被调多个节点的数据最终达成一致。
BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结。
BASE是基于CAP逐步演化而来的:即使无法做到强一致性(Strong Consistency),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。
CAP中提到的一致性是强一致性,所谓“牺牲一致性”指牺牲强一致性保证弱一致性。
ACID
是传统数据库常用的设计理念,追求强一致性模型。
BASE
支持的是大型(高可用可扩展的)分布式系统,提出通过牺牲强一致性获得高可用性。
BASE是指基本可用(Basically Available)
、软状态(Soft State)
、最终一致性(Eventual Consistency)
。
分布式系列文章——从ACID到CAP/BASE
分布式理论:CAP、BASE与ACID
事务的ACID和四个隔离级别
谈谈 ACID、CAP 和 BASE
分布式从ACID、CAP、BASE的理论推进
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。