关系型数据库ACID理论

关系型数据库遵循ACID规则
事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:

1、A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不失败,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。

2、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

3、I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的

4、D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

CAP理论

著名的CAP理论定义过分布式环境下二者不可兼得的关系,什么是CAP理论呢?简单来说CAP理论是分布式系统、特别是分布式存储领域中被讨论的最多的理论。其中C代表一致性 (Consistency),A代表可用性 (Availability),P代表分区容错性 (Partition tolerance)。

  • 一致性

一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据。即所有的节点都能读取最新的一份数据。

  • 可用性

对数据更新具备高可用性,请求能够及时处理,不会一直等待,即使出现节点失效。

  • 分区一致性

一般情况下,网络不同分区服务器都有延迟和丢包能容忍网络分区,在网络断开的情况下,被分隔的节点仍能正常对外提供服务。

理解CAP理论最简单的方式是想象两个副本处于分区两侧,即两个副本之间的网络断开,不能通信。

分布式系统的挑战

下面以一个例子来理解CAP理论

如下图1中所示,Client A负责更新数据,为了保证Server 1和Server 2上的数据是一致的,Client A会将X=1的写操作同时发给Server 1和Server 2,但是当Client A和Server 2之间发生网络分区(网络无法连接)时,此时如果让write X=1的写操作在Server 1上成功,那Client B和Client C将从Server 1和Server 2上读取到不一致的X值;此时如果要保持X值的一致性,那么write X=1的写操作在Server 1和Server 2上都必须失败,这就是著名的CAP理论:在容忍网络分区的前提下,要么牺牲数据的一致性,要么牺牲写操作的可用性。

解决这个问题你可能会想到让Client C同时读取Server 1和Server 2上的X值和版本信息,然后取Server 1和Server 2最新版本的X值,如下图2所示。但Client C和Server 1之间也可能发生网络分区,这本质上是牺牲读可用性换取写可用性,并没有突破CAP理论。


由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。

BASE理论

BASE就是为了解决noSql数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。

BASE其实是下面三个术语的缩写:
基本可用(Basically Available)
软状态(Soft state)
最终一致(Eventually consistent)

它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成,这里BASE就是解决这个问题的办法

CAP理论与ACID理论相关推荐

  1. 【分布式】1、CAP原则(CAP定理)、BASE理论

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  2. 什么是ACID理论(二阶段、三阶段提交、TCC)

    目录 二阶段提交协议 TCC(Try-Confirm-Cancel) 预留成功 预留失败 三阶段提交协议 总结 Some questions reference ACID理论时对事务特性的抽象和总结, ...

  3. CAP 理论、BASE 理论、FLP 理论

    CAP 理论.BASE 理论.FLP 理论 CAP 理论.BASE 理论.FLP 理论 1.CAP 理论 C(Consistency) 一致性: 在写操作之后的所有读操作,必须要返回写入的值. A(A ...

  4. 分布式与微服务——Iaas,Paas和Saas、单体应用和缺点、微服务概念、传统 分布式 SOA 架构与微服务架构的区别、微服务实战、什么是RPC、CAP定理和BASE理论、唯一ID生成、实现分布式

    文章目录 1-什么是Iaas,Paas和Saas 一 IaaS基础设施服务 二 paas平台即服务 三saas软件即服务 四 总结 2-单体应用和缺点 一 单体应用 二 单体应用的缺陷 3-微服务概念 ...

  5. BASE理论与ACID

    BASE理论 eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Stro ...

  6. CAP定理与BASE理论

    CAP定理与BASE理论 CAP定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想.2年后,麻省理工学院的 Seth Gilb ...

  7. CAP 定理、 BASE 理论

    CAP 定理 2000 年 7 月,加州大学伯克利分校的 Eric Brewer 教授在 ACM PODC 会议上提出 CAP 猜想.2年后,麻省理工学院的 Seth Gilbert 和 Nancy ...

  8. java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(三:注册中心、补充CAP定理、BASE 理论)~整起

    架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(一:总览篇) 网关开了个头 你请求来了,我网关把你拦截住,验明正身,加以控制,协助你调用服务,完成请求的调用.但是这个过程中,为了解耦和或者 ...

  9. CAP帽子理论与BASE理论

    ACID理论 CAP理论 一个经典的分布式系统理论.CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency).可用性(A:Availability)和分区容错性(P:Par ...

最新文章

  1. html 文件上传_某平台存在多处任意文件上传
  2. 方差分析 球形检验_重复测量数据的方差分析
  3. jpg图片转eps 用于LaTeX
  4. 如何在java中实现跨线程的通讯
  5. 计算机一级b类论理,计算机一级B论理参考题.doc
  6. Vi经典插件ctags(转)
  7. HDU - 5187 zhx's contest(快速幂+快速加+组合数学)
  8. 机器学习入门(1)之基本概念简介
  9. Web前端笔记-let n = 6 - data.length >>> 0 含义
  10. 看视频学编程之WinForm
  11. linux下用mail发送邮件
  12. PHP可以通过什么组件上传大文件
  13. 解决使用百度地图默认定位是北京的问题
  14. Linux桌面词典 GoldenDict词典
  15. Mac电脑怎样网络在线重装系统
  16. 17-11-01模拟赛
  17. 【音视频基础】视频基础理论
  18. 头豹研究院发布《2022年中国数据库产品策略解析报告》
  19. 利用pypdf2 安装包 基于 python 制作的PDF 文档合并脚本
  20. 数据库binlog(二进制日志binary log)

热门文章

  1. Docker基本命令和操作
  2. 那些数学不好的程序员,最后都怎么样了?
  3. JavaScript 使用split 以中英文逗号、空格(一个或多个)分割字符串
  4. [乱搞] BZOJ 1484 [HNOI2009]通往城堡之路
  5. python后端接收数据_python后端开发使用flask接收前端数据,处理后返回结果
  6. viper12a引脚功能图_viper12a各脚电阻值 电磁炉开关电源ICVIPer12A各脚正常工作电压是多少?...
  7. 配置IIS服务器环境--win10
  8. 近期接触和学习的新技术
  9. 第三方存储系统(一):阿里云OSS云存储配置及Java上传接口设计
  10. ElasticSearch之ES8新特性及集群安装