在应用定义的系统中一致性单元的复制的制作方法

文档序号:6396131阅读:116来源:国知局
专利名称:在应用定义的系统中一致性单元的复制的制作方法
技术领域
本发明涉及数据复制系统,且尤其涉及在应用定义的体系中数据的复制。
背景技术
自从因特网出现后,复制若干不同的系统的数据组变得越来越重要。在故障情况,复制提供很大的数据冗余。复制还提供更大的数据可用性,更大的负载平衡,以及用户与数据之间地理上更大的邻近性。
基于状态的复制系统利用一个被称为一致性单元的术语来定义紧密一致性的数据组。“紧密一致性”指的是给定的复制在一致性单元中包含全部数据或没有数据,这使得数据的使用者不必在只有部分数据出现时加以补偿。
在基于状态的复制系统中一致性单元的概念不是新的。大多数那样的系统定义一致性单元的某些概念,但只停留在低水平上,即例如在表中具体一行中的所有数据一起发送一起应用的水平上。这些系统强制应用的程序编写者或者裁剪他们的数据以适合系统的预定的低级一致性单元(这不总是可能的),或者写入额外的代码以检测并处理数据的不一致性,如处理不紧密一致的复制数据。
如名称所表明的,应用定义的一致性单元给予应用程序规定对复制系统的紧密一致性的边界的能力。因而,那样的应用能够自由地以任何一种最适合数据的方式模型化其数据(而不是以最适合复制系统的方式),同时减轻了处理不一致状态的复杂性。
与一致性单元相对,改变单元是采用冲突检测和解决方法的数据的粒度(细节),因而是保存“改变历史”的粒度(细节)。在大多数基于状态的复制系统中,改变单元固定于一个粒度或小选项组中的粒度之一,如具体的行或列。
虽然可能定义改变单元和一致性单元相同的系统,有时也希望它们是不同的-或更特别地希望一个一致性单元包含多个改变单元。例如,考虑Customer(客户),Order(订单),和Order Detail(订单细则)数据库的第一复制R1和第二复制R2。若在第一复制R1上创建客户数据、订单数据和订单细则数据,最好数据作为第二复制R2上的一个单元那样一起复制和应用。即在此情况的一致性单元包括客户数据、该客户的所有订单数据和所有该客户订单的订单细则数据。现假设,在以后对该客户的记帐地址在第一复制R1上更新,且在此改变的复制对第二复制R2发生之前,在R2上输入了该客户的新订单。希望的结果是,在不做复制时,复制R1和R2均具有新的记帐地址和新的订单。这样此结果需要这两个更新不冲突,这就提出,记帐地址应在不同于该新订单的改变单元中。存在其它例子来说明需要区分改变单元和一致性单元的粒度,包括限止复制带宽等。还注意到,许多现代的基于状态的复制系统允许一致性单元包含多个改变单元。
允许多点更新数据的现有的复制方案通常复制具体表格的行的纯改变,其中冲突的检测和解决发生在具体表格中一行或一列的粒度上。然而有需要复制语义上相关的诸行,因为它们是同一业务对象的一部分。传播纯改变到目标复制的传统的复制技术能传播改变到以多个表形式的多个行,那些表在语义上通过业务逻辑相关,并能在不同时间作为不同的处理的部分被应用。然而这些方案不保证在“业务对象”层上组合的诸行之间保持一致性。
再次考虑包含来自三个数据库表客户、订单和订单细则的行的数据组的同步。假设用户应用插入新的客户以及新的订单和新的订单细则。传统上,复制不能保证保持在不同复制上应用这些改变的次序,但是可以传播插入项到客户表,随后到订单表插入项,最终到订单细则表插入项。若在应用订单改变和订单细则改变之间存在错误或重大的延迟,看来好像某些订单没有订单细则或对某些订单只能看到部分细则。(此情况一般只是暂时的,下次成功地完成同步时将得到解决)。然而如果象以前按照基于应用的一致性单元所定义的那样,应用要求所有逻辑相关的记录在给定时刻在任何方或者全部不出现或者一起出现,则只出现部分数据组就成了问题。另外例如,若有两个应用(或同一应用的两个实例)在系统上运行——第一个在复制R1上更新,第二个从复制R2上读信息,目的是从复制R2进行读取的应用依赖于那里的业务对象的紧密的一致性,而不限止该应用模型化它们在数据库中的业务对象的方式。
在应用定义的系统中对有效的复制机制有越来越大的需求,它用于高度可伸缩的系统以便复制语义上相关的对象,使得在那些相关对象之间的关系次序约束被维持,且为向其它复制的转播保持在“业务对象”层上的一致性。如前所述,基于状态的复制系统必须一起发送和应用在给定的一致性单元中的所有更新。在单元粒度是固定的这些系统中,实现是相当直接的。然而,对于应用定义的一致性单元,需要附加的逻辑。

发明内容
下面提出本发明的简单概述,以提供对本发明某些方面的基本理解。此概述不是本发明的广泛的概论。不企图识别本发明的关键/重要元素或勾划出本发明的范围。唯一目的是以简化的形式提出本发明的某些概念,作为在后面提出的更详细论述的序言。
本发明涉及一特征,用于在数据集中的复制,该数据集支持配置需要保持“业务对象”一致性的应用。本发明允许应用利用那样的同步行为,它严格地模型化业务对象而不是具体的行。按本主题发明的应用在定义复制范围的同时模型化业务对象,使得复制过程能传播整个业务对象——这就表明其它复制对业务对象的部分图像不可见。
本发明便于使被改变的数据的业务对象被整体传播到其它复制。与按行或按列(传统系统的粒度水平)地传播改变不同,本发明通过将最小的粒度水平提升到在“业务对象”层上语义相关数据的组合,补充了传统的粒度。在关系型数据库的背景中描述应用定义的一致性单元时,本实施例在后面称为“逻辑记录”。在一个实施例中,组成一致性单元的诸行和列连接成公共的“父行”——一个表的唯一的一行,在“父表”中没有两行能是同一一致性单元的部分。父行是应用数据的一部分——例如若订单细则连接到订单,订单连接到客户,选择客户作为公共“父行”意味着与给定客户本身结合的该客户(如通过连接定义)的所有订单的所有订单细则组成单个一致性单元。(请回忆,每个之前的例子中,订单细则记录在一个表中,订单在第二个表,客户在第三表)。对一致性单元(如任何公共的改变历史)的复制元数据保持在“父行”上。通过分析这些行之间的连接以确定给定一致性单元的边界、一起发送任何更新到组成一致性单元的所有行、并应用目标复制上单个处理中有关的任何更新,复制系统保持紧密的一致性。因此,在需要所有逻辑相关的记录在给定时间和给定方整体出现或整体不出现的那些应用中,在一致性单元的有关行之间能保持关系和次序约束。
在另外实施例中,大部分或所有应用数据能存在于单个表中,在此情况下应用希望将其组合到一致性单元的那些数据,没有到另外表中应用数据的公共连接。在目录服务中这种情况可能是普遍的,此时应用的所希望的一致性单元包括任意的目录对象组,每个目录对象可能整体包含在共同的表中。在此情况,相关对象的联系能通过共同的键值进行,如“consistencyUnitKey”目录属性的值。复制元数据能与一个对象一起存储,或存入只由目录复制系统使用的专用表中。
除了在行或列的层次上以外,本发明还利用协调算法来在一致性单元层次上检测和解决冲突,并将解决的数据会聚到目标的复制。
为实现上述和有关目的,这里将结合以下描述及附图描述本发明的某些示例方面。然而,这些方面仅表明了能利用本发明的原理的各种方法中的少数一些,而本发明不试图包括所有那些方面及它们的等效方案。结合附图,从下面考虑的本发明详述中,本发明的其他优点及新颖特征将变得一目了然。


