一文讲透数据库事务的四原则( 三 )


 
到这里,数据库事务四大原则当中的三个就介绍完了,内容看起来不少,但其实还没有结束,关于隔离的实现会牵扯到锁的使用,这块深挖下去,又会牵扯许多内容 。不过对于我们算法从业者而言,能够了解到这一层,也差不多够了 。
 
四原则当中还剩下一个一致性原则,一致性这个单词在很多地方都出现过,比如分布式存储系统、多副本的一致性等等 。但是这些概念的意思并不相同,不可以简单地理解成同一回事 。数据库的一致性表示数据的状态是正确的,在转移的时候,是从一个正确的状态转移到了另一个正确的状态 。正确的状态其实就是指不出错的状态,也就是和程序员预期一致的状态 。之前在介绍隔离性时谈到的种种问题,总结起来都是数据和程序员的预期不一致 。也就是说如果和程序员的预期一致,就可以认为满足了一致性 。
 
虽然一致性是数据库的四原则之一,但数据库系统当中并没有专门针对一致性的部分 。其实在数据库眼中,满足了其他三原则,那么自然也就达成了一致性 。一致性是目的,并不是手段 。举个例子,还是以刚刚转账的情景距离 。A向B转账100,我们都知道,前提条件是A的账户里的金额大于等于100,如果A账户里小于100,我们开发的时候没有做校验还强行转账成功 。那么这个结果显然是错误的,也是和我们预期不一致的,但是这个问题发生的原因并不是因为数据库没有做好一致性,而是开发人员忽略了限制条件 。
 
所以数据库的教材上才会写着“Ensuring the consistency is the responsibility of user, not DBMS.", "DBMS assumes that consistency holds for each transaction” 。
 
“保证一致性是开发的责任,而不是数据库的,数据库假设每一个事务都符合 一致性 。”
 
到这里,数据库事务的四原则就介绍完了,衷心祝大家,日拱一卒,每天都有收获 。
 
喜欢本文的话,请顺手给个关注吧~

【一文讲透数据库事务的四原则】


推荐阅读