众多的“一致性”
说到一致性,大家都不陌生。随着分布式系统、微服务系统、区块链等技术的发展,“一致性”一词出现的频率也越来越高。
然而,“一致性”这一词语所代表的概念却并不唯一。例如我们常听到“事务的一致性”、“最终一致性”、“一致性哈希”等,它们表述的并不是同一个概念。理解这点十分重要。如果错误地认为以上几个“一致性”都指同一个概念,那就搞混了。
在明确以上概念各不相同的基础上,我们再将“事务的一致性”中的“一致性”概念单拿出来进行分析。
ACID一致性
事务要满足ACID约束,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。为了便于表述,我们将这种一致性称为“ACID一致性”。“事务的一致性”中的“一致性”就是指“ACID一致性”。
ACID一致性是指事务的执行不会破坏数据库的完整性约束,所谓的完整性约束包括数据关系的完整性和业务逻辑的完整性。因此,这里的“一致性”指的是完整性约束不会破坏。
这里要着重理解的就是:什么是完整性约束?
我们先举个例子。如图所示,假设完整性约束要求事务执行前后总有数据A和数据B的和为10。那图中的事务致性后,该完整性约束依然满足。因此,这个事务就满足一致性。