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的话,这样就不满足一致性了。
当G2需要将数据更新为v1时,这个时候,要是想要保证数据的一致性,必须在G1在写操作时,锁定G2的读操作和写操作,当两者的数据同步后,才能重新开放读写。这样就和可用性冲突了
所以说,在非关系型数据库中,CAP理论是不能同时被满足的。
写。这样就和可用性冲突了
所以说,在非关系型数据库中,CAP理论是不能同时被满足的。