事务ACID、隔离级别及CAP、BASE理论

2019-08-20  本文已影响0人  chen_kaka

相信不少读者容易搞混事务的ACID属性、事务隔离级别、CAP理论以及BASE理论都是什么,它们之间有什么关系,本文将对这些看起来有一定关联的概念做一个探讨。

事务的ACID属性

谈到数据库事务,ACID属性总是无法绕过,先了解下什么是ACID,再跟后面内容做一个对比,加深理解。
事务本质上是由一组关联SQL组成的执行任务单元,事务必须符合4个基本属性才能称之为一个有效的事务:

事务的隔离级别

事务有4种隔离级别,从隔离程度的低到高分别是:

CAP理论

不同类型的分布式存储系统,对于数据可靠的要求程度是不同的,也就是说,不同人对于怎样的一个系统算是可靠的定义是不一样的。那么通过怎样的标准来衡量系统的可靠程度呢?
Eric Brewer提出了分布式系统的三个衡量系统可靠性的指标,来论证分布式系统的可靠能力边界,它们统称CAP理论:


CAP
1、强一致性
指更新操作完成的时刻,对所有节点的读操作都返回更新后的内容(基于同一个数据副本)。
2、弱一致性
指更新以后,允许部分或全部读取的结果不能返回更新后的内容。
3、最终一致性
指更新完成一段时间以后,系统最终达成数据的一致性。

选择AP还是CP的现实问题

在理解了CAP理论的定义之后,我们知道了分区容忍性是必须满足的,那么让我们探讨下CAP能否同时保障。
假设我们有一个由2台服务器组成的分布式数据库系统,现在服务器之间的网络断开了,然后存储系统收到了一个更新操作,把数据A更新为B。

1)我们可以让一台服务器接管所有更新跟后续的查询请求,也就是说我们必须放弃另一台机器,单机运行,即放弃分区容忍性,保障系统的强一致性以及可用性(CA)。
2)我们也可以选择更新失败,等待两台服务器之间的网络连接恢复,然后再通知用户重新发起请求,放弃可用性(CP)。

这意味着更新操作必须得到成功的响应结果。
3)我们可以选择两台服务器一起工作,每台完成自己的独立读写,实现分区容忍性,等网络恢复了再手工进行服务器之间的数据同步,放弃强一致性(AP)。
4)我们也可以选择只让一台服务器工作,回到方案1,放弃分区容忍性(AC)。

也就是说我们要让两台服务器能够同时处理请求。
我们可以选择回到假设2的方案1,放弃强一致性(PC)。
或者可以选择回到假设3的方案2,放弃可用性(PA)。

基于上述的假设,我们能够清楚地知道,CAP中的三者不可兼得,我们往往只能选择两个。

BASE理论

BASE理论,即Basically Available, Soft state, Eventually consistency(基本可用,软(过渡)状态,并达到最终一致)。
BASE理论是在CAP理论的三种刚性要求基础上提出的折中方案,中心思想是根据业务场景,在可容忍范围内,尽可能保障用户体验及服务可用。

总结

最后,我们来把事务ACID/隔离级别,CAP及BASE理论串一下。

上一篇 下一篇

猜你喜欢

热点阅读