双重数据库的维护( 五 )


过时于第二张表中的时间戳的修改操作 , 则它知道这个修改已经被所有其它的处理器DBMP
确认了 。一个被删除的入口因而能够在时间戳满足条件时被移除 。一个处理器DBMP接收
到一个删除修改后 , 对接收到的上次修改的时间戳信息进行排列 。
解决方法的概要
数据库中的一个入口是一个五元组:
(S,V,F,CT,T)
S是用在这个入口的所有引用中的选择项
V是它的当前值
F是一个删除/未删除的标志
CT是这个入口创建的时间戳
T是设置入口的当前V(和/或)F 的修改操作的时间戳
一个时间戳是一个(T , D)对 , 是处理器DBMP区别时间产生的地点 , 处理器DBM是
武断的排序的 , 以至时间戳是完全排序的 。
一个修改操作是一个(处理器DBMP集合 , 入口) , 处理器DBMP集合是入口必须传递
到的DBMP的集合 。
一个修改的时间戳排序表保留在每个处理器DBMP中 。处理器DBMP周期性的试图传
递修改请求给与保留在修改相关的处理器DBMP集合中的那些处理器DBMP 。修改入口当
已经传递到所有的处理器DBMP时则从表中删除 。
当一个处理器DBMP接收到另外一个处理器DBMP的修改请求 , 它比较该请求的时间
戳和数据库中相关入口(假如有的话)的时间戳 , 并且根据比较结果决定操作或忽视这个新
的入口 。
每个处理器DBMP保存一个最迟的从其它每个处理器DBMP接收到的修改操作的时间
戳向量 。
当一个处理器DBMP接收到一个删除修改 , 它发送一个时间戳信息给所有其它的在向
量中包含上次修改操作的过时的时间戳的处理器DBMP 。每个处理器DBMP保存一个从其
它DBMP接收到的最迟时间戳的第二向量 。
一个删除入口假如它的时间戳(T)比从其它处理器DBMP接收到的时间戳第二向量的所
有时间戳旧 , 则从数据库中移除 。
结论
本文提出了各种技术 , 使得许多松耦合的处理器能够维护一个数据库的双重拷贝 , 即使
它们的通信方式是不可靠的 。数据库的拷贝能够保持一致性 , 然而也可能发生反常的行为 。
例如 , 一个用户可以使用一个处理器DBMP对一个选择项赋值 , 而后用另一个处理器DBMP
赋一个新的值 , 却发现第一个值仍然保留在数据库中 。这种情况可能出现 , 假如这两个处理
器DBMP使用时钟 , 因为同步第二次赋值的时间戳在第一次赋值之前 。假如通信通道的可
靠性能够达到一定程度 , 并且处理器过程使用的时钟保持同步 , 那么出现非法的行为的可能
性很小 。然而 , 系统的分布属性表明这种可能性绝对不会是0 。
这里主要提供的注释是通过修改操作和入口的时间戳来明确表示修改操作的时间序列 。
这使得每个处理器DBMP能够选择某个入口的最新的修改 。而且 , 时间戳使得处理器DBMP
能够决定什么时候一个被删除的入口(例如 , 仍然是活动的)不再被引用和再分配 。这些技
术将在构建和建模其它并行和协同操作的系统中有更广泛的应用 。


推荐阅读