一、事物
事务是以可控的方式对数据资源进行访问的一组操作。
二、事物的四个特征-ACID
要注意的是事务能够通过AID来保证这个C的过程,C是目的,AID都是手段。
① Atomic原子性
事务必须是一个原子的操作序列集合,即可以是一个操作,也可以是多个操作。在这个事物执行的过程中,要么全部成功,则整个事物全部成功,如果有一项失败,则全部失败,整个事物回滚。
② Consistency
指系统从一个正确的状态,迁移到另一个正确的状态。即事物在执行前后,数据库都必须满足一条系统设置的约束条件,它依赖于应用层,也就是依赖于开发者。
③ Isolation
在并发的环境中,事物是相互隔离的,一个事物的执行,不能被其他事物所影响。在没有事物隔离的情况下可能会出现:
四种隔离级别依次递增:
(1). 读未提交
事物没有提交的过程中允许其他事物去更改数据集。(相当于没有隔离,易发生脏读。)
(2). 读已提交
只允许读到已经提交的数据。第一次读原先的数据,第二次读其他事物修改后提交的数据(易发生不可重复读)
(3). 可重复读
保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻时是一致的。这可以保证原先的数据是一致的,但不能保证新加入的数据是否正确。(易发生幻读)
(4). 串行化
最严格的隔离级别,所有事物串行执行,不存在并发的情况,
④ Durability
一旦事物被提交,则它对数据库的操作将被永久保存,即使系统出现了宕机也可以进行恢复。
三、CAP定理
一个分布式系统不可能同时满足一致性Consistency、可用性Availability、分区容错性Partition tolerance这三个基本需求,最多只能同时满足其中的两项。
① 一致性Consistency
这个一致性和ACID的一致性不同,这里的一致性指的是多个副本之间在初始一致(完全相同)的条件下执行一系列操作后,这些副本的数据仍然可以保持一致。
② 可用性Availability
系统可以提供正常的服务,主要有两个因素:响应时间以及返回正确的结果集。
③ 分区容错性Partition tolerance
分布式系统中即使出现了网络分区的情况,仍然能够满足一致性和可用性。
网络分区,是指分布式系统中,不同的节点分布在不同的子网络(机房/异地网络)中,由于一些特殊的原因导致这些子网络之间出现网络不连通的状态,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干孤立的区域。组成一个分布式系统的每个节点的加入与退出都可以看做是一个特殊的网络分区
三者取其二
对于分布式系统来说,P是不能放弃的(可以进行优化),因此通常在可用性和一致性之间权衡。
四、BASE定理
Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)
可以看出BASE定理是通过弱化一致性来获得可用性,它允许数据在一段时间内是不一致的,但通过一定的时间最终达到一致状态。