描述的事务的基本特征。ACID是什么?隔离性的等级等。
【5】多版本并发控制
2个结合看。这里面说了数据库在处理多个事务并发操作同一个数据时发生了冲突怎么处理。例如读写冲突,写读冲突,写写冲突等。还没有涉及分布式的概念。
【6】分布式事务的实现原理
【7】漫画:什么是分布式事务?
【8】我还不懂什么是分布式事务
【9】理解分布式事务
分布式事务用于在分布式系统中保证不同节点之间的数据一致性。
分布式事物是指事物的参与者、支持事物的服务器、资源服务器以及事物管理器分别位于分布式系统的不同节点上,通常一个分布式事物中会涉及对多个数据源或业务系统的操作。
可以设想一个最典型的分布式事物场景:一个跨银行的转账操作涉及调用两个异地的银行服务,其中一个是本地银行提供的取款服务,另一个则是目标银行提供的存款服务,这两个服务本身是无状态并且相互独立的,共同构成了一个完整的分布式事物。如果从本地银行取款成功,但是因为某种原因存款服务失败了,那么就必须回滚到取款之前的状态,否则用户可能会发现自己的钱不翼而飞了。
【9】讲的很全,不仅涉及了单机DB下的ACID,还涉及了分布式下的C。
加一些只能自己看明白的话:
我的理解是:单机版的数据库事务中ACID中包括了Isolation (database system), Consistency (database system)。这里的Isolation其实就是可重复读,uncommited read,commited read,序列化这几种级别;这里的consistency概念就比较简单,比如说满足用户的一些提前设定的constraints,比如某些字段不能小于0. 参考文献【1】【2】【3】
CAP理论就涉及到了分布式的概念,这里的C(consistency)指数据在多个副本中是否保持一致(相同?)。我觉得这个C应该就是大多数情况下的C。在这里就涉及到了强一致性和最终一致性。参考文献【9】【10】
而我们上篇文章的C很小众,指的是在cache中回答的Txn里的queries能否被一个数据库版本识别(即在简单存储KV值的数据库中).
还有一个我觉得容易混的知识点是:比如在单机情况下(不是分布式),DB处理并行的事务,如何保证这一批事务的隔离性(不涉及C),这里的知识点是如何利用2 phase lock或者OCC或者timestamp order或者MVCC等手段来解决并发事务之间的读写/写读/写写冲突。参考参考文献【3】【4】
还有一个更复杂的:分布式事务如何保证ACID?参考文献【6】【7】【8】【9】