ACID和CAP特性


ACID和CAP理论

ACID

**atomicity(原子性):**所有的事务要么都成功要么都失败,

**consistency(一致性):**执行事务的前后,数据库的状态保持一致

isolation(隔离性):一个事务的执行不能被其他事务干扰
**durability(持久性)😗*可以理解为事务执行完后,该事务对数据库的更改便持久到了数据库中,这个更改是永久的

CAP

**一致性(Consistency) 😗*不同机器访问一致,即所有节点在同一时间具有相同的数据
**可用性(Availability) 😗*客户端总是可以读写,即保证每个请求不
管成功或者失败都有响应
分隔容忍(Partition tolerance): 分到多个机器形成多个分区,即使网络故障依然可以工作,即系统中任意信息的丢失或失败不会影响
系统的继续运作

我们都知道在关系型数据库中是需要满足ACID特性的,而在NoSQL中是是不能同时满足CAP三个理论的,但不是说,CAP理论是不对的哈。

下面先来看可用性(A)和一致性©的冲突:

P:分布式系统都分布在各个子网络,每一个网络叫做一个区,所以每一个分区都是分隔的。一般来说,分区容错是不能容忍的。

但是,需要满足分区容忍的话,就需要花费一定的时间进行数据的复制,在数据复制时,需要保证数据的一致性的话,就不能对外提供访问请求,需要等数据复制完时,才能进行访问,这样就违背了可用性(A)。下面我们来看一个例子:

在这里插入图片描述​

client向G1发起一个写请求,将其改为v1,这时client读取G1获得到v1,满足可用性。但是当用户访问G2时返回的是v0的话,这样就不满足一致性了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QehF4REu-1648131731421)(C:\Users\大勇\AppData\Roaming\Typora\typora-user-images\image-20220323103845860.png)]

当G2需要将数据更新为v1时,这个时候,要是想要保证数据的一致性,必须在G1在写操作时,锁定G2的读操作和写操作,当两者的数据同步后,才能重新开放读写。这样就和可用性冲突了

所以说,在非关系型数据库中,CAP理论是不能同时被满足的。

写。这样就和可用性冲突了

所以说,在非关系型数据库中,CAP理论是不能同时被满足的。

posted @ 2022-03-24 22:25  Leo哥coding~  阅读(13)  评论(0编辑  收藏  举报  来源