图1示出根据本发明的复制流程图。
图2示出对应用定义的一致性单元,附加逻辑的逻辑记录方案的流程图。
图3示出逻辑记录方案的一致性单元。
图4示出本发明的示范模型。
图5示出对图4的例子的示范数据。
图6示出将一致性单元改变追踪信息分离到它自己的表中的另一种应用定义复制方案。
图7示出可用来执行所揭示的体系结构的计算机的方框图。
图8示出根据本发明的示范计算机环境的大纲框图。
具体实施例方式
定义下面的术语在通篇描述中使用,这里提供它们的定义以帮助理解本主题发明的各方面。
源复制从它发起改变的数据源。
目标复制向它传播改变的数据源。
同步过程将从两个复制来的数据组同步到最终的会聚状态的过程。
冲突当同样的数据元素在两个复制中被修改时,复制系统标记改数据元素为冲突。
冲突检测同步中的过程,它调查在源和目标复制处的元数据,查看修改是否冲突。
冲突解决同步中的过程,它在一旦发生冲突时决定冲突的胜方和负方。
行系属(lineage)捕捉行的改变历史的复制元数据,此元数据捕捉行的不同更新并保持追踪它们的版本。
列版本捕捉列的哪个版本是由哪个复制作出的复制元数据。
墓碑元数据捕捉行的删除的复制元数据。
逻辑记录需要作为一致性单元传播的父行和子行的集合。
逻辑记录连接定义两个表之间的关系,这两个表是将在复制过程中保持的同一逻辑记录的一部分;它类似于在两表之间规定联接。“逻辑记录连接”命名两个表,并规定联接条件来表示两个表之间关系。“逻辑记录连接”条件通常采取TABLE1.COLUMN=TABLE2.COLUMN(表1.列=表2.列)的形式。该条件保证具有与表1中相同列值的表2中所有行将作为“逻辑记录”被复制。如,逻辑记录连接Customer.CustomerID=Order.CustomerID(客户.客户ID=订单.客户ID)表明,给定的客户行和相关的订单现在是同一逻辑记录的一部分。
顶层父行在逻辑记录中起父辈作用的行。
子行逻辑记录的成员行。
逻辑记录的重排引起逻辑记录中的行的成员改变的修改。
父识别符逻辑记录的识别符。这通常是顶层父行的行识别符。
同步定位标(anchor)确定两个复制不同步程度的实体。
现在参考附图描述本发明,所有图中类似的参考号用于参考类似的部件。下面描述中为了解释的目的,列出许多特定的细节,以便提供对本发明透彻的理解。然而很明显,没有这些特定的细节本发明也能实现。在另外的例子中,以方框图形式示出众知的结构和设备,以便于描述本发明。
在本专利申请中使用的术语“组件”和“系统”意在指代与计算机有关的实体,无论是硬件、软硬件组合、软件、或执行中的软件。例如,组件可以是,但不限于,在处理器上运行的过程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。作为示范,在服务器上运行的应用及服务器都可以是组件。一个或多个组件能驻留在过程和/或执行的线程中,且一个组件能位于一台计算机和/或分布在二台或多台计算机之间。
这里用的术语“推论”通常指的是从事件和/或数据捕捉的一组观察,推理或推论系统、环境和/或用户的状态的过程。例如,推论能用于识别特定的环境或活动,或能产生状态的概率分布。推论可以是概率的——即,是根据数据或事件的考虑,计算所关心的状态的概率分布。推论还能指代用于从一组事件和/或数据组成较高层事件的技术。那样的推论导致从一组观察的事件和/或存储的事件数据构成新的事件或活动,而不论那些事件是否紧密地时间相关,以及不论事件和数据是否来自一个或若干事件和数据源。
现参考图1,示出了按本发明的复制流程图。为说明的目的,提供至少一个整体或部分地驻留在每个源位置100和目标位置102的同类的数据集合。在此特定实施例中,源位置100包括第一数据集合(或源复制)104,它能是周期更新的典型网络数据库,且它的更新同步于远程数据集合(或目标复制)106。源复制104能是目标复制106的冗余拷贝,其中对源复制104作出改变,并需要同步到目标复制106;或者是在其中作出改变的源复制104的子集,改变需要同步到目标复制106。同类数据集合也能包括目录服务数据结构。且任何其它同类数据集合需要不同数据集合之间数据的连续更新。
在某时刻,希望协调或“同步”源100和目标102,使得源复制104发送所有改变到目标复制106。在对等环境中,在目标102接收的那些改变随后或从目标102,或直接从源100传播到请求同步的其它远程的数据集合。
更进一步,与应用相关的源复制104和源100接收一个或多个更新。与在源100和目标102处的每段复制数据相关的是元数据。每次改变导致到改变单元及其相关的一致性单元的元数据的更新。源复制104的被改变数据的元数据被用于产生被改变数据的元数据的一致性单元105。如上指出,一致性单元105能是单个改变单元。然而按本发明的新颖的方面,一致性单元105包含一个或多个改变单元,一致性单元105包括源复制104的所有语义相关的被改变数据记录。
在操作中,目标102周期地请求与源100同步,以便于目标复制106与源复制104同步。当源100接收同步请求时,源100列举更新的一致性单元(这里首先表示成包含源复制104的改变)。然后源100列举一致性单元105的所有更新的改变单元,并为给定的一致性单元105打包诸改变单元,以便发送到目标102。目标102包括接收和识别更新的信息的目标改变识别组件108。目标102还包括目标协调组件110,它从改变识别组件108接收列举的改变、检测和解决冲突、并随后会聚改变的数据到目标复制106。改变的数据作为一致性单元传送到目标102,并在单个处理中传播到目标复制106。
可以理解,将复制标记为源或目标是相对于哪个在接收和发送数据。因此为促进本发明的新颖方面,目标102能从目标应用接收改变,在发生同步时该改变将送到源100。源100将包括源改变识别组件112和源协调组件114,用于处理和传播复制改变。
在操作中,源100周期地请求与目标102同步,以便于源复制104与目标复制106同步。当目标102从源100接收同步请求时,目标102列举目标改变单元的更新的一致性单元(也由一致性单元105表示,但包含目标复制106的改变并以反方向传送),列举一致性单元105的所有更新的改变单元,并打包给定的一致性单元的改变单元,以便发送到源100。源改变识别组件108接收并识别更新的信息。源协调组件114从改变识别组件112接收列举的改变,检测并解决冲突,并随后会聚改变的数据到源复制104。改变的数据传送到源100并在单个处理中传播到源复制104。打包的改变能被反复地复制到接收的复制,直到完成同步过程。
现参考图2,示出了对应用定义的一致性单元105的附加逻辑的逻辑记录方案的流程图。虽然为了解释简明起见,方法能示作或描述成一系列活动,可以理解,本发明不受活动的次序的限止,因为按本发明,某些活动能以不同的次序发生和/或与这里示出及描述的其它活动同时发生。例如,本领域的普通技术人员能理解,方法能另选地表示成如在状态图中那样的一系列互相关联的状态或事件。而且为实现根据本发明的方法,不是所有示出的活动都是必需的。
此方案利用逻辑记录的连接来定义在改变单元和与它相关的一致性单元之间的联系(或相互关系)。(在传统系统中,此联系是硬编码的,例如若改变单元是列且一致性单元是行,则对给定改变单元的一致性单元是该列驻留的行)。在此方案中的每个一致性单元与“父行”具有一对一的关系。改变追踪信息与每个一致性单元相关且记录在父行中。因此,一致性单元105包括在为了同步所选择的第一目的数据集合中,所有改变的记录的有关的父和子元数据表。
流程在200开始,在源复制上发生改变。每个改变导致对改变单元及相关的一致性单元的元数据更新。当在用户数据库中发生数据改变时,在用户数据库中的改变追踪机制保持复制元数据的追踪,然后使这些改变在以后能与其它复制同步。在202,目标请求同步。响应于此,对每个更新的单元,如204表明的那样,源列举一个更新的一致性单元。在206,源列举在该一致性单元中所有更新的改变单元,并将它们打包。然后如208所示,源将对给定的一致性单元的打包的改变单元发送到目标。完成冲突检测和解决,这是同步处理阶段,其中比较从同步所涉及的源复制和目标复制来的复制元数据,并检测和解决所有冲突。在210,目标在单个处理中应用打包的改变单元,包括更新一致单元的元数据。在完成冲突检测和解决之后,改变从源复制传播到目标复制的情况下,发生同步处理的阶段。在212,执行校验,判断是否作出其它更新。若是,流程回到204的入口,着手解决下一个改变单元。若否,流程到达停止框,以结束更新过程。现参考图3,示出逻辑记录放案的一致性单元300。对象300只包括一个顶层父行302和多个子行304。第一层306包括标记为Child1,……ChildN的子行,它们具有作为父辈的顶层父行302。标记为Child11,……Child1M和ChildN1,……ChildNZ的第二层子行308具有作为父辈的第一层子行306。根据包含在数据集合中的细则的数目能存在更多的子行层,但未示出。
行的每个层次通过使用逻辑记录连接310相联系。因此,逻辑记录连接310建立了在第一子行312和顶层父行302之间的关系。另外的逻辑记录连接314被用于提供在第一层306的其余子行和顶层父行302之间的逻辑连接。类似地,第二层308的每个子行通过对应的逻辑记录连接316联系它的父行(较高的第一层306的子行)。每个子行表包括识别其父行、行的系属信息和列的版本信息的元数据。
有四个主要的复制处理阶段,每一个在下面作更详细的描述改变追踪、改变列举、冲突检测和解决以及改变应用。
逻辑记录的改变追踪当在用户数据库(或数据集合)发生数据改变时,在用户数据库中的改变追踪机制保持对复制元数据的追踪,这随后允许这些改变在以后时刻与其它复制同步。本发明的一个假设是逻辑记录的每个成员将只具有一个顶层父行302。给定任何子行(310,314,316),有可能明确地确定顶层父行302,因为每个逻辑记录包括仅一个顶层父行及多个子行。参与复制的每个行具有行的识别符,它是GUID值。若该行是逻辑记录的成员,新的父行识别符属性与正规的复制元数据一起保存。所有子行的父行识别符是顶层父行的行识别符。作为逻辑记录一部分的成员行具有包括行系属和列版本的复制元数据,它们使得能完成行和列层次的冲突检测。此外在顶层父行保存新属性“逻辑记录系属”。此属性包含整个逻辑记录的改变历史。正如行系属对每个复制保存使用<replica_id,row_version>(复制_id,行_版本)元组更新该行的输入项,逻辑记录系属对每个复制保存一个输入项,它使用<replica_id,logical_record_version>(复制_id,逻辑_记录_版本)元组修改逻辑记录。
当更新逻辑记录的成员行时,子行的更新行系属如下确定<new row lineage>(<新的行系属>)=<current row lineage>(<当前行系属>)+具有<current replica_id,max version oflogical_record_lineage+1>的一个新的输入项类似地,整个逻辑记录的logical_record_lineage(逻辑_记录_系属)如下确定
<new logical_record_lineage>(<新的逻辑_记录_系属>)=<currentlogical_record_lineage>(<当前逻辑_记录_系属>)+具有<currentreplica_id,max version of logical_record_lineage+1>的一个新的输入项下面描述说明,当逻辑记录的成员行被插入,更新或删除时,改变追踪机制如何修改复制元数据。
对于行插入到逻辑记录,改变追踪逻辑首先确定给定行的父识别符。若该“逻辑记录”的顶层父行的元数据还不存在于元数据表中,必须执行一校验以保证,顶层父行的元数据被插入到复制元数据表中。逻辑记录的“logicalrecord lineage(逻辑记录系属)”随后被更新,以包括新的输入项,它表示“current replica(当前复制)”和“current max version of the logicalrecord(逻辑记录的当前最大版本)+1”。上面的语义捕捉此概念。
关于行更新到逻辑记录,改变追踪逻辑首先确定给定行的父识别符。若更新到该行引起“逻辑记录”的重新排列,则记录它。这是通过审查在更新中涉及的列是否为“逻辑记录连接”定义的一部分而确定的。若在特定逻辑记录中的行的成员不受更新的影响,则该行的系属和顶层父行的“逻辑记录系属”被更新,以反映当前的更新。若存在逻辑记录的重新排列,则成员行的父行已被改变。为了传播此重新排列到其它复制,将对成员行的更新记录为从老的逻辑记录的删除和插入到新的逻辑记录。若成员行具有作为逻辑记录一部分的子行,重新排列也影响子行。
关于行的删除,当在复制处删除子行或父行,追踪逻辑首先对给定的行确定父识别符。删除固有地引起逻辑记录的重新排列。元数据以这样的方式更新,使得此删除与对该逻辑记录的其它改变一起处理。删除被记录成带着正确的父行识别符的墓碑。若发生该逻辑记录的顶层父行的删除,则需要进行处理正如整个逻辑记录从其它复制中删除那样。
逻辑记录的重新排列现参考图4,示出本发明的示范模型。逻辑记录的重新排列要求改变追踪机制更新元数据,使得重新排列以保持逻辑记录语义的方式传播到目标复制。在图4的例子中,提供用CustomerID(客户ID)列唯一识别的客户行的客户表400。客户表400还包括标记为FristName(名),LastName(姓)和Address(地址)的三个列。订单表402用OrderID(订单ID)列唯一识别。订单表402还包括三个列,第一个标记成CustomerID,用于映射到父客户表100,第二列标记成EmployeeID(雇员ID),最后一列称为OrderData(订单日期)。第三个表,OrderDetails(订单细则)表404用OrderDetailID(订单细则ID)列唯一识别。OrderDetails表404包括4列第一个标记成OrderID(订单ID)用于映射到父订单表402,第二列标记成ProductID(产品ID),第三个称为UnitPrice(单价),最后列称为Quantity(数量)。
第一逻辑记录连接406建立在客户表400和订单表402之间,并定义成Customers.CustomerID=Orders.CustomerID。类似地,第二逻辑记录连接108建立在订单表402和订单细则表404之间,并定义成Orders.OrderID=OrderDetails.OrderID。订单表402具有至少两列数据,包括用于映射订单表402回到其父表(客户表400)的CustomerID。未示出订单信息的其它可能的列。类似地,订单细则表404具有至少三列数据,包括用于将订单表402映射回到其父表(客户表400)的CustomerID,和用于将订单细则表404映射回到其父表(订单表402)的OrderID。未示出订单细则信息的其它可能的列。
现参考图5,图示了对图4的例子的示范数据。数据组包括名为“Alfred”的客户的客户、订单和订单细则(数据)。顶层表500表示对客户1“Alfred”的行数据,并包含名字为“Alfred”的CustomerID列。客户“Alfred”具有与其相关的三个订单表示Order_1的行数据的第一订单(Order_1)表502,表示Order_2的行数据的第二订单(Order_2)表504,和表示Order_3的行数据的第三订单(Order_3)表506。第一订单表502具有四个子表(508,510,512和614),分别表示四个与订单Order_1相关的订单细则表(OrderDetail1,OrderDetail2,OrderDetail3,OrderDetail4)的行数据。
第二订单表504具有一个子订单细则表(OrderDetail5)516,它表示与订单Order_2相关的一个订单细则的行数据。第三订单表506具有一个子订单细则表(OrderDetail6)518,它表示与订单Order_3相关的一个订单细则的行数据。
使用图4和图5的数据,考虑第一订单表502的Order_1行的CustomerID列被更新,使得以前是“Alfred”的CustomerID现在变成“David”。此更新根本上改变了以CustomerID=“Alfred”为根的“逻辑记录”中的Order_1行的成员资格。因而订单行Oder_1和相应表508,510,512和514的相应订单细则行(OrderDetail1,OrderDetail2,OrderDetail3,和OrderDetail4)现在属于以CustomerID=“David”为根的不同的“逻辑记录”中。改变追踪逻辑传播对Order_1和OrderDetail1,OrderDetail2,OrderDetail3和OrderDetail4的子行的改变,即以旧父识别符“Alfred”进行删除并用新父识别符“David”进行插入。
逻辑记录的改变列举改变列举是同步过程的阶段,其中列举从前一次源与目标复制之间同步以来,在此复制上发生的改变。
列举对逻辑记录改变的突出特征是对逻辑记录的不同成员行作出多个改变,包括更新、插入和删除,它们应在组中列举。为了这样的实现,改变列举算法使用数据库视图(View),以保证在不同成员表中的行按逻辑记录连接定义被列举。
在图4的示范模型中,在订单402中的行的成员资格是基于在客户表400中的行的成员资格,使用在此两个表之间的“逻辑记录连接”定义406预计此成员资格。类似地,订单细则表404中的行的成员资格是基于在订单表402中的行的成员资格,使用在此两个表之间的“逻辑记录连接”定义408预计此成员资格。为反映此情况,对直接父表产生这样的数据库视图,即是为子表参考视图产生的视图。在示范模型中,在订单表402上的视图参考在客户表400上的视图。类似地,在订单细则表404上的视图参考在订单表402上的视图。
为解释的目的对示范模型提供下面的视图定义View definition for the Customers Table(view logical record Customers)Select[Customers].*,logical_record_parent_identifier=[Customers].[rowguid]from Customers
View definition for the Orders Table(view logical record Orders)Select[Order]*,logical_record_parent_rowguid=[Customers],logical_record_parent_rowguid form[Orders],[view_logical_record_Customers][Customers]where(Order,CustomerID=Customers.Customer ID)View definition for the OrderDetails Table(view logical recordOrderDetails)Select[Order_Details].*,logical_record_parent_rowguid=[Orders],logical_record_parent_rowguid from[Order_Details],[view_logical_record_orders][Orders]where(Order_Details.OrderID=Orders.OrderID)使用上述视图,改变列举算法列举在客户表400、订单表402和订单细则表404中的行。逻辑记录中任何行的删除从复制元数据表中被列举,在那里删除的父识别符匹配被列举的逻辑记录的父识别符。为了只处理在目标复制中尚不可见的来自源复制的增量改变,改变列举是基于在源和目标复制之间协商的同步定位标。
冲突检测和解决冲突检测和解决是同步过程的阶段,其中来自涉及同步的源及目标复制的复制元数据被比较,且所有冲突被检测和解决。除了在行的层及列的层次上之外,使用逻辑记录的此新颖方面允许同步过程还在逻辑记录层上检测冲突。此外,冲突解决的选择能是在逻辑记录层或行的层次上。关于使用什么冲突检测策略和冲突解决策略的决定留给具体的应用选择,因为应用更合适决定哪个策略更适宜。
冲突检测和解决-逻辑记录层当冲突检测是在逻辑记录层时,在源复制上属于逻辑记录L1的行R1的列C1中的改变与在目标复制上属于同样的逻辑记录L1的行R2的列C2中的改变相冲突。从源和目标复制来的逻辑记录系属被比较,以检测冲突。若冲突解决策略选择逻辑记录L1的源复制的版本为胜者,胜出的源复制的逻辑记录L1完全改写负的目标复制的逻辑记录L1。
冲突检测——行的层次/解决——逻辑记录层次当冲突检测在行的层次时,在行R1中的改变不与在行R2中的改变冲突,即使它们均属于同一逻辑记录。对于在行的层次检测的冲突,冲突应已在逻辑记录层次检测到。
然后比较来自源和目标复制的逻辑记录系属,若表明有冲突,来自两个复制的行的系属被比较。若冲突解决策略选成逻辑记录L1的源复制版本为胜者,胜出的来自源复制的逻辑记录L1将完全改写在目标复制中负的逻辑记录L1。
冲突检测——列的层次/解决——逻辑记录层次当冲突检测在列的层次时,只有在同一列和同一行的改变是冲突的。发生此情况时,逻辑记录层的冲突和行的层的冲突已经发生。因此首先比较逻辑记录的系属,若表明有冲突,随后比较行系属。若行系属的比较表明有冲突,则比较列版本,以确认是否有冲突。
在冲突未发生在检测层规定的层上,但(实际上)已发生在较高的层上的所有情况中,在较低层(在逻辑记录中的行,或行中的列)的数量被“合并了”。例如,若行层次的冲突检测正在使用,则行R1这一侧中的改变与R2这另一侧中的改变不冲突,即使它们均属于同一逻辑记录。这是由于如由应用所规定,冲突在“逻辑记录层”上检测,而不是在行的层上。结果是在两侧上“合并”的逻辑记录,两侧均保留改变(在R1和R2中)。特别地更新复制元数据,以表明合并的逻辑记录系属。行的系属不是合并的系属,因为对两个不同的行各有单方面的改变。
类似地,若列层次的冲突检测在使用,则在源复制上行R1的列C1中的改变与目标复制上同一行R1的列C2中的改变不冲突。这是因为如由应用规定,冲突在行的层上检测而不是在列的层上。其结果是合并的逻辑记录,包含对行R1的合并值,它反映了从源复制来的列C1改变和从目标复制来的列C2改变。对行R1的复制元数据包含对R1的合并的行系属。此外,逻辑记录具有合并的逻辑记录系属。
若在应用规定的层上确凿地检测到冲突,则胜出的逻辑记录系属改写负的逻辑记录系属,且在胜出的逻辑记录中带有任何改变的所有行被拷贝到负的一方。
下面例子用带有一个父行P1和二个子行C1和C2的逻辑记录示出不同的冲突检测和解决的选项。打星号的C1*表明C1行在给定的复制上被更新。未打星号的C1表明C1行在给定的复制上未改变。当检测到冲突时,冲突解决策略挑选源复制或目标复制作为胜方,这里的例子以对两个选项的最终值为前提。
例1.在逻辑记录层的检测和解决-分离的行

