谈谈CAP,BASE, ACID

本文探讨了CAP定理中的强一致性(C)、可用性(A)及分区容忍性(P)三者之间的权衡,并介绍了ACID特性在确保数据完整性和一致性的关键作用。通过对比不同场景,展示了传统关系型数据库与NoSQL系统的选择差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CAP

C consistency 强一致性

A Availability 可用性

P partition tolerance 分区容忍性

强一致性:指有多个副本的情况下,多线程的情况下,对数据的更新操作体现出来的效果与只有一份是一样的。

可用性:无论数据规模有多大,限定时间内都必须完成读/写操作。

分区容忍性:分区内的机器无法进行网络通信,系统仍然能够正常工作。

三选二

这三种要素最多只能满足其中两个。

为什么不能同时满足呢?来看两个场景:

1 如果系统中没有副本,那么 C肯定满足,A也是没问题的。但是因为没有副本,万一出现网络问题或者硬件故障,那么系统百分之百GG。

2 如果系统有副本,共有两台主机,在主机之间通信没问题的情况下,C是可以满足的。假如主机之间的通信出现问题了,同时对某个副本做了修改操作,从而另外一个主机是没有收到修改请求,那么数据就会不一致。 假如我们选择了C,那么就要拒绝用户的请求,导致A失效。假如我们选择了A,那么C就失效了。

传统选CA,互联网选AP

传统的关系型数据库会选择 CA 

而 Nosql会关注AP。

因为传统的数据库更关心数字是否准确,而互联网应用则关心高可用以及用户体验

BASE

BA  basically available基本可用

S soft state 软状态

E evetual consistency 最终一致性

基本可用指的是,系统大多数时间是可用用的,允许偶尔失败

软状态:数据的状态不需要任何时刻都完全保持同步,存在一个处于有状态和无状态的中间状态

最终一致性:在给定的时间内,数据达到一致

nosql系统采纳了BASE的原则。不过他们正在逐步向ACID发展,即先遵守BASE,然后尽可能遵守ACID

 

ACID

A atomicity 原子性

C consistency 一致性

I isolation 事务独立

D durability 持久性

原子性: 一个事务要么都运行,要么都不运行

一致性: 如果有两个进程,1,2,1进程改变了x的值,那么2进程也应该获取到它的改变

独立性:如果有两个事务同时执行,彼此之间不需要知道对方的存在,运行时不能互相影响

持久性:事务运行成功之后,对系统状态的更新是永久的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值