本文作者:
Sigma
本文链接:
http://www.sigma.me/2011/06/13/NoSQL-CAP-Theorem.html
传统关系型数据库系统的事务都有ACID的属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。英文为:
-
A
tomic: Everything in a transaction succeeds or the entire transaction is rolled back.
-
C
onsistent: A transaction cannot leave the database in an inconsistent state.
-
I
solated: Transactions cannot interfere with each other.
-
D
urable: Completed transactions persist, even when servers restart etc.
中译为:
-
原子性
: 整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
-
一致性
: 在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
-
隔离性
: 两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。 两个事务不会发生交互。
-
持久性
: 在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
在数据库系统中,事务的ACID属性保证了数据库的一致性,比如银行系统中,转账就是一个事务,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和构成一个完整的逻辑过程,不可拆分,为原子,从而保证了整个系统中的总金额没有变化。
然而,这些ACID特性对于大型的分布式系统来说,适合高性能不兼容的。比如,你在网上书店买书,任何一个人买书这个过程都会锁住数据库直到买书行
为彻底完成(否则书本库存数可能不一致),买书完成的那一瞬间,世界上所有的人都可以看到熟的库存减少了一本(这也意味着两个人不能同时买书)。这在小的
网上书城也许可以运行的很好,可是对Amazon这种网上书城却并不是很好。
而对于Amazon这种系统,他也许会用cache系统,剩余的库存数也许是之前几秒甚至几个小时前的快照,而不是实时的库存数,这就舍弃了一致
性。并且,Amazon可能也舍弃了独立性,当只剩下最后一本书时,也许它会允许两个人同时下单,宁愿最后给那个下单成功却没货的人道歉,而不是整个系统
性能的下降。
其实,上面的思想是从Eric Brewer’s CAP 理论
(详见我这篇文章)得到的启发,在CAP理论中:
在设计分布式Web服务中,通常需要考虑三个应用的属性:一致性、可用性以及分区宽容性。但是在实际的设计中,不可能这三方面同时做的很好。
由于CAP理论的存在,为了提高性能,出现了ACID的一种变种BASE:
-
B
asic A
vailability:基本可用
-
S
oft-state :软状态/柔性事务,可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的
-
E
ventual consistency:最终一致性,最终整个系统(时间和系统的要求有关)看到的数据是一致的。
在BASE中,强调可用性的同时,引入了最终一致性这个概念,不像ACID,并不需要每个事务都是一致的,只需要整个系统经过一定时间后最终达到是一致
的。比如Amazon的卖书系统,也许在卖的过程中,每个用户看到的库存数是不一样的,但最终买完后,库存数都为0。再比如SNS网络中,C更新状态,A
也许可以1分钟才看到,而B甚至5分钟后才看到,但最终大家都可以看到这个更新。
有趣的是,ACID的意思是酸,而BASE却是碱的意思,因此这是一个对立的东西。其实,从本质上来讲,酸(ACID)强调的一致性(CAP中的C),而碱(BASE)强调是可用性(CAP中的A)。
分享到:
相关推荐
Acid-base catalysis 希望对大家有帮组
【总结】ACID、Data Replication、CAP与BASE,觉得不会辜负你下载的。
毕业设计作业—基于Python的解释数据库中的ACID属性,并解释每个属性的含义及参考答案.
行业教育软件-学习软件-Acid-base titration 5.0 英文版.zip
主要介绍了数据库的ACID特性术语详解,ACID就是:原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)和持久性(Durabilily),本文分别解释了它们,需要的朋友可以参考下
行业教育软件-学习软件-Acid-base titration 5.0 英文版 (1).zip
标量数据库 使非ACID分布式数据库/存储符合ACID的库。 当与分布式数据库/存储(例如Cassandra)一起部署时,它不仅支持高度一致的ACID事务,而且可以线性扩展并实现高可用性。安装该库在上可用。 您可以使用构建工具...
数据库编程 事务概述、ACID 课程目标 了解 —— 事务的概念; 理解 —— 事务的属性ACID; 事务概述 在MySQL环境中,事务由作为一个单独单元的一个或多个SQL语句组成。这个单元中的每个SQL语句是互相依赖的,而且...
应用软硬酸碱理论解释岩浆热液矿床的成矿专属性,汪洋,焦永玲,从软硬酸碱(HASB)理论来看,热液矿床的成矿专属性是岩浆、成矿元素阳离子与热液中的阴离子受制于最大硬度原理和最小亲电性原理�
有关此模拟的说明,相关资源以及指向已发布版本的链接,。尝试一下! 文献资料是PhET仿真开发的最完整指南。 本指南包括如何获取仿真代码及其依赖项,有关体系结构和设计的注释,如何测试和构建sims以及...git clone ...
而传统数据库保证了强一致性(ACID模型)和高可用性,所以要想实现一个分布式数据库集群非常困难,这也解释了为什么数据库的扩展能力十分有限。而近年来不断发展壮大的NoSQL运动,就是通过牺牲强一致性,采用BASE模型...
CAP、BASE、ACID区分 一、CAP CAP是分布式计算领域的公认定理。 1、一致性(Consistency) all nodes see the same data at the same time 在同一时间看见所有节点的数据是一致的 所有节点返回的数据都是一样的,...
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的功能特点有: 1. ACID事务 2. 零配置 – 无需安装和管理配置 3.储存在单一磁盘文件中的一个完整的数据库 4....
它具有:可移植数据库创建,依赖数据库的session支持,SQL执行监控和数据库"健康"检查。 很多的知名网站如ACID, Zikula/PostNuke,Xaraya, phpWiki, Mambo, PHP GACL, TikiWiki, eGroupWare and phpLens都使用了ADODB...
数据库系统中事务的 数据库系统中事务的ACID原则 原则 事务的原⼦性、⼀致性、独⽴性及持久性 事务的原⼦性是指⼀个事务要么全部执⾏,要么不执⾏.也就是说⼀个事务不可能只执⾏了⼀半就停⽌了.⽐如你从取款机取钱,这...
在Snort的安装配置过程中,主要参照www.chinaunix.net和www.snort.org上面的相关文档,特别感谢www.chinaunix.net上面的两个作者,我是在他们的基础上测试成功的,主要有下面两篇文档...
base table 基[本]表 2.()表示缩写或说明。如: Abstract Data Type (ADT) 抽象数据类型 ACID properties (事务的)ACID 特性 3. / 表示两种形式都可以。如: CREATE SCHEMA 创建/建立模式 A aborted ...
NoSQL数据库BASE原则 基本可用Basically Available 软状态Soft state 最终一致性Eventual consistency 单体系统到分布式系统的变化增加了数据库实现ACID特性的难度,但许多环境下企业仍要求较强的一致性。经过多年...
数据库管理系统(DBMS):数据库 + 一组用以访问、更新和管理这些数据的程序 数据访问的高效和可扩展性 缩短应用开发时间 数据独立性(物理数据独立性 / 逻辑数据独立性) 数据完整性和安全性 并发...
第10 章 数据库恢复技术 1....为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。 答: 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库 系统运行中发