在例1中,在逻辑记录中两个分离的行(子行C1和子行C2)已被更新。因为执行逻辑记录层的检测,冲突被检测到。此外,因为已选择逻辑记录层次的解决,来自源或目标复制的整个胜出逻辑记录将出现在最终的会聚结果中。
例2.在逻辑记录层的检测和解决-同一行

在例2中,在源和目标复制处每个逻辑记录中的同一行已被更新。因为执行逻辑记录层检测,检测到冲突。但因为已选择了逻辑记录层次的解决,从源或目标复制来的整个胜出的逻辑记录将出现在最终会聚的结果中。
例3.行层次的检测和逻辑记录层次的解决-分离的行


在例3中,更新了逻辑记录中两个分离的行。因为执行行层次的检测,冲突未检测到。因此在最终会聚结果中出现来自源复制的C1*更新和来自目标复制的C2*更新。
例4.行层次的检测和逻辑记录层次的解决-同一行

在例4中,更新了在源和目录复制中每个逻辑记录中同一行。因为执行行层次的检测,冲突被检测到。但因为已选择逻辑记录层次的解决,从源或目标复制的整个胜出的逻辑记录将出现在最终的会聚结果中。
例5.行层次的检测和行层次的解决-分离的行

在例5中,已更新逻辑记录中两个分离的行。因为执行行层次的检测,未检测到冲突。因此来自源复制的C1*更新和来自目标复制的C2*更新出现在最终的会聚结果中。
例6.行层次的检测和行层次的解决-同一行

