参考:
- 【1】Thomas R H. A majority consensus approach to concurrency control for multiple copy databases[J]. ACM Transactions on Database Systems (TODS), 1979, 4(2): 180-209.
在分布式系统中,一个数据有多个副本,由于存在节点间通讯的延迟,当进行一个更新操作时,不可能保证所有副本所有时间都一样,或多或少都会有不相同的的时间差。
一个更新操作要保证副本之间的 相互一致性 和每个副本的 内部一致性 。下面就来介绍这两种一致性的联系。
举例
这个例子用来后边的讨论。
数据库中有两个节点A和B,分别存储3个数据x,y,z,值都为1。
- A:x=1,y=1,z=1
- B:x=1,y=1,z=1
- 内部约束:x+y+z=3
现在有两个更新操作:
- update1:x=-1, y=3
- update2:y=-1, z=3
内部一致性(ACID中的C)
ACID中的C。
内部一致性是一种应用程序指定的不变性。这种一致性关心一个数据库内不同数据项之间的关系不变。保证内部一致性不仅依赖应用程序而且依赖存储系统。【1】【2】关于内部一致性的定义大家的观点比较相同。