一、关系型数据库的ACID
ACID(Atomic,Consistent,Isolated,Durable)
1.原子性(Atomic)
事务是一个不可分割的整体,对数据库的操作要么全做,要么全不做,不允许部分完成。如果中途因为故障导致未完成,应该回滚到执行事务之前。
2.一致性 (Consistent)
事务对数据库的作用应使数据库从一个一致状态到另一个一致状态。
数据库状态指某个时间点,数据库中存储的所有数据的集合。
3.隔离性 (Ioslated)
并发环境中,不同事务操作相同数据时,各自有自己的完整数据空间,互相隔离。是保证原子性的一种方式
mysql有多种隔离级别。
4.持久性 (Durable)
事务一旦执行成功,则该事务对数据库进行的所有更新都是持久的。
二、CAP理论
1.NoSQL系统是分布式系统,用户通过一些API接口来访问
分布式系统(Distributed System)是建立在网络之上的软件系统,具有高度的透明性(指每一个节点对用户应用来说都是透明的,看不出是远程还是本地的,使用中感觉不到是分布的)。
2.CAP理论
强一致性(Consistency)
系统在执行某项操作以后,然后处于一致的状态。
可用性(Availability)
每一个操作总是能在给定时间内返回。
分区容错性(Partition Tolerance)
系统在存在网络分区的情况下,仍然可以接受请求(满足一致性和可用性)。网络分区指网络由于某种原因被分成若干独立的区域,且各区域直接互不相通。
根据CAP理论,数据共享系统只能满足这三个特性中的两个,不可能同时满足三个。
CA 传统关系型数据库
CP 分布式数据库,分布式加锁
AP DNS等
AP系统是目前NoSQL的主流,即放弃了强一致性(C)
三、BASE
基本可用(Basically Available):系统能够基本运行、一直提供服务。
软状态(Soft-state):系统不要求一直保持强一致状态。
最终一致性(Eventual consistency):系统需要某一时刻后达到一致性要求。
四、ACID和BASE对比
ACID | BASE |
强一致性 | 弱一致性 |
隔离性(一个事务的执行不能被其他事务干扰) | 可用性优先 |
采用悲观、保守方法 | 采用乐观方法 |
难以变化 | 适应变化、更简单、更快 |