数据库ACID和CAP原则
1 单机场景
单台物理机(服务器、主机)中的关系型数据库遵循ACID原则,对应关系如下表:
序号 | 原则 | 描述 |
---|---|---|
1 | 原子性(Atomicity) | 事务所有操作要么全部完成,要么全部不完成,一荣俱荣,一损俱损 |
2 | 一致性(Consistency) | 事务开始或结束时,数据库状态一致(中间状态的数据对外不可见,只有最初状态和最终状态的数据对外可见),保证操作前和操作后数据结构一致,监控数据的中间状态,若有错误,则立即回滚 |
3 | 隔离性(Isolation) | 多个事务操作,互不干扰,事务锁保证事务的隔离,可能会出现死锁 |
4 | 持久性(Durability) | 事务完成之后,无法回滚 |
一致性在前,原子性在后,事务进行时,首先由一致性监控操作过程中数据是否一致,若数据结构发生变化,则进行回滚,这时原子性保证了数据回滚到初始状态。
2 分布式场景
分布式场景,数据分布在多台物理机(服务器、主机)中,数据库遵循CAP原则,对应关系如下表:
序号 | 原则 | 描述 |
---|---|---|
1 | 一致性(Consistency) | 数据一致更新,所有机器数据的变动同步进行 |
2 | 可用性(Availability) | 高可用性,多台物理机集群中部分机器故障,其余部分物理机是否能正常响应客户端读写请求 |
3 | 分区容错性(Partition tolerance) | 分区为网络分区(如上海和北京的网络区),容错性只多台物理机容忍网络通信故障的能力,多台物理机间通信不能在时限内达成数据一致,说明物理机通讯异常(出现网络分区),必须在C和A之间进行选择 |
3 CAP放弃原则
序号 | 放弃 | 描述 |
---|---|---|
1 | C | 放弃实时一致性,即数据的一致性时间变长,部分物理机数据先变化,其余物理机一段时间后变化,但最终多台物理机数据是一致的 |
2 | A | 放弃高可用,任一单台物理机发生故障,整体物理机集群全部不对外提供数据读写服务 |
3 | P | 放弃分区容错性,当网络分区异常时无法保证多台物理机数据的一致 |
4 CAP选择
序号 | 方案 | 数据库 | 说明 |
---|---|---|---|
1 | CA | RDBMS | 保证数据强一致性和高可用性,但网络分区故障时,数据服务不可用 |
2 | CP | MongoDB、HBase、Redis | 保证数据强一致性和网络故障容灾,但,任意物理机故障时,数据不可用 |
3 | AP | CouchDB、Cassandra、DynamoDB、Riak | 保证数据网络故障可用和物理机故障容灾,但牺牲数据实时一致性 |
5 BASE
BASE理论是权衡强一致性和高可用的结果,介绍如下表:
序号 | 属性 | 描述 |
---|---|---|
1 | 基本可用(Basically Available) | 系统出现了不可预知个故障,但是仍可用,此时响应速度变慢、功能缩水,但可正常工作 |
2 | 软状态(Soft State) | 允许物理机数据存在中间状态,允许多物理机数据时延 |
3 | 最终一致性(Eventually Consistent) | 多物理机中的数据一致存在时间间隔,但时延期之后,物理机集群数据完全一致 |
5 小结
- 理论上分布式过程中不存在同时满足CAP三个特性的分布式集群;
- BASE理论对CAP中一致性和可用性的权衡,即使无法做到强一致性,但每个应用可以根据自身业务特点,采用适当的方式使系统达到最终一致性;
- 不同的场景需要不同的搭配方案,如CA,CP,AP;
- 对于机器数量庞大,时常出现网络故障,可用性是必要的,因此使用AP,对于数据强一致的场景(如银行、证券)需要权衡CA和CP,当网络故障时,CA原则的数据完全不可用,CP原则部分可用;当机器部分故障时,CA原则数据可用,CP原则的数据完全不可用;
【参考文献】
[1]https://wenku.baidu.com/view/d2ae9c43571252d380eb6294dd88d0d233d43c21.html?from=search
[2]https://www.cnblogs.com/autointerface/p/11959711.html
[3]https://wenku.baidu.com/view/d245c9b6ec630b1c59eef8c75fbfc77da369971b.html?from=search
[4]https://www.cnblogs.com/frank2015/p/9554180.html
[5]http://blog.sina.com.cn/s/blog_53e5177d0102x8k6.html
[6]https://baijiahao.baidu.com/s?id=1634401106583534524&wfr=spider&for=pc
数据库ACID和CAP原则相关推荐
- 谈谈对数据库中ACID、CAP、BASE的认识
2019独角兽企业重金招聘Python工程师标准>>> ACID.CAP.BASE的区别与联系 这得从关系型数据库关系型数据库(RDBMS)和非关系型数据库(NoSQL)说起. RD ...
- 【分布式】1、CAP原则(CAP定理)、BASE理论
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- CAP原则(CAP定理)
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- 关于分布式存储系统中-CAP原则(CAP定理)与BASE理论比较
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- 【分布式】CAP原则和BASE理论
CAP原则概述 C=Consistency=一致性 A=Availability=可用性 P=Partition tolerance=分区容错性 1998年,加州大学的计算机科学家Eric Brewe ...
- base cap 分布式_高并发架构系列:详解分布式一致性ACID、CAP、BASE,以及区别
在面试环节,经常会问CAP.BASE等相关的分布式理论,其实这些名词主要还是来自于分布式的一致性,今天主要介绍分布式一致性:强一致性.最终一致性.ACID.CAP等理论. 分布式一致性的背景 随着分布 ...
- CAP 原则与 BASE 理论
导航 引言 一.CAP 原则 1.1 Consistency 一致性 1.2 Available 可用性 1.3 Partition tolerance 分区容错性 1.4 CAP 的矛盾 1.5 C ...
- 数据库中的CAP原理
去年在参加盒子科技秋招笔试题中遇到过,印象深刻,一直想要查资料总结下来. 这个理论是由美国著名科学家,同时也是著名互联网企业Inktomi的创始人Eric Brewer在2000年PODC(Sympo ...
- 什么是分布式事务(CAP原则、BASE理论、2PC|3PC协议、XA|AT等模式)
1.CAP原则 CAP原则是指:一致性©.可用性(A).分区容错性§,分布式系统一般进行三选二,比如: CA:保证一致性和可用性,在单机情况下实现: CP:保证一致性和分区容错性: AP:保证可用性和 ...
最新文章
- Varnish Cache 3.0.0安装
- 某阿里程序员女朋友吐槽男友整天玩失踪!早晨问候一声,晚上十一点才回信息!中间完全消失!阿里加班真的这么恐怖吗?...
- 计算机网络课程复习大纲
- java中 instanceof 的用法
- java子类怎么编译_java – 无法编译从基类实现抽象方法的子类
- Python 超简单一键美化你的文章
- Spring Boot前后端分离项目Session问题解决
- RunLoop已入门?不来应用一下?
- ACM 竞赛高校联盟 练习赛 第六场 光头强的强迫症(线段树)
- 浏览器根对象window之caches
- 【边尝试边写博客】入侵学校服务器
- vue3 + crypto-js加密解密(普通版本/TS版本)
- ubuntu 键盘delete删除文件失效
- jmeter之PerfMon Metrics Collector自定义查看cpu百分比
- MATLAB - 旋度可视化
- 大数据分析实战之异构数据源联合分析业务创新实践
- 网络信号浪涌防雷器的应用
- vue项目中gojs最新V2.2.5版本去除水印
- 视频学习笔记------系统学习让你轻松定义 Java 类加载器
- 链表中入口结点——《剑指offer》
热门文章
- Base64工具类(文件、base64字符串、Bitmap相互转换)
- 初入深度学习1——如何下载与打开一个Github深度学习库
- 如何移除FB的信用卡支付方式?
- ximalaya一键音频保存到电脑
- java 设置环境变量
- 王者荣耀s12服务器维护,王者荣耀S12新增排位保护卡,输了也不用担心掉段了!...
- 如何将一个网页文件设置为屏幕保护程序
- 基于SSM+Python的仿Panli海外代购平台毕业设计(SSM毕业设计)
- 大学计算机模拟考试常见试题与解析
- live555源码分析(二):testRTSPClient分析