数据库ACID和CAP理论

对于数据库领域,有两个重要且经典的理论,这两个理论是单点数据库系统及分布式数据库系统(Nosql,通常强调分布式扩展)构建的基础理论。通过这篇文章,希望能帮助小伙伴理解这两个理论的具体含义。

一、ACID是RDBMS的理论基石

1、名词解释

A原子(Atomiclty )事务原子性;

C一致(Consistency)插入一张表数据,会影响其它(索引/其它表)等一致。

I 隔离性(ioslation)事务独立,封闭;隔离性强度;

D持久性(Durabilty)数据永存。

对应分布式数据库,某些业务不需全部一致性事务,可采用弱化其中之一,提供其它响应速度等。

2、详细解释

A 事务原子性,指对一个事务要么完全提交要么完全回滚,保证提交成功的给数据库的和外部反应的一致。或者提交不成功,完全回滚,数据库完全没反应于外部。这种事务原子保证了现实生活很多业务现象的合理。例如:银行存款,如果确定成功存入,数据库必须完整修改。如果存入失败,数据库必须完全回滚。不能在数据库只存一半或回滚一半。

C 事务一致性:一个事务执行前和执行后在数据库必须保证一致状态;一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。

也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。

I 是事务的隔离性 ,如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。数据库为了防止出现数据库读取不一致,可设置不同等级的事务的隔离性;

D、 持久性 :在事务完成以后,即事务一旦完成,那么数据应该是被写到安全的,持久化存储的设备上(比如磁盘),并不会被回滚。

二、CAP理论

在分布式数据库应用中,任何分布式系统只可同时满足CAP其中两点,无法三者兼顾。

1、名词解释

Consistency(一致性), 数据一致更新,所有数据变动都是同步的。

Availability(可用性), 好的响应性能。

Partition tolerance(分区容错性) 网络通信的可靠性。

2、应用场景

CA 系统是要求高可用用并且实时一致性。单点数据库是符合这种架构的,例如超市收银系统,图书管理系统。但是这样就无所谓一个分布式系统了,所以分布式系统的P特性是一定要保证的。

AP 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。例如博客系统。

CP 系统是要求满足一致性,分区容忍性,通常性能不是特别高。例如火车售票系统。

忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

参考:
数据库ACID和CAP理论
CAP 理论 —— 最通俗的解释
acid (数据库事务正确执行的四个基本要素的缩写)
一致性(Consistency),可用性(Avilable),分区容错性(Tolerance of network Partition)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值