在用主副本法解决多副本的并发控制问题上,如何从多个副本中确定一个主副本,怎样确定一共有多少个副本。若发生故障,如何重新选择一个新的主副本。
现在用delphi中com+组件以及SQLServer2000做这个,构建了客户端,服务器,请问一下中间构建一个协调对象是不是更好???
我也在自学中,各位帮帮忙了。
如果是使用副本的话,应该是用以锁定为基础的并发控制。你先想一下在集中式数据库开发锁定机构的过程中,是怎么做的。其实已经隐含的假设了每一个数据项目只有一份副本。也就是说一个事务处理只要发现一个数据项目副本处于锁定状态,那么它就可以知道另一个事务处理正在处理该数据项目了。那么再看看分布式数据库,一般都要求存储在不同地点的数据项目之间具有冗余性,那么对存储在不同地点的同一数据项目的两个副本持有冲突锁定的两个事务处理有可能不知道他们的相互存在。在这种情况下,锁定根本没有用。
为了避免这个问题,DTM(分布式事务处理管理程序)必须以以下方法翻译一个由一个主角所提供的、对于一个数据项目的锁定基元:对一个冲突的事务处理来说,不知道这个锁定是不可能的。实现这个要求的最简单的途径是,给存储该数据项目的局部副本的所有地点上的全部 LTM(局部事务处理管理程序)提供局部锁定。这种方法就可以把一个锁定基元变换成和锁定的数据项目的副本数一样多的锁定基元。这种方法很有效,因为两个冲突的事务处理在它们要求锁定的所有地点上将能够发现它们的冲突。而且这种方法是冗余的。