在例6中,在源和目标复制,每个逻辑记录中的同一行已被更新。因为执行行层次的检测,冲突被检测到。根据源或是目标胜出,来自源复制的C1*更新或来自目标复制的C2**更新出现在最终会聚结果中。因为来自目标复制的C2*更新是单方的,它将出现在最终的会聚的结果中。
对逻辑记录改变应用改变应用是同步过程的阶段,其中在完成冲突检测和解决之后从一个复制来的改变被传播到另一个复制。因为改变的列举已经将具体的行装入逻辑记录中,在目标复制处这些改变的应用必须保证,这些改变在数据库处理中被应用。在应用该处理中的任何失败将导致改变的应用被重试,然而重试应保持该逻辑记录的语义。
现参考图6,示出到应用定义的复制的另外方案,它将一致性单元改变追踪信息分离到分离表600。如前所述,每个改变单元只与一个一致性单元相关。此相关性可以是显式的(每个改变单元能用一键值加标签,该键值唯一地识别一致性单元,而键值是其一个成员)或隐含的(如在逻辑记录连接中,其中由Customers.CustomerID=Order.CustomerID识别该关系)。从而包含应用数据的任何表的任何行能与任何一致性单元相关。
对于此逻辑记录方案,在此方案中最好是,应用将其所有应用对象(在目录服务器中总的对象的一小部分)放入一个一致性单元,以便传播到目标复制。这通过使用表600实现。为达到那样的结果,提供一个实现方法,使得创建唯一的标签(即GUID)。该标签作为特定LDAP属性(可能是“Consitency UnitKey”)的值被写在每个应用对象上。在第一应用对象上写唯一的标签的活动触发了目标服务器在一致性单元改变追踪表600的第一列602中创建新的输入项(如Tracking Data1)以及在第二列604中的有关的标签值(如Tag1)。更新每个应用对象(包括第一个)的活动更新一致性单元改变追踪信息,以发信号通知,新的应用对象已经进入该一致性单元,并更新在应用对象上的改变历史信息,以发信号通知,下一次一致性单元作为一致性单元的一部分被复制时,该应用对象应用与该一致性单元一起复制。
类似地,逻辑记录连接关系(LRL)能插入到表600。在第二应用对象上建立LRL的活动触发目录服务器,创建在一致性单元改变追踪表600的第一列602中的新的输入项(如Tracking Data3)和在第二列604中的有关逻辑记录连接值(如LRL1)。更新每个应用对象(包括第一个)的活动更新了一致性单元改变追踪信息,以发信号通知,新的应用对象已经进入该一致性单元,并更新了在应用对象上的改变历史信息,以发信号通知,下一次一致性单元作为一致性单元的一部分被复制时,该应用对象应该与该一致性单元一起复制。
此方案的一个例子在于在目录服务(如X.500或LDAP(简便目录访问协议)目录)中应用定义的一致性单元的潜在使用。许多目录服务使用相对一致的表建模;而在关系模型中,“用户”和“打印机”数据类型趋于存储在类型专有的表中,目录服务试图以趋于为所有数据类型导致单一表600的方式,在数据类型之间(如办公室位置或经理)利用共同元素。
考虑示例的安全应用,它使用LDAP目录服务存储对认证报文的路由信息。此信息包括全局的配置对象和对每个认证服务器的对象。每个认证服务器对象包含指向路由层次中的父辈的指针。该应用要求,当它将认证服务器对象和它们的父辈关系组合到一张图时,该图是生成树——如每个节点(认证服务器)直接或间接地连到每个其它节点,且该图中没有环的树。若每个认证的服务器对象被独立地复制,且进而若在复制R1上改变树的层次且该改变仅部分地复制到复制R2,则在R2的数据不再导致生成树。例如,假设一开始在复制R1和R2上存在对象O1、O2和O3。对象O2和O3两者的父辈是对象O1,而对象O1的父辈是空。在复制R1上,管理员改变该层次关系(在单个处理中),使得对象O2是根;如对象O1的父辈被设成对象O2,对象O2的父辈被删除,且对象O3的父辈改变到对象O2。若复制R2在一个处理中应用更新到对象O1,而该处理不应用改变到对象O2,则读出复制R2的应用将看到一个环——对象O2的父辈是O1,而对象O1的父辈是O2。
现参考图7,示出可用来执行所揭示的体系结构的计算机的方框图。为了提供用于本发明的各种方面的附加的环境,图7和下面的讨论试图提供对合适的计算环境700的简单一般的描述,在其中能实现本发明的各个方面。虽然上面以能在一个或多个计算机上运行的计算机可执行指令的一般环境中描述了本发明,本领域的普通技术人员可以认识到,本发明也能结合其它程序模块和/或作为软硬件的组合实现。通常,程序模块包括例行程序、程序、组件、数据结构等,它们完成特定任务或实现特定的抽象数据类型。而且,本领域的普通技术人员将认识到,本发明的方法能用其它计算机系统配置实现,包括单处理器或多处理器计算机系统、小型计算机、大型机、个人计算机、手持计算设备、基于微处理器的或可编程的消费型电子设备等,每一个能工作耦合到一个或多个有关设备。本发明的示出的方面能在分布式计算环境中实现,其中某些任务由通过通讯网络连接的远程处理设备完成。在分布计算环境中,程序模块可以同时位于本地和远程记忆存储设备中。
再次参考图7,实现本发明的各个方面的示例环境700包括计算机702,计算机702包括处理单元704、系统存储器706和系统总线708。系统总线708连接包括(但不限于)系统存储器706的系统组件到处理单元704。处理单元704能是各种市售处理器的任何一种。双微处理器体系结构和其它多处理器体系结构也能用作处理单元704。
系统总线708能是若干种总线结构的任一种,包括存储总线或存储控制器、外围总线和使用各种市售总线体系结构的任一种的局部总线。系统存储器706包括只读存储器(ROM)710和随机存储器(RAM)712。包含如在起动期间帮助在计算机702中的各部件之间传输信息的基本例行程序的基本输入/输出系统(BIOS)存储在ROM710中。
计算机702还包括硬盘驱动器714、磁盘驱动器716(如读写可移动磁盘718)和光盘驱动器720(如读CD-ROM盘722或读写其它光介质)。硬盘驱动器714、磁盘驱动器716和光盘驱动器720能分别通过硬盘驱动器接口724、磁盘驱动器接口726和光盘驱动器728连接到系统总线708。驱动器及其相关的计算机可读介质为数据、数据结构、计算机可执行指令等提供非易失性存储。对计算机702,驱动器和介质以合适的数据格式容纳存储广泛传播的程序。虽然上面对计算机可读介质的描述指的是硬盘、可移动的磁盘和CD,本领域的普通技术人员应理解,诸如zip驱动器、盒式磁带、闪存卡、数字视频盘、卡式磁带等可由计算机读取的其它类型的介质也能在示例操作环境中使用,而且任何那样的介质能包含用于实现本发明的方法计算机可执行指令。
一系列程序模块能存入驱动器和RAM712,包括操作系统730、一个或多个应用程序732、其它程序模块734和程序数据736。可以理解,本发明能用各种市售的操作系统或操作系统的组合实现。
用户能通过键盘738和如鼠标740那样的定位设备输入命令和信息到计算机702。其它输入设备(未示出)能包括麦克风、IR遥控器、操纵杆、游戏手柄、卫星碟、扫描仪等。这些和其它输入设备常常通过连接到系统总线708的串行接口742连接到处理单元704,但也能通过其它接口连接,如并行端口、游戏端口、通用串行总线(“USB”)、IR接口等。监视器744或其它类型显示设备也通过如视频适配器746那样的接口连接到系统总线。除监视器744以外,计算机通常包括其它外围设备(未示出),如扬声器、打印机等。
计算机702能使用到一个或多个远程计算机(如远程计算机748)的逻辑连接在网络环境中操作。远程计算机748可以是工作站、服务器计算机、路由器、个人计算机、便携计算机、基于微处理器的娱乐工具、对等设备或其它公共网络节点,并通常包括相对于计算机702描述的许多或所有部件,虽然为简单起见,只示出存储设备750。画出的逻辑连接包括局域网(LAN)752和广域网(WAN)754。那样的网络环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
在LAN网络环境中使用时,计算机702通过网络接口或适配器756连接到局域网752。在WAN网络环境使用时,计算机702通常包括调制解调器758,或连接到LAN上的通讯服务器,或具有用于建立在广域网(如因特网)754上的通讯的装置。内置或外接的调制解调器758经过串行接口742连接到系统总线708。在网络环境中,相对于计算机702画出的程序模块或其部分,能存储在远程记忆存储设备750。可以理解,示出的网络连结是示例的,能使用在计算机之间建立通讯链路的其它装置。
参考图8,示出根据本发明的示范计算环境800的原理方框图。系统800包括一个或多个客户802。客户802能是硬件和/或软件(如线程、过程、计算设备)。例如,客户802能通过应用本发明包容Cookie程序和/或有关的环境关系信息。系统800还包括一个或多个服务器804。服务器804也能是硬件和/或软件(如线程、过程、计算设备)。例如通过应用本发明,服务器804能包容线程以完成转换。在客户802和服务器804之间的一种可能的通讯能是采用适应于在两个或多个计算机过程之间发送的数据包的形式。例如,数据包能包括Cookie程序和/或有关的环境关系信息。系统800包括通讯架构806,它能被用来方便在客户802和服务器804之间的通讯。客户802在操作上连接到一个或多个客户数据存储808,它们能被用于存储客户802本地的信息(如Cookie和/或有关的环境关系信息)。类似地,服务器804在操作上连接到一个或多个服务器数据存储810,它能被用于存储服务器804本地的信息。
上面已描述的包括本发明的例子。当然,不可能为了描述本发明而描述组件或方法的每个可以想象的组合,但是本领域的普通技术人员可以认识到,可能有本发明的许多另外的组合和变更。因而,本发明试图包括落在附后权利要求的精神和范围内的所有更改、修改和变化。而且,就在专利详细描述或权利要求中使用的术语“包括”含义范围而言,这样的术语试图以类似于术语“包含”的方式看作是包容性的,因为“包含”在权利要求中使用时解释成一个迁移词。
权利要求
1.一个便于数据复制的系统,包括改变追踪组件,追踪与一致性单元的复制版本相关的元数据,所述一致性单元覆盖一个或多个同类的数据集合;和协调组件,分别比较元数据,使用元数据解决冲突,并会聚一致性单元的版本。
2.如权利要求1的系统,其特征在于一致性单元的复制版本在单个处理中会聚。
3.如权利要求1的系统,其特征在于元数据与逻辑记录关系相连结。
4.如权利要求1的系统,其特征在于与逻辑记录层次、行的层次和列的层次中至少一个相关地检测冲突。
5.如权利要求4的系统,其特征在于通过比较在一致性单元的逻辑记录层上的逻辑记录系属元数据与在复制版本的逻辑记录层上的逻辑记录系属元数据,在逻辑记录层上解决冲突,随后按预定的冲突策略选择胜出的逻辑记录系属元数据。
6.如权利要求4的系统,其特征在于通过在逻辑记录层上比较一致单元和复制版本的各自的逻辑记录系属以检测冲突,从而在行的层上解决冲突,随后比较冲突行的对应的行系属以选择胜出者,胜出者按预定冲突策略选择。
7.如权利要求4的系统,其特征在于通过在逻辑记录层上比较一致性单元和复制版本的各自的逻辑记录系属以检测冲突,从而在列的层上解决冲突,随后比较冲突行的对应的诸行系属以检测冲突,响应于在行的层上检测到冲突,比较列数据的诸版本以确认冲突的存在,通过按预定的冲突策略选择胜出的列解决冲突。
8.如权利要求4的系统,其特征在于在行层次上的记录包括行的系属数据,在列层次上的记录包括列的版本数据,使得在行层次上的冲突检测使用行的系属数据,在列层次上的冲突检测使用列的版本数据。
9.如权利要求1的系统,其特征在于协调组件使用有关的逻辑记录元数据在逻辑记录层解决冲突,该逻辑记录元数据包括追踪一致性单元的改变历史的逻辑记录系属数据。
10.如权利要求1的系统,其特征在于协调组件使用行的元数据在行的层上解决冲突,该行的元数据包括追踪行的元数据的改变历史的行的系属数据,该历史包括更新该行的复制和更新该行的复制的版本中至少一个的信息。
11.如权利要求1的系统,其特征在于协调组件使用列版本元数据在列的层解决冲突,该列版本元数据追踪更新列版本的复制的识别数据和列版本中的至少一个的信息。
12.如权利要求1的系统,其特征在于当用复制版本会聚一致性单元失败时,一致性单元的元数据的语义关系被保持。
13.如权利要求1的系统,其特征在于当冲突在较高层上检测到时,协调组件在较低层上会聚数据。
14.如权利要求1的系统,其特征在于通过按预定的冲突策略选择胜出的逻辑记录和负的逻辑记录,由协调组件解决冲突,并用胜出逻辑记录的逻辑记录系属改写负的逻辑记录的逻辑记录系属。
15.如权利要求1的系统,其特征在于用改变追踪组件追踪在复制的版本的元数据中的改变,使得一致性单元能被会聚。
16.如权利要求1的系统,其特征在于协调组件利用改变列举以方便对一致性单元的多个行的改变,这样的改变包括更新、插入和删除中的至少一个。
17.如权利要求16的系统,其特征在于改变列举利用视图定义以保证按逻辑记录连接定义进行列举。
18.一种计算机,包括权利要求1的系统。
19.一种有多个客户和服务器的网络,包括权利要求1的系统。
20.一种便于数据复制的方法,包括追踪与一致性单元的复制版本有关的元数据,所述一致性单元覆盖一个或多个同类数据集合;分别地比较元数据;使用元数据解决冲突;和会聚一致性单元的复制版本。
21.如权利要求20的方法,其特征在于一致性单元的复制版本在单个处理中会聚。
22.如权利要求20的方法,其特征在于还包括将元数据与逻辑记录关系连接的步骤。
23.如权利要求20的方法,其特征在于还包括检测与逻辑记录层次、行的层次及列的层次中至少一个有关的冲突。
24.如权利要求23的方法,其特征在于通过下列步骤在逻辑记录层上解决冲突比较在一致性单元的逻辑记录层的逻辑记录系属元数据与复制版本的逻辑记录层的逻辑记录系属元数据;和按预定的冲突策略选择胜出的逻辑记录系属元数据。
25.如权利要求23的方法,其特征在于在行的层解决冲突包括下列步骤在逻辑记录层上比较一致单元和复制版本的各自的逻辑记录系属,以检测冲突;和比较冲突行的分别的行系属;和按预定的冲突策略选择胜出者。
26.如权利要求23的方法,其特征在于在列的层上解决冲突还包括下列步骤在逻辑记录层上比较一致性单元和复制版本的各自的逻辑记录系属,以检测冲突;比较冲突行的各自的行的系属以检测冲突;比较列数据的各版本以确认存在冲突;和按预定的冲突策略选择胜出的列。
27.如权利要求23的方法,其特征在于在行层次上的记录包括行的系属数据,而在列层次上的记录包括列版本数据,使得在行层次上的冲突检测使用行系属数据,而在列层次上的冲突检测使用列版本数据。
28.如权利要求20的方法,其特征在于使用有关的逻辑记录元数据在逻辑记录层解决冲突,该逻辑记录元数据包括追踪一致性单元的改变历史的逻辑记录系属。
29.如权利要求20的方法,其特征在于使用行的元数据在行的层上解决冲突,该行的元数据包括追踪行的元数据的改变历史的行的系属数据,该历史包括更新该行的复制和更新该行的复制的版本中至少一个的信息。
30.如权利要求20的方法,其特征在于使用列版本元数据在列的层解决冲突,该列版元数据追踪更新列版本的复制的识别数据和列版本中的至少一个的信息。
31.如权利要求20的方法,其特征在于当用复制版本会聚一致性单元失败时,一致性单元的元数据的语义关系被保持。
32.如权利要求20的方法,其特征在于当冲突在较高层上检测到时,在较低层上会聚数据。
33.如权利要求20的方法,其特征在于解决冲突还包括下列步骤按预定的冲突策略,选择胜出的逻辑记录和负的逻辑的记录;和用胜出的逻辑记录的逻辑记录系属改写负的逻辑记录的逻辑记录系属。
34.如权利要求20的方法,其特征在于还包括用改变追踪组件追踪在复制版本的元数据中的改变,使得一致性单元能被会聚的步骤。
35.如权利要求20的方法,其特征在于还包括列举改变以方便改变一致性单元的多个行的步骤,这样的改变包括更新、插入和删除中至少一个。
36.如权利要求35的方法,其特征在于还包括提供视图定义以保证按逻辑记录连接定义进行列举的步骤。
37.一种便于数据复制的方法,包括追踪在同类数据集合的源数据集合和第一目标数据集合之间语义上相关的数据的变化;按逻辑记录关系,连接与语义上相关的数据的改变有关的元数据,以形成一致性单元;和在单个处理中用同类数据集合的第二目标数据集合会聚数据改变的一致性单元。
38.如权利要求37的方法,其特征在于还包括通过比较第二目标数据集合与一致性单元的改变而检测冲突;和通过按预定的冲突策略选择胜者而解决冲突。
39.如权利要求38的方法,其特征在于结合逻辑记录层次、行的层次和列的层次中的至少一个检测冲突。
40.如权利要求39的方法,其特征在于,通过首先比较源数据集合和第二目标数据集合的各个逻辑记录系属,在逻辑记录层次、行的层次以及列的层次中的每一个上检测和解决冲突。
41.如权利要求39的方法,其特征在于在行的层上的记录包括行的系属数据,而在列的层上的记录包括列版本数据,使得在行的层上的冲突检测使用行系属数据,而在列的层上的冲突检测使用列版本数据。
42.如权利要求40的方法,其特征在于当一致性单元的会聚被重试时,语义上相关的改变的语义被保持。
43.如权利要求38的方法,其特征在于还包括当冲突在较高层上检测到时,在较低的层上会聚数据。
44.如权利要求37的方法,其特征在于还包括检测和解决在数据一致性单元和第二目标数据集合之间的冲突的步骤,通过按预定的冲突策略选择胜出的逻辑记录和负的逻辑记录,并用胜出的逻辑记录系属改写负者的逻辑记录系属来解决冲突。
45.如权利要求37的方法,其特征在于还包括用改变追踪组件追踪在第一目录数据集合中的改变的步骤,该改变追踪组件追踪复制元数据,使得能用第二目标数据集合会聚数据改变的一致性单元。
46.如权利要求37的方法,其特征在于该数据集合是关系型数据库。
47.一种便于数据复制的系统,包括用于识别在同类数据集合的源数据集合和第一目标数据集合之间的语义上相关的数据改变的装置;用于按逻辑记录关系连接与语义相关的数据改变有关的元数据,以形成一致性单元的装置;和用于在单个处理中用同类数据集合的第二目标数据集合会聚数据改变的一致性单元的装置。
48.一种用于方便数据复制的系统,包括用于识别与一致性单元的复制版本相关的元数据的装置,所述一致性单元覆盖一个或多个同类数据集合;用于分别地比较元数据的装置;用于使用元数据解决冲突的装置;和用于会聚一致性单元的复制版本的装置。
49.一种用于方便数据复制的方法,包括识别在源数据集合和第一目标数据集合之间的数据改变;创建一致性单元改变追踪信息表,所述表被传播到第二目标,作为一致性单元;和在单个处理中用第二目标数据集合会聚数据改变的一致性单元。
50.如权利要求49的方法,其特征在于所述表包括唯一的标签和逻辑记录连接中的至少一个,其中所述标签和逻辑记录连接都定义了改变单元和一致性单元之间的联系。
51.如权利要求50的方法,其特征在于还包括响应于在第一目标数据集合上写入唯一的标签而更新所述表的步骤。
52.如权利要求49的方法,其特征在于源数据集合代表一个目录服务体系结构。
全文摘要
在应用定义的系统中复制一致性单元的体系结构。在源复制中的改变影响在改变单元及有关的一致性单元中的元数据改变。响应于由目标作出的同步请求,源列举更新的一致性单元、列举一致性单元的所有更新的改变单元、打包那些改变单元、送出打包的改变单元以发送到目标。在检测和解决冲突之后,目标在单个处理中应用该打包的改变单元。过程对每个改变持续进行。
文档编号G06F17/30GK1534518SQ20041003224
公开日2004年10月6日 申请日期2004年3月26日 优先权日2003年3月27日
发明者C·纳拉亚南, C 纳拉亚南, R·P·辛格, 辛格, J·B·帕勒姆, 帕勒姆 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1