首页 理论教育复制控制方法基本分类-分布式数据库技术

复制控制方法基本分类-分布式数据库技术

【摘要】:Gray等学者使用两个参数对复制控制方法进行了分类。如图11.2所示,纵向方向我们分为渴望的与懒惰的两类技术。横向方向分为主本更新方式和随处更新方式,从而可以将复制控制算法分成四类。图11.2同步策略分类1.积极原本方法积极原本方法是无副本事务执行的直接扩展。读操作与积极原来方法的类似。Gray等将协议分成积极和懒惰两大类,随之大量的复制协议被开发出来。其不利因素是响应时间取决于系统中最晚给出响应的机器。

Gray等学者使用两个参数对复制控制方法进行了分类。这两个参数是事务位置(transaction location)和同步点(synchronization point)。事务位置指的是事务在哪里执行。对只读事务来说,在有副本的地方都能执行。更新事务就不一样了,这类事务中至少有一个写操作。这种事务在哪儿执行,有两种可能性:在数据的原件(或主本,primary copy)处更新;或者在任意一个副本处更新。采用在数据的主本处更新策略,在该节点检测并发更新事务的冲突。而在任意副本处更新的并发控制策略更复杂。前者的灵活性比后者的灵活性差。

简言之,事务位置说明的是地点:何地(where);同步点说明的是时间:何时(when)。

同步策略是指确定何时让副本协调达到一致性。在渴望复制(eager replication)中,事务更新的协调发生在事务提交之前。在懒惰复制(lazy replication)中,事务更新是在提交后进行异步传递的。渴望复制常常会引起较长的客户端响应时间,但提供了强一致性。

如图11.2所示,纵向方向我们分为渴望的与懒惰的两类技术。横向方向分为主本更新方式和随处更新方式,从而可以将复制控制算法分成四类。

图11.2 同步策略分类

1.积极原本方法

积极原本方法是无副本事务执行的直接扩展。例如,在每个副本处,使用严格的两阶段封锁(2PL)。当客户端对副本R提交事务Ti(Ti是R处的一个本地事务)时,R返回对Ti的响应。更新事务只允许施加在主本(primary)上,读操作则可以在任意副本的本地实施。在访问数据项的本地版本前,需要施加一个共享锁。对写操作而言,则需要施加对主本的排外锁。更新完成后,需要运行2PC,主本节点扮演着协调者的角色,将更新结果同步到其余副本所在的节点。(www.chuimin.cn)

2.积极随处更新方法

积极随处更新方法传统并发控制机制的扩展,提供全局可串行化执行,强调正确处理故障。例如,只读事务和更新事务都可以在副本处的本地协调执行。读操作与积极原来方法的类似。写操作则在所有副本所在处执行。本地副本向所有其他副本广播更新请求,申请一个排外锁,然后实施更新。它等待所有其他副本处发送来的响应。所等待的答复可能会产生冲突,不同副本处的操作会有不同的序。换言之,无法保证所有远程副本按相同的次序执行,这样就有可能发生死锁。本地事务夭折的处理和主本协议一样。当一个副本收到另一个副本本地提交事务的写请求时,需要申请排外锁,执行操作,并发送答复信息给该副本。若检测到死锁,则可能涉及远程事务,系统可以终止远程事务。

3.懒主本方法

与积极随处更新方法相比,懒主本方法在事务执行期间,副本间不进行通信。事务可以在本地执行和提交,在本地提交后,再将更新事务传递给其他副本。将懒主本方法主本方案结合起来,该方法显得很简单。还是以2PC为例:只读事务和积极随处更新方法的只读事务一样执行。更新事务只可在主本处提交。

4.懒惰随处更新方法

该方法可以对任意副本执行更新事务,提交后再传播给其他副本。这里的写操作可以在所有副本处处理,然后向其他副本发送这个本地事务的写集(writesets)。其他副本收到这个写集,就执行修改操作。

Gray等将协议分成积极和懒惰两大类,随之大量的复制协议被开发出来。在积极算法中使用2PC,本地副本只能在所有副本都执行完后才能提交。因此,所有数据副本是虚拟一致的(virtually consistent)。其不利因素是响应时间取决于系统中最晚给出响应的机器。许多新协议也不运行2PC。一旦本地副本获悉其他远程副本会“最终”提交,就可以提交。典型要求是所有的副本都收到写操作和写集,以保证每个副本都遵循相同的全局可串行化序。但不必要求远程副本在本地副本提交时已经执行写操作。这意味着在副本中虽然执行了某个“契约”协议,但不必包括事务的处理或将日志写入磁盘。