CN101933014B - 用于复制和同步的系统和方法 - Google Patents
用于复制和同步的系统和方法 Download PDFInfo
- Publication number
- CN101933014B CN101933014B CN2008801180235A CN200880118023A CN101933014B CN 101933014 B CN101933014 B CN 101933014B CN 2008801180235 A CN2008801180235 A CN 2008801180235A CN 200880118023 A CN200880118023 A CN 200880118023A CN 101933014 B CN101933014 B CN 101933014B
- Authority
- CN
- China
- Prior art keywords
- duplicate
- entry
- increment
- data update
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明的实施例提供一种对等且多线程的复制和同步机制。本发明的实施例还可以在复制品之间的通信丢失的情况下实现可用替换服务并在复制品之间的通信恢复时实现完全自动恢复。复制和同步机制还可以提供条目级同步和对事务的支持。复制和同步机制将已由于对等端之间的通信丢失而独立地进行的改变合并。
Description
相关申请
本申请涉及发明人为Kevin Wakefield的2007年4月10日提交的题为“Improved Data Access In Distributed Server Systems”的美国专利申请序号11/783,537;发明人为Kevin Wakefield的2007年4月10日提交的题为“Improved Sub-Tree Access Control In Network Architectures”的美国专利申请序号11/783,539;发明人为Kevin Wakefield的2007年4月10日提交的题为“Alias Hiding In Network Data Repositories”的美国专利申请序号11/783,586;发明人为Kevin Wakefield的2007年4月10日提交的题为“Variant Entries In Network Data Repositories”的美国专利申请序号11/783,585;发明人为Kevin Wakefield的2007年4月10日提交的题为“Adaptation In Network Data Repositories”的美国专利申请序号11/783,553;发明人为William M.Bondy的2007年4月10日提交的题为“Nomadic Subscriber Data System”的美国专利申请序号11/783,550;发明人为Kevin Wakefield的2007年4月10日提交的题为“Improved JournalingIn Network Data Architectures”的美国专利申请序号11/783,549;发明人为Phil Davies、Graham North、Ian Lucas、和MiIi Verma的2007年4月10日提交的题为“Improved Data Access In Home Subscriber Servers”的美国专利申请序号60/907,594;发明人为Nick Prudden的2007年4月10日提交的题为“Indirect Methods In Network Data Repositories”的美国专利申请序号11/783,588;以及发明人为Nick Prudden的2007年4月10日提交的题为“Improved Timing Device and Method”的美国专利申请序号11/783,541。这些申请的内容为了所有目的整体地通过引用结合到本文中。
技术领域
本发明的实施例涉及用于提供网络数据服务器中的复制(replication)和同步机制的系统和方法。更特别地,本发明的实施例涉及使得能够实现稳健、高速的数据访问以供在具有许多订户的通信网络中使用的系统和方法,所述订户的各自数据可以被部署在集中式数据仓库(repository)中以供在网络内运行的各种应用程序访问。
背景技术
现有技术中的复制和同步机制具有许多限制。这些限制包括单线程和单进程机制。目录系统代理(DSA)中的一个服务器通常充当对该DSA的所有更新的主站(primary)或母站(master),而不管涉及多少其他服务器或通信距离有多大。单个消息的丢失通常被视为同步的失去。需要一种自动晋升机制(到主站)以允许第二服务器在现有主站发生故障的情况下承担主站的责任。在没有此类机制的情况下,可能存在相当长的其间不可能有更新的时间段。然而,从单独服务器的角度来看,可能不能将到主站服务器的通信的丢失与该主站的故障区别开。在没有其它“上帝之眼的观点”信息的情况下,服务器可以在原始主站仍在操作时决定使其自己晋升为主站(结果有两个独立的主站),或者在实际上原始主站已发生故障时决定不使其自己晋升(结果没有主站)。从具有双主站中恢复可能需要手动过程且易于发生暂时、甚至永久性数据丢失。
发明内容
本发明的实施例提供一种对等且多线程的用于网络数据仓库的复制和同步机制。本发明的实施例还可以在托管(host)网络数据仓库的复制品(replica)之间的通信丢失的情况下实现可用替换服务,并在复制品之间的通信恢复时提供完全自动的恢复。在计算机(例如服务器)上托管所述复制品,并且在某些实施例中,可以在计算机上托管多于一个的复制品。复制和同步机制的实施例还可以提供用于片状(flaky)(有损耗)网络中的网络数据库的稳健处理。根据本发明的实施例,复制和同步机制还可以提供条目级(entry level)同步和对事务(transaction)的支持。
本发明的实施例提供一种用于对等网络中的网络数据仓库的实时数据管理的系统。该系统包括在第一服务器计算机中托管的多个复制品中的第一复制品。第一复制品被配置为接受对第一复制品上的复制品条目的数据更新,每个复制品条目对应于网络数据仓库中的条目。第一复制品还被配置为将复制品条目进行更新以包括所接受数据更新。第一复制品还被配置为确定具有与网络数据仓库中的条目相对应的复制品条目的所述多个复制品中的复制品和所述第一复制品之间的复制协议的状态,其中,所述第一复制品具有与所述多个复制品中的每个复制品的复制协议,每个复制协议与该协议的复制品方之间的复制品条目的协调有关。第一复制品还可以确定第一复制品上的所更新复制品条目是否违反复制协议,其中,复制协议的违反指示第一复制品上的所接受数据更新未能被拷贝(copy)到复制协议的另一复制品方。第一复制品可以针对具有活动(active)状态且对于所接受数据更新而言未被违反的复制协议将所接受数据更新复制到所述多个复制品中的其它复制品。本发明的实施例可以包括被配置为类似于上述第一复制品的其它复制品。
本发明的实施例还提供一种用于对等计算网络中的网络数据仓库的实时数据管理的方法。该方法包括接受对多个复制品中的第一复制品中的网络数据仓库的条目的数据更新,该第一复制品在多个服务器中的第一服务器上被托管,第一复制品包含网络数据仓库的至少一部分作为对应于网络数据仓库中的条目的多个复制品条目。该方法还要求识别对应于该条目的第一复制品上的多个复制品的复制品条目。该方法还包括检查所述多个复制品中的第一复制品与其它复制品之间的复制协议,其中,每个复制协议描述所述多个复制品中的第一复制品与另一复制品之间的关系。该方法还包括确定所述多个复制品中的第一复制品和第二复制品之间的第一复制协议的状态,所述第二复制品在所述多个服务器中的第二服务器上被托管。该方法包括更新第一复制品上的已识别复制品条目。该方法还要求:如果第一复制协议处于活动状态且如果可以将所接受数据更新拷贝到第二复制品,则复制第二复制品上的所接受数据更新。
本发明的实施例提供一种用于管理在多个服务器上部署的网络数据仓库中的数据的系统。第一复制品被配置为用于与所述多个复制品中的其它复制品通信并在所述多个服务器中的服务器上被托管。第一复制品上的第一复制信息库被配置为包含网络数据仓库的至少一部分,所述第一复制信息库包括多个复制品条目,以使得每个复制品条目对应于网络数据仓库中的条目。事务模块被配置为接收对第一复制信息库中的复制品条目的数据更新。第一添加增量(delta)模块被配置为创建第一复制信息库中的多个复制品条目中的第一复制品条目的第一条目增量(entry delta),并为第一条目增量提供来自事务模块的所接收数据更新,且创建所述多个复制品中的第二复制品中的第二复制品条目的所接收数据更新的副本(copy)。第一锁定模块被配置为锁定第一复制信息库中的第一复制品条目。第一增量OK(delta-OK)模块被配置为确认(validate)第一条目增量具有与第一数据复制品条目相容的特性,其中,第一添加增量模块还被配置为在第一增量OK模块已确认第一条目增量之后通过网络将所接收数据更新的副本发送到具有第二数据复制品条目的第二复制品。提交(commit)模块被配置为在从锁定模块接收到成功指示符之后请求条目增量的应用,所述成功指示符与对网络数据仓库中的条目的改变相关联。第一应用模块被配置为将第一条目增量应用于第一复制信息库中的第一复制品条目,以使得对第一复制品中的条目的请求随后提供所接收数据更新,该第一应用模块被配置为在接收到来自提交模块的请求之后应用第一条目增量。第一解锁模块被配置为在第一应用模块已向第一复制品条目应用第一条目增量之后将第一数据复制品条目解锁。本发明的实施例可以包括被配置为类似于上述第一复制品的其它复制品。
本发明的实施例提供一种用于管理在多个服务器上部署的网络数据仓库中的数据的系统。第一复制品被配置为用于与所述多个复制品中的其它复制品通信;第一复制品在所述多个服务器的服务器上被托管。第一复制品还包括被配置为包含网络数据仓库的至少一部分的第一复制信息库,第一复制信息库包括多个复制品条目,以使得每个复制品条目对应于网络数据仓库中的条目,第一复制信息库还包括所述多个复制品中的每个复制品与其它复制品之间的多个复制协议。状态确定模块被配置为确定所述多个复制品中的复制品之间的复制协议,且所述多个复制品中的另一复制品由于通信丢失而处于不活动状态,所述状态确定模块还被配置为确定在第一复制品与另一复制品之间已恢复通信。同步模块被配置为请求所述多个复制品的复制品中的条目的更新数据,其在复制协议的不活动状态期间改变,所述同步模块还被配置为控制所述多个复制品中的另一复制品的更新,以解决产生的对复制协议的违反,直至复制协议被恢复至活动状态为止。
本发明的实施例提供一种用于管理在多个复制品上部署的网络数据仓库中的数据的方法,其中,每个复制品包含网络数据仓库的至少一部分且每个复制品被配置为用于与所述多个复制品中的其它复制品通信,所述复制品在服务器计算机中被托管。第一复制品接收对所述多个复制品中的第一复制品中的网络数据仓库中的条目的数据更新。为所述多个复制品中的第二复制品中的第二复制品条目创建所接收数据更新的副本,第二复制品条目对应于网络数据仓库中的条目。为第一复制品条目创建第一条目增量,其中,第一条目增量包括所接收数据更新。该条目在第一复制品上的第一复制品条目中被锁定,且第一条目增量被确认以确定其具有与条目相容的特性。所接收数据更新的副本被通过网络发送到第二复制品。创建第二复制品条目上的第二条目增量,其中,第二条目增量包括适合于第二复制品条目的格式的已改变数据。第二复制品上的第二复制品条目中的条目被第二条目增量锁定。在锁定第二复制品条目中的条目之后,从第二复制品向第一复制品发送成功指示符。第一条目增量被应用于第一复制品条目且第二条目增量被应用于第二复制品条目,以使得对第一复制品和第二复制品中的条目的请求随后将提供数据更新。第一复制品条目在将第一条目增量应用于第一复制品条目之后被解锁且第二复制品条目在将第二条目增量应用与第二复制品条目之后被解锁。
本发明的实施例提供一种用于管理在多个复制品上部署的网络数据仓库中的数据的方法,其中,网络数据仓库中的每个条目对应于多个复制品中的每一个中的复制品条目,并且其中,每个复制品保持与所述多个复制品中的其它复制品的复制协议。第一复制品与第二复制品之间的第一复制协议被确定为已由于第一复制品与第二复制品之间的通信的丢失而进入不活动状态。第一复制品与第三复制品之间的第二复制协议还被确定为已由于第一复制品与第三复制品之间的通信的丢失而变得不活动,其中,第二复制品与第三复制品之间的通信未被中断。一旦确定在第一复制品与第二和第三复制品之间已恢复通信,则通过使第一复制品和第二复制品相互同步来将第一复制协议恢复至活动状态,并通过使第一复制品和第三复制品相互同步来将第二复制协议恢复至活动状态。
附图说明
图1示出根据本发明的实施例的复制信息库(RIB)100的逻辑图;
图2示出根据本发明的实施例的复制模型;
图3示出根据本发明的实施例的图2所示的复制协议202的代表性状态;
图4示出根据本发明的实施例的复制品201在任何实例处也具有给定状态;
图5示出根据本发明的实施例的作为RIB(例如,RIB 100)中的单独实例的条目501的每个“版本”,其由其自己的id和相关联EntryDelta(条目增量)502的组合唯一地标识;
图6示出根据本发明的实施例的依照许多方法对诸如事务601、EntryDelta 602、条目603和RIB 100 604等类的复制处理;
图7示出根据本发明的实施例的没有竞争(contention)的RIB的更新;
图8示出根据本发明的实施例的如果在不同事务601a~601b中同时创建参考同一条目603a的两个EntryDelta 602a~602b则会发生的情况;
图9~10示出根据本发明的实施例的其中通过处理的排序不能避免死锁、从而必须采取附加动作的情况;
图11~12示出根据本发明的实施例的在给定图9~10所示的两个序列的情况下,第三和第四复制品的动作;
图13示出根据本发明的实施例的由于不活动复制协议而要求同步的情形;
图14示出根据本发明的实施例的由于隔离的复制品而要求同步的情形;
图15示出根据本发明的实施例的由于同步的复制品而要求同步的情形;以及
图16示出根据本发明的实施例的由条目104的不同复制品作为有向图中的节点而保持的许多版本。
具体实施方式
本发明的实施例提供一种对等且多线程的复制和同步机制。本发明的实施例还可以在复制品之间的通信丢失的情况下实现可用替换服务,并在复制品之间的通信恢复时提供完全自动的恢复。在计算机(例如,服务器)上托管所述复制品,并且在某些实施例中,在单个计算机上托管多个复制品。复制和同步机制的实施例还以提供片状(有损耗)网络中的稳健处理。根据本发明的实施例,复制和同步机制还可以提供条目级同步和对事务的支持。
本发明的实施例可以以多种方式复制数据库条目。另外,根据本发明的实施例,任何对等端可以添加、修改、或删除条目。此外,本发明的实施例可以采用锁定机制来保证条目和更新的一致性。根据本发明的实施例,复制和同步机制能够合并(merge)已由于对等端之间的通信的丢失而独立地进行的改变。另外,对数据的访问是实时的,根据本发明的实施例,且存储器使用的增加仅比在现有技术系统中略高。
信息模型-复制信息库
图1示出根据本发明的实施例的复制信息库(RIB)100的逻辑图。RIB100包括一组信息,其中,信息的两个或更多副本实际上对于该信息的用户而言是相同的。这里,“用户”可以指直接对数据采取动作的计算机程序以及操作与数据交互的计算系统的人。RIB 10代表该信息的用户实现对该信息的永久性存储,从而允许用户检索并修改该信息。以下讨论描述除提供非复制信息库之外,如何能够实现RIB 100。根据本发明的实施例,可以在一个或多个服务器计算机上托管RIB 100,其中每一个服务器计算机保持RIB 100的复制品。根据本发明的实施例,服务器计算机可以被配置为托管多于一个的RIB 100。在本发明的其它实施例中,可以使用其它硬件布置。
RIB 100中的信息的单位的RIB实例(RI)101。RIB 100可以具有许多RI 101。给定RI 101是由一组一个或多个属性(attribute)描述的对象。每个此类属性具有标识符(“属性类型”),以及一组零个或更多值。RiAttribute 108示出RI 101的代表性属性,其中,RiAttribute 108具有类型(例如,实(real))和一组零个或更多值(例如,1.2、1.4)。存在用于识别属性并对其值确定类型(type)的方便的抽象语法表示1(ASN.1)结构,即TYPE-IDENTIFIER。
RiAttribute ::=SET
{
type TYPE-IDENTIFIER.&id
values SET OF TYPE-IDENTIFIER.&Type
}
Ri ::=SET SIZE(1..MAX)OF RiAttribute
注意:本文的讨论频繁地对抽象语法表示1(ASN.1)表示法(notation)进行参考,其特别地描述用于在远程通信和计算机联网系统中对数据进行表示、编码、发送、和解码的数据结构。可以使用其它表示法来表达这些思想,且ASN.1的使用意图是示例性的,而不是限制本文所公开的本发明的范围。
信息模型-RI标识
RIB 100可能包含多个RI 101。根据本发明的实施例,RI 101在它们能够被标识、特别是唯一地标识时是有用的。因此,至少,每个RI 101通常具有为其提供唯一标识符的属性。请注意,根据本发明的实施例,“唯一”通常包括“对于RIB的使用期限而言”。对RI 101的此扩展称为已标识RI(IRI,Identified RI)102。
可以以ASN.1表示法用两种方式对IRI 102进行建模。对IRI 102进行建模的一种方式要求定义供在Ri SET中使用的属性类型,诸如:
ri-id-id OBJECT IDENTIFIER ::={rIB-base-id 1}
ri-id TYPE-IDENTIFIER ::={OBJECT IDENTIFIER IDENTIFIED BY
ri-id-id}
Iri ::=Ri(SIZE(1..MAX))
(CONSTRAINED BY{--must include ri-id--})
对IRI 102进行建模的第二方式要求定义明确地包括标识符属性的新类型,诸如:
Ri-ID ::=OBJECT IDENTIFIER
Iri ::=SET
{
identifier Ri-ID,
attributes Ri
}
在本说明书的其余部分中,使用后一种方法来对被添加到RIB 100的信息模型的附加属性进行建模。然而,重要的是认识到这主要是为了帮助理解-根本的本体(reality)是简单属性集。根据本发明的实施例,这意味着可以应用替换覆盖(overlay)-如果满足该替换的约束,则还可以将Ri的Dse类型解释为Ri的某一其它类型。
信息模型-用户信息、增量和事务
IRI 102包含代表(一个或多个)用户被保持的信息,且用户可能希望改变该信息。当首先创建IRI 102时,可能需要将完整的IRI 102拷贝到所有复制品(诸如图2所示的复制品201)。根据本发明的实施例,复制品常常存在于不同的位置,例如在不同的服务器中。
如果随后对IRI 102进行改变,则RIB处理装置可以仅仅再次拷贝完整的IRI 102。然而,这种方法在某些实施例中可能是困难的。首先,IRI 102可能具有任意大小,并且拷贝它们可能具有显著的带宽成本。其次,如果不能立即拷贝IRI 102(例如,由于通信问题),则两个或更多复制品可以独立地对给定IRI 102应用改变,这通常样要求后续的合并。被配置为实现此合并的RIB程序模块可能需要比独立改变集的最后结果更多的信息。第三,对用户信息的任何改变本身可以是有用的信息,因此应被视为RIB100的一部分。因此,一个人可以将IRI 102视为一条用户信息(用户通常将其视为数据库中的“条目”),或对一条用户信息的改变,诸如:
Entry ::=Iri
EntryDelta ::=SET
{
identifier Ri-ID,
transaction Ri-ID,
entry Ri-ID,
sequence Ri-ID OPTIONAL,
modifications SET OF RiAttributeModification OPTIONAL,
attributes Ri OPTIONAL
}
RiAttributeModification ::=SEQUENCE
{
type TYPE-IDENTIFIER.&id
removed SET OF TYPE-IDENTIFIER.&Type OPTIONAL
added SET OF TYPE-IDENTIFIER.&Type OPTIONAL
qualifiers BIT STRING OPTIONAL
}
根据本发明的实施例,在某种意义上,用户更新局限于IRI 102,具体而言是EntryDelta 103的创建。当用户希望添加或改变给定条目104时,用户使用创建EntryDelta 103的RIB编程功能。当随后读取条目104时,它是作为读取询问的结果而返回的所有相关联EntryDelta 103的有序合并的结果。
RIB 100包括确定IRI 102的有效性(或无效性)的规则。根据本发明的实施例,只允许有效的IRI 102进入RIB 100。此类规则可以是语法的,应用于单独属性的值,或者可以是语义的,且可应用于单个条目104,或多个条目104。语义规则的一个示例可能在条目104(的属性)之间施以参考完整性。根据此类规则,EntryDelta 103可能不仅引起对其被参考条目104的更新,而且引起对多个其它条目104的更新。
根据本发明的实施例,如果EntryDelta 103的内容本身有效,但结果得到的条目104不是有效的,则RIB处理功能不执行所请求的改变,且EntryDelta 103被拒绝。换言之,EntryDelta 103的有效性由其对相关联条目104的影响来确定。
EntryDelta 103的序列属性允许按顺序施加改变。特别地,序列属性识别先前所进行的改变,如果有的话。当创建EntryDelta 103时,就其本身,以及其对被参考的条目104,特别是在序列中的所有先前改变完成时的条目104的影响这二者得到确认。这通过确认采取已经执行的改变的条目104来实现。对于一致的RIB 100而言,条目104和序列属性的组合通常应是唯一的。
EntryDelta 103中的“修改”描述条目104中的已被修改的属性集。对于每个此类属性,连同另外描述修改的零个或更多限定词(qualifier)一起,列出已经添加的值和已经去除的值。此类限定词可能指示属性已被新添加到条目,或从条目去除,或者可能指示添加值与去除值(例如,增加量)有关。
根据本发明的实施例,EntryDelta 103的其它属性可以包括支持上述合并处理的信息,和/或提供可能对RIB处理装置或RIB的用户有用的其它改变信息。
事务105表示被定义为提供改变IRI 102的上下文并允许自动地将对多个条目的多个改变进行分组和应用的第三类型的IRI 102。在每个改变IRI 102内参考IRI 102的事务105类型。
Transaction ::=SET
{
identifier Ri-ID,
clientAddress OCTET STRING,
user PrintableString,
startTime INTEGER,
commitTime INTEGER,
attributes Ri
}
根据本发明的实施例,RIB 100的用户通常具有物理地址,且此类用户通常也是逻辑数据库的用户。
开始时间是开始事务105的时间(即,创建事务IRI 102的时间),且提交时间是向RIB 100添加EntryDelta 103并更新相关联条目104的时间。
根据本发明的实施例,事务105的其它属性可以包括可能对RIB处理装置或对RIB的用户有用的任何其它信息。
信息模型-X.500信息
根据本发明的实施例,RIB 100可以被配置为支持X.500目录。在这个上下文中,诸如图2的复制品201之类的复制品充当目录系统代理(DSA),且用户信息可以采取DSA特定条目(DSE)106的形式。因此,能够对条目104进行扩展以定义给定DSE 106,同样地,对EntryDelta 103进行扩展以定义DSEDelta 107。
Dse ::=SET
{
identifier Ri-ID,
parent Ri-ID OPTIONAL,--present unless
root
rdn RelativeDistinguishedName OPTIONAL,
--present unless root
dseType DSEType, --see X.501
attributes Ri
}
双亲(parent)和rdn组件一起提供在X.501部分23中定义的DSA信息模型中的所谓“隐含构造(implicit fabric)”。对于给定双亲,rdn通常必须是唯一的。
属性组件提供一起构成目录条目、目录子条目、DSA特定属性、和DSA共享属性的属性集。单独属性被定义为在这些细分之一中,因此不需要明确的细分。
DseDelta ::=SET
{
identifier Ri-ID,
transaction Ri-ID,
dse Ri-ID,
sequence Ri-ID OPTIONAL,
changedParent RiAttributeModification OPTIONAL,
changedRdn RiAttributeModification OPTIONAL,
changedDseType RiAttributeModification OPTIONAL,
modifications SET OF RiAttributeModification OPTIONAL,
attributes Ri OPTIONAL
}
复制模型
图2示出根据本发明的实施例的复制模型。作为RIB 100的完整副本的复制品201可以与其他复制品具有多个复制协议202。每个此类复制协议202是在一对复制品201之间。
当新复制品201被添加到RIB 100时,接着可以在新复制品201和每个现有复制品之间创建复制协议202。如在图3中进一步讨论的那样,每个复制品201在任何给定时间具有特定状态,并且如在图4中进一步讨论的那样,每个复制协议202也具有特定状态。
如果IRI 102已被成功地拷贝到复制品201(包括该复制品是始发(originating)复制品),则将IRI 102说成是在复制品201处同步。如果IRI102未被成功地拷贝到复制品201,在将其说成是“违反”任何一对复制品之间的复制协议202,其中,复制品之一具有IRI 102的副本,且另一复制品不具有IRI 102的副本。
根据本发明的实施例,仅针对没有违反复制协议202的那些IRI 102进行复制尝试。一旦已经违反复制协议202,则由同步处理负责相对于IRI102来修复复制协议202。
图3示出根据本发明的实施例的图2所示的复制协议202的代表性状态。复制协议202在任何给定时间具有一种状态,其可以是初始化301、活动302、不活动303、或恢复304之一。
复制协议202在创建时获得初始化状态301并保持此状态直至复制品201已第一次实现同步(“初始同步完成”)为止,这时,复制协议202获得活动状态302。根据本发明的实施例,可以由同步模块来支持同步。根据本发明的实施例,同步模块可以连同本文所述的其它组件一起位于服务器上。
在活动状态302下,如果条目104实例在与协议相关联的另一复制品处是同步的,则可以复制新EntryDelta 103。而且,在此状态下,可以针对违反复制协议202的任何条目尝试条目同步。根据本发明的实施例,复制协议202还在成功恢复时重新获得活动状态302。
复制协议202可以在诸如复制品之间的通信丢失之类的失败时或恢复失败时获得不活动状态303。根据本发明的实施例,在不活动状态303下,不复制新EntryDelta 103。根据本发明的实施例,新复制品201的迁移(population)是在不活动状态303下尝试的唯一同步形式。
在恢复状态304下,不复制新EntryDelta 103,这是因为恢复同步正在进行中。当在复制品之间建立通信时,或者如果活动协议由于违反协议的单独条目104的数目而不再被视为可行,则进入恢复状态304。
图4示出根据本发明的实施例的复制品201在任何实例处也具有给定状态。复制品201的状态可以是初始化401、隔离402、部分同步403、或同步404之一。
新复制品201获得初始化状态401并通常保持处于该状态,直至所有其复制协议202第一次是活动的为止,这时,复制品201进入同步状态403。
在同步状态404下,所有复制协议都是活动的。
在隔离状态402下,用于复制品201的所有复制协议都是不活动的或正在恢复。例如,复制协议202处于图3所示的不活动状态303或恢复状态304。
在部分同步状态403下,至少一个复制协议202是活动的,且至少一个复制协议202是不活动的或正在恢复。
复制和同步示例
本示例集中于一段时间内的单个条目501,被示出为条目501a~501f,在此期间,应用多个EntryDelta 502a~502g。图5示出作为RIB(例如,RIB 100)中的单独实例的条目501的每个“版本”,由其自己的id和相关联EntryDelta 502的组合唯一地标识。图5中的时间轴是从左到右。在任一时刻,每个复制品503a~503c保持条目501的单个“当前”版本,其与被保持在该复制品处的最新EntryDelta 502相关联。
为了简化该图,将IRI 102与复制品503a~503c之间的“同步”关联示出为“synch(同步)”属性的值,而不是实例之间的线。
图5从最左边的条目501a和负责条目501a的内容的相关联Entry DeltaDl 502a开始。这里,EntryDelta 502a被成功地拷贝到所有复制品503a~503c,因此EntryDelta 502a和条目501a在所有复制品503a~503c处是同步的。随后,向RIB 100添加第二EntryDelta 502b,得到条目501的新版本。如EntryDelta 502a的情况一样,EntryDelta 502b被成功地拷贝到全部三个复制品503a~503c。
例如,然后在复制品503a处接收到第三EntryDelta 502c,且其被成功地拷贝到复制品503b,但由于通信失败而不能被拷贝到复制品503a。结果是条目501c违反503a-503c和503b-503c复制协议。通常需要同步来解决此违反。
在复制品503c处接收到第四EntryDelta 502d,但仍存在通信问题,因此其不能被拷贝到复制品503a或复制品503b。如前所述,结果是结果得到的条目501d不与复制品503a或复制品503b同步。
在这里,存在两个EntryDelta,EntryDelta 502c和EntryDelta 502d,其具有用于条目501的“相同的”条目对和序列属性。这意味着即使已经恢复通信以便可以将EntryDelta 502d拷贝到复制品503a和复制品503b,那两个复制品也将不能接受EntryDelta 502d,因为这样做将违反一对必须是唯一的这一原则。
在复制品503b处接收到第五EntryDelta 502e,且即使现在已经恢复了到复制品503c的通信,也不存在将EntryDelta 502e拷贝到复制品503c的尝试,因为条目501(501c)的当前版本不与复制品503c同步。因此,EntryDelta 502e和条目501e仅仅与复制品503a和复制品503c同步。
通信的恢复发起了与RIB 100相关联的同步处理,对于条目501而言,其包括不同“当前”版本(501d和501e)的调解或合并。同步得到两个新EntryDelta,EntryDelta 502g和EntryDelta 502f,其独立地更新条目501d和501e以提供单个共用版本(common version)(501f),其因此在全部的503a~503c处是同步的。
如果不存在EntryDelta 502d,则EntryDelta 502g是EntryDelta 502c与EntryDelta 502e的组合,且EntryDelta 502f是无效更新(null update)。请注意,根据本发明的实施例,在这种情况下仍可以创建EntryDelta 502f,因为复制品503a和复制品503b上的条目501的版本已经改变-特别地,同步属性具有503c的新值。
复制处理
复制是用来进行IRI 102的拷贝以便诸如图5所示的复制品503a~503c之类的每个复制品具有完整且最新的RIB 100的手段。
到外部用户得知对RIB 100的任何请求改变的成功(或失败)时,RIB100的所有复制品完全反映该改变。根据本发明的实施例,这通过使用两阶段方法来实现。首先,根据本发明的实施例,在事务的范围内,在所有复制品处进行改变。当所有复制品所接受该改变时,再次在事务的范围内,向外部用户告知更新的成功。最后,当外部用户请求提交该事务时,该改变被“同时地”或“并发地”应用于或提交给每个复制品处的RIB 100,以便其在事务范围之外可见。
相对于IRI 102考虑以上过程,三个子类(条目104、EntryDelta 103、和事务105)需要不同的复制处理以保证RIB 100的正确性-特别是在可以同时对多个复制品进行改变的情况下。
根据本发明的实施例,三个子类中最简单的是事务105,其被简单地拷贝-外部RIB 100用户必须保证唯一性。
根据本发明的实施例,条目类型104的IRI未被明确地拷贝。作为替代,根据本发明的实施例,所述拷贝通过在每个复制品(例如,图5所示的复制品503a~503c)处本地地应用拷贝的EntryDelta 103来实现。
根据本发明的实施例,对于EntryDelta 103而言,条目和序列属性的组合必须是唯一的。因此,应保证如果在两个复制品上同时创建具有共用条目104的两个EntryDelta 103实例,则其被正确地定序。这可以通过采用下述同步处理来执行,因为无论如何其在通信失败的情况下可能是必要的。然而,根据本发明的实施例,当通信可用时,为了获得效率和性能,一种优选方法包括使用锁定,并在必要时使用重试机制。
以下序列图考虑许多条件下的EntryDelta 103实例的复制,以便研究锁定和重试机制的实施例。最初示出并然后采用事务105的复制。
以下示例对被EntryUpdate(条目更新)更新的单个条目104实例进行建模,而不是引起条目104的新版本的创建。这种方法允许表示对条目104的锁定,虽然当然可以对其中存在每个版本的实例的等价物进行建模。
复制方法/模块
如图6所示,根据本发明的实施例,描述对诸如事务601、EntryDelta602、条目603和RIB 100 604等类的依照许多方法的复制处理。根据本发明的实施例,本文所述的方法还服从作为例如硬件模块和/或软件模块等一系列模块的实施方式。根据本发明的实施例,所述方法/模块服从一个或多个计算机上的操作。
事务方法/模块
事务601的实施例包括以下方法。根据本发明的实施例,本文所述的方法还服从作为例如硬件模块和/或软件模块等一系列模块的实施方式。根据本发明的实施例,所述方法/模块服从一个或多个计算机上的操作。
addDelta()方法向正在进行的事务601中添加新EntryDelta 602实例。这种方法用来在起始复制品上创建EntryDelta 602,并在复制品(诸如图5所示的复制品503a~503c)之间将其拷贝。
deltaOK()方法允许EntryDelta 602实例向事务602指示其认为其本身是有效的。“被拷贝到的”复制品上的事务601实例同样使用该方法来向事务602的始发副本回向指示关于被拷贝的EntryDelta 602的相同信息。
noLock()方法允许EntryDelta 602实例向事务601指示其不能获得用于被参考条目603的锁定。“被拷贝到的”复制品上的事务601实例同样使用该方法来对事务601的始发副本回向进行指示。
commit()方法用信号通知事务完成并应被提交。根据本发明的实施例,始发复制品上的事务601调用所有复制品副本上的commit()。
rollback()用信号通知事务已完成,但应被回退(roll back)(即,不应用)。始发复制品上的事务601调用所有副本上的rollback()。
abandon()方法允许始发复制品上的事务601用信号通知事务601副本其已放弃(abandon)EntryDelta 602,因为其未能获得用于被参考条目603的锁定。
EntryDelta方法/模块
EntryDelta 602的实施例包括以下方法/模块。根据本发明的实施例,本文所述的方法还服从作为例如硬件模块和/或软件模块等一系列模块的实施方式。根据本发明的实施例,所述方法/模块服从一个或多个计算机上的操作。
apply()方法命令EntryDelta 602将其本身应用于RIB 604。
abandon()方法命令EntryDelta 602放弃更新并将其本身毁坏。
locked()方法允许相关联条目603指示其被成功地锁定。
queued()方法允许相关联条目603指示其锁定尝试已经被排队,因为已向另一EntryDelta 602许可锁定。
条目方法/模块
条目603的实施例包括以下方法/模块。根据本发明的实施例,本文所述的方法还服从作为例如硬件模块和/或软件模块等一系列模块的实施方式。根据本发明的实施例,所述方法/模块服从一个或多个计算机上的操作。
lock()方法命令条目603针对特定的EntryDelta 602实例将其本身锁定,以使得不能将其它EntryDelta 602实例应用于条目603的该版本。请注意,来自此方法的响应是EntryDelta 602的locked()或queued()方法且在图中已被表示为异步。然而,根据本发明的实施例,在许多情况下可以使用此方法的同步结果代码来以高效的方式影响相同的逻辑。
unlock()方法命令条目603将其本身解锁。
RIB方法/模块
add()方法允许向其本身添加EntryDelta 602并将条目603的其相关联版本添加到RIB 604中,以使得其变得在事务之外可见。根据本发明的实施例,本文所述的方法还服从作为例如硬件模块和/或软件模块等一系列模块的实施方式。根据本发明的实施例,所述方法/模块服从一个或多个计算机上的操作。
没有竞争的更新
图7示出根据本发明的实施例的没有竞争的RIB的更新。要考虑的第一种情形是最简单的,其中不存在对锁定的竞争。可以预期,在RIB(诸如图1所示的RIB 100中,具有许多条目104实例)中,这将是“正常”处理,因为其对于将在多于一个的EntryDelta 103中同时参考的相同条目104实例而言可能是罕有的。
根据本发明的实施例,图7中的序列图示出在此第一情形中涉及的两个复制品上的(副本)实例。事务601a已在与RIB 604a相关联的一个复制品中被创建,并在与RIB 604b相关联的第二复制品中创建其自身的副本(步骤701)。拥有该事务的外部用户请求添加EntryDelta 602a(步骤702)。在始发复制品上创建EntryDelta 602a(步骤703)。
EntryDelta 602a将条目603a锁定(步骤704)。该锁定立即成功(步骤705)。针对条目603a来确认EntryDelta 602a,并将其视为有效的(步骤706)。将EntryDelta 602a拷贝到复制品事务601b(步骤707)。创建EntryDelta 602b副本(步骤708)。EntryDelta 602b副本将该复制品上的条目603b的副本锁定(步骤709)。该锁定立即成功(步骤710)。将EntryDelta103副本视为有效的(步骤711)。
用信号向事务的原始副本通知该有效性(步骤712)。EntryDelta 602a和副本EntryDelta 602b两者是有效的,因此,可以将该成功告知请求实体(步骤713)。
在稍后的时间,请求实体提交该事务(步骤714)。提交事务副本(步骤715)。应用EntryDelta 602a(步骤716)。应用EntryDelta 602b副本(步骤717)。将EntryDelta 602a添加到RIB 604a中(即,使其可见)(步骤718)。将EntryDelta 602b副本添加到RIB 604b中(即,使其可见)(步骤719)。将条目603a解锁(步骤720)。将条目603b副本解锁(步骤721)。通知外部用户该事务已经被成功提交(步骤722)。
多个复制品上的同时更新-无死锁
图8示出根据本发明的实施例的如果在不同事务601a~601b中同时创建参考同一条目603a的两个EntryDelta 602a~602b则会发生的情况。如果在同一复制品中(例如在RIB 604a中)发起两个事务601a~601b,则通常发生排队,因为条目603a的同一副本被锁定。然而,如果在不同的复制品中(例如在RIB 604a和RIB 604b中)发起事务601a~601b,则存在死锁的可能性。
根据本发明的实施例,图8的序列图示出简单地通过处理的排序来避免死锁的情况。请注意,仅示出用于复制品之一的实例。
从始发复制品拷贝用于事务601a的EntryDelta 602a(步骤801)。(注意:此步骤类似于图7中的步骤707)。同时,拥有事务601b的外部用户请求添加EntryDelta 602b(步骤802)。创建用于事务601a的EntryDelta 602a副本(步骤803)。创建用于事务601b的EntryDelta 602b(步骤804)。用于事务601a的EntryDelta 602a副本将条目603a副本锁定(步骤805)。该锁定立即成功(步骤806)。
将用于事务601a的EntryDelta 602a副本视为有效的(步骤807)。用信号向原始事务通知该有效性(步骤808)。用于事务601b的EntryDelta602b将条目603a副本锁定(步骤809)。使锁定请求排队(步骤810)。EntryDelta 602b等待锁定得到许可。
提交事务601a的副本(步骤811)。应用用于事务601a的EntryDelta602a副本(步骤812)。将条目603a副本解锁(步骤813)。对用于事务601b的EntryDelta 602b许可锁定(步骤814)。将用于事务B的EntryDelta 602b视为有效的(步骤815)。这里的确认包括起因于事务601a的EntryDelta 602a的任何改变。根据本发明的实施例,处理可以按照前一序列继续。
多个复制品上的同时更新-死锁
图9~10示出根据本发明的实施例的其中通过处理的排序不能避免死锁、从而必须采取附加动作的情况。图9示出发起事务601a的复制品,且图10示出发起事务601b的复制品。
控制事务601a的外部用户请求添加EntryDelta 602a(步骤901)。从始发复制品拷贝用于事务601b的EntryDelta 602b(步骤902)。创建用于事务601a的EntryDelta 602a(步骤903)。创建用于事务601b的EntryDelta904副本(步骤904)。用于事务601a的EntryDelta 602a将条目603a锁定(步骤905)。该锁定立即成功(步骤906)。
针对条目603a来确认用于事务601a的EntryDelta 602a,并将其视为有效的(步骤907)。将EntryDelta 602a拷贝到复制品事务601a(步骤908)。用于事务601b的EntryDelta 602b副本将条目603a锁定(步骤909)。使锁定请求排队(步骤910)。用于事务601b的EntryDelta 602b副本应用规则(诸如下文所讨论的规则)并确定其是否应放弃排队的锁定,并就此对事务601b进行指示(步骤911)。撤消锁定请求(步骤912)。用信号向原始事务601b通知失败的锁定(步骤913)。
作为在事务601b中处理的失败锁定的结果,事务601a可以在远程复制品上进行,如针对下文的序列所描述的那样(步骤914)。最后结果是用于事务A的EntryDelta 103在所有复制品处被视为有效的。
将该成功告知请求实体(步骤915)。在稍后的某一点,请求实体提交该事务(步骤916)。提交事务副本(步骤917)。应用EntryDelta 602a(步骤918)。将条目603a解锁(步骤919)。在这里,如在下文的序列中描述的那样,可以重新尝试用于事务601b的EntryDelta 602b。
图10示出根据本发明的实施例的发起事务601b的复制品。从始发复制品拷贝用于事务601a的EntryDelta 602a(步骤1001)。拥有事务601b的外部用户请求添加EntryDelta 602b(步骤1002)。
创建用于事务601a的EntryDelta 602a副本(步骤1003)。创建用于事务601b的EntryDelta 602b(步骤1004)。用于事务601b的EntryDelta 602b将条目603a锁定(步骤1005)。该锁定立即成功(步骤1006)。针对条目603a来确认用于事务601b的EntryDelta 602b,并将其视为有效的(步骤1007)。将用于事务601B的EntryDelta 602b拷贝到复制品事务601b(步骤1008)。用于事务601a的EntryDelta 602a副本将条目603a锁定(步骤1009)。
使锁定请求排队(步骤1010)。用于事务601a的EntryDelta 602a副本应用与在前一序列中相同的规则,但这次,结果是等待锁定。从其它复制品接收失败的锁定指示(步骤1011)。事务放弃EntryDelta 602b,以便对其进行重新尝试(步骤1012)。将条目603a解锁(步骤1013)。对用于事务601a的EntryDelta 602a许可排队的锁定(步骤1014)。针对条目603a来确认用于事务601a的EntryDelta 602a副本,并将其视为有效的(步骤1015)。
用信号向原始事务通知该有效性(步骤1016)。创建用于事务601b的第二EntryDelta 602c(即,对其进行重新尝试)(步骤1017)。用于事务601b的第二EntryDelta 602c将条目603a锁定(步骤1018)。使锁定请求排队(步骤1019)。
提交事务601a的副本(步骤1020)。应用用于事务601a的EntryDelta602a副本(步骤1021)。将条目603a副本解锁(步骤1022)。对用于事务601b的第二EntryDelta 602c许可排队的锁定(步骤1023)。将用于事务601b的EntryDelta 602c视为有效的(步骤1024)。这里的确认通常包括起因于事务601a的EntryDelta 602a的任何改变。EntryDelta 602c的处理如前所述的那样继续。
在以上说明中对可以由EntryDelta 103副本在锁定排队以判定是等待还是放弃EntryDelta 103并从开始部分进行重新尝试时应用的规则进行了参考。根据本发明的实施例,对于给定事务而言,规则的结果在所有复制品上(无论存在多少)应是相同的,以保证EntryDelta 103的成功连续化(serialization)。可能应用的两个可能规则如下:
-向每个复制品分配唯一的整数标识符。如果始发复制品的标识符小于具有锁定的EntryDelta 103的始发复制品的标识符,则等待。否则放弃。
-向每个外部用户分配“优先级”。如果拥有事务的用户的优先级大于拥有事务(该事务带有具有锁定的EntryDelta 103)的用户的优先级,则等待。否则放弃。如果对于两个事务而言是同一用户,则回到前一规则。
图11~12示出根据本发明的实施例的在给定图9~10所示的两个序列的情况下第三和第四复制品的动作。
在图11中,在第三复制品处,事务602a的EntryDelta 602a在用于事务602b的EntryDelta 602b之前获得锁定。这意味着当在步骤1010处应用等待/放弃规则时,进行“正确”判定以便在事务601b情况下后退。
然而,在图12中,在第四复制品处,用于事务601b的EntryDelta 602b在用于事务601a的EntryDelta 602a之前获得锁定。当在步骤101处应用等待/放弃规则时,再次地,进行正确判定,这次将等待锁定。随后,放弃事务601b的EntryDelta 602b,解除锁定以允许事务601a情况进行至完成。请注意,根据本发明的实施例,将由事务601b实例在图10所示的序列的步骤1011处生成步骤1211处的放弃。
同步处理
可能不是始终可以成功地执行复制品之间的实时复制。例如,如果在一个或多个复制品之间丢失通信,则很明显,复制是不可能的。在此期间防止对RIB 100的改变是不可接受的,因此,将可能存在IRI 102,或IRI 102的版本,其存在于某些复制品中,而在其它复制品中没有。
同步是可以用来在不具有丢失的IRI 102的副本的复制品处实现所述副本、且可以修正不一致性以便不再违反复制协议202的手段。
要求同步的情形
图13~15示出根据本发明的实施例的要求同步的两个示例。
图13示出根据本发明的实施例的由于不活动复制协议而要求同步的情形。在图13中,复制品1307与复制品1309相互已经丢失通信,但两者都仍在与复制品1301通信。结果,仅仅B-C复制协议1311是不活动的。复制品1301具有所有更新的副本;复制品1307失去来自复制品1309的更新,且反之亦然。
当随后通信链路恢复时,通常必须在复制品1307与复制品1309之间执行恢复同步。
图14示出根据本发明的实施例的由于隔离复制品而要求同步的情形。在图14中,复制品1409已丢失与复制品1401和复制品1407两者的通信。假设所述复制品位于不同的地点,则这通常表示复制品1409所在的地点处的地点通信失败。
结果,涉及复制品1409的两个复制协议(A-C复制协议1405和B-C复制协议1411)都已变成不活动的,且复制品1409被隔离。A-B复制协议1403不存在问题,因此,复制品1401和1407两者都具有其自己的副本和彼此的更新,并且两者都不具有复制品1409的更新的副本。
当通信恢复时,两个不活动的协议(A-C复制协议1405和B-C复制协议1411)进入恢复状态,并且通常将对两者执行恢复同步。原则上,这些可以依次地或并行地执行。根据本发明的实施例,在复制品1409上并行地执行两个同步是更高效的,因此可以在一遍中将其全部执行。
图15示出根据本发明的实施例的由于同步复制品而要求同步的情形。在图15中,全部三个复制品1501、1507和1509是同步的,且复制协议1503、1505、和1511是活动的。然而,在复制品1507和1509处存在未被成功地拷贝到复制品1501的EntryDelta 1515,因此,相关联条目1513仅仅在复制品1507和复制品1509处同步。此失败可能起因于暂时通信小故障,或者可能是由于在恢复处理期间遇到的不能协调的差异。
在这种状态下,通常在复制品1507、1509之间拷贝在复制品1507或1509处接收到的用于条目1513实例的任何新EntryDelta 1515。同样地,通常不将在复制品1501处接收到的用于条目1513实例的新EntryDelta1515拷贝到复制品1507或复制品1509。根据本发明的实施例,通常需要条目同步来解决此差异。
恢复同步
恢复同步是在复制协议处于恢复状态时执行的处理。简单地说,同步仅仅是拷贝并应用丢失的IRI 102的情况。实际上,对于被“保证”是唯一的事务105而言是这样。
条目104和EntryDelta 103IRI出现困难,因为如果它们独立地在两个或更多复制品上被创建,则在它们之间可能存在可能不相容的关联。
在条目104、特别是DSE 106的情况下,存在rdn和双亲组合是唯一的这一要求。同样地,在EntryDelta 103的情况下,存在条目和序列对是唯一的这一要求。
根据本发明的实施例,可以以两种方式对用于EntryDelta 103的同步过程进行建模,暂时将任何不相容性解决方案放在一边。如先前所述,第一选择是拷贝丢失的EntryDelta 103。第二选择是在复制品上创建新的EntryDelta 103,所述复制品丢失副本,且对用户信息具有相同影响,但允许有实际上已应用于复制品的不同更新的跟踪能力。因此,例如,在通信中断期间创建的复制品(诸如图15所示的复制品1501)上的多个EntryDelta103可能引起在另一复制品(诸如图15所示的复制品1507)上的单个EntryDelta 103的创建作为同步过程的一部分。如果EntryDelta 103包括列出其被成功地拷贝到的复制品的“同步”属性,第二选择还意味着此属性不必在同步期间更新。
由同步处理创建的EntryDelta通常服从必须被满足以保证该EntryDelta有效的多个规则。很明显,同步通常要求有效的EntryDelta,但如上所述,可能存在不能被过分简单化地组合的独立EntryDelta的组合而无需结果得到的EntryDelta无效。换言之,原始EntryDelta是不相容的。在这种情况下,根据本发明的实施例,可以采用下文讨论的附加合并规则来调整同步EntryDelta以使它们有效。
还可以提供可扩展机制,由此可以将与条目104相关联的全套EntryDelta 103转发到外部系统,所述外部系统可以应用专用规则来得到合并的EntryDelta。
应注意所得到的EntryDelta 103的使用,因为这意味着跨越多个条目104实例被应用在特定复制品上的更新可能在同步期间实际上是按照不同的次序应用的。如果在条目104实例之间存在依赖性,例如,如果参考完整性得到支持,则这些依赖性可能断开。
同步服务器
在某些实施例中,RIB 100可以具有同步服务器,其为仅在所有复制品处于通信状态时才被更新的复制品。因此,服务器将仅包含已知已被成功地拷贝到所有复制品的IRI 102。然而,本实施例有些理想化,也可以采用其它更实际的配置。
当在通信中断之后需要同步时,按照严格的时间顺序将EntryDelta 103应用于同步服务器,以便例如可以保持参考完整性。如果不能在不破坏规则的情况下应用更新,则存在两种可能性,即,不应用更新,或者即使其破坏规则也应用该更新。根据单独的环境,可能需要这些可能性的组合。总之,应使用日志来记录先前接受的“回退的”EntryDelta 103或现在违反某些规则的条目104实例的细节。请注意,使EntryDelta 103回退可能对后面的EntryDelta具有次要或偶然的影响。
同步服务器近似
对于许多部署而言,专用同步服务器可能不是可行的,因此,作为替代,可以执行此类处理的近似。考虑两个复制品,每个具有需要被同步的一组独立的EntryDelta 103。处理可以将复制品之一带回到划分(partition)的点,然后重放其两个EntryDelta 103,和另一复制品的那些-换言之,是有效地实现暂时同步服务器的处理。然而,这种方法将实际上意味着该复制品上的EntryDelta 103的暂时丢失,这不可能是可接受的。
替换方案是向前移动划分的时间,直至其赶上当前时间为止,具有包含RIB 100的同步“事务”,如同其是同步服务器一样。尽快提交在事务内进行的更新并使其在事务之外可见。其目的是使未提交的更新的数目最小化,因为否则可能不能支持存储器或其它资源使用。通常一旦在本地复制品中不存在尚未被作为同步处理的一部分而应用的随后相关联EntryDelta103,就能够提交条目104。
此替换方法的细节为:
-划分时间是非两个复制品共用的最旧EntryDelta 103的创建时间。
-“事务”在两个复制品上运行,其目的是将划分时间向前拖,指示其赶上当前时间为止。
-同步事务可以包含未提交的条目104实例。这些已经使某些EntryDelta 103实例被应用,但如下所述,还不能被提交给RIB 100,因为存在更多要应用的本地EntryDelta 103。
-提交到RIB 100意味着应用合并的EntryDelta 103并使结果对于外部用户而言是可见的。
-如果在EntryDelta的确认期间被参考,则应使用未提交的条目104实例,优先于RIB 100中的版本。根据本发明的实施例,如果不存在此类未提交版本,则该被参考条目104的当前提交版本被“回退”到其在EntryDelta 103得到确认时的状态。
-根据本发明的实施例,识别最旧EntryDelta 103,并将其添加到没有它的复制品。例如,假设复制品B具有必须被拷贝到复制品A的最旧EntryDelta 103。
-在复制品A上的同步事务的范围内,可能已存在条目104的未提交版本,在这种情况下,可以对其应用EntryDelta 103,并应使其处于未从RIB 100提交的状态。
-如果不存在未提交版本且条目104不与复制品B同步,则在复制品A上通常必须存在至少一个后面的EntryDelta 103。回退所有此类EntryDelta,然后应用最旧EntryDelta 103,却又不提交到RIB 100。
-如果不存在未提交版本且条目104与复制品B同步,则可以应用最旧EntryDelta 103,创建得到的EntryDelta 103,且结果被立即提交到RIB100。
-在复制品B上,如果在事务的范围内存在条目104的未提交版本,则通常必须应用该同一最旧EntryDelta 103。如果是这样,且不存在其它本地EntryDelta,则可以将得到的EntryDelta 103和条目104立即提交到RIB100。
-对次最旧EntryDelta 103重复以上操作。
以上说明假设每件事都是成功的,但如前文所讨论的,可能作为确认的结果而需要不应用改变,即使其先前已被成功地应用。在这种情况下,结果是对RIB 100的改变,并应由新EntryDelta 103来表示。
条目同步
条目同步情况实际上与划分复制品的恢复没有不同,除了以不同的方式特别地从已知不是在所有复制品上都相同的单个条目104中选择所涉及的条目104和EntryDelta 103的子集之外。
一旦识别到差异,就应尝试条目104同步-由于复制问题或由于后台检查。
新复制品的迁移
新复制品的迁移涉及从活(live)复制品拷贝IRI 102。这通常将花费一段时间,在此期间,将存在对RIB 100的许多更新。
首先,拷贝所有条目104 IRI,然后在拷贝第一条目IRI 102时开始,拷贝并应用所有EntryDelta 103 IRI。考虑某些EntryDelta 103已被应用这一事实。
一旦大部分EntryDelta 103已被应用,就可以转换为参与正常复制,可能执行条目同步以覆盖转换时间段。
增量路径选择
在复杂(且罕有)的情况下,可以以多于一种的方式来合并一组EntryDelta 103。图16示出根据本发明的实施例的作为有向图中的节点的条目104的许多版本。图表的边表示已经应用的EntryDelta 103,且节点内的数字表示使条目104的版本同步的复制品。在存在多个向内箭头(in-arrow)的情况下,已作为同步合并的结果而创建了条目104版本。
现在考虑在右侧的最终合并。在这里,我们具有条目的两个版本-被保持在复制品1和2处的版本,和被保持在复制品3和4处的版本。不需要复制品的所有组合执行合并-只需要涉及1和2之一、及3和4之一。在可能的成对复制品中,最好的是2和3,因为发散点明显比任何其它可能性(1和3、1和4、2和4)“更近”。因此,在同步过程开始之前,复制品需要进行协商以识别在同步中需要涉及哪些对。
一般合并规则
为了将用于给定条目104的一组EntryDelta 103合并,根据可以应用于条目104实例的任何约束,将可能需要多个规则。
可以使用以下规则:
-后面的EntryDelta 103将优先于(override)先前的EntryDelta 103。
-客户端优先(precedence)可以优先于基于时间的规则
-可扩展规则可以优先于先前的两个规则。
如前文简要地讨论的,通常将通过向包含要合并的一组EntryDelta 103的某些外部系统发送通知来提供可扩展规则。外部系统(例如应用服务器)可以用要应用的合并EntryDelta 103进行响应。
X.500合并规则
除一般合并规则之外,存在将应用于DseDelta 107以保证不违反X.500规则的特定规则。至少,通常将需要用于以下各项的规则:
-添加条目104-条目已存在(相同的结构对象类和不同的结构对象类)
-删除条目104-条目不存在
-删除条目104-非叶(non-leaf)
-去除值-值不存在
-去除属性-属性不存在
-添加属性-属性已存在
-添加值-值已存在
还可以基于对象类和属性类型来指定特定的合并规则。
其它考虑
RIB 100用户服务质量(QoS)
由RIB 100提供的服务质量通常特别地取决于复制品的同步有多好。完全同步的RIB 100是明显好于划分的RIB 100的质量数据。RIB 100用户可以仅选择(或被允许)使用例如来自同步复制品的数据。如果QoS在其要求以下,则客户端可以自动地断开连接,这可以经由不同的端口或用户配置数据来指示。还可以在模式侧应用类似配置-只有对特定对象类的特定属性的访问与OoS考虑有关。
调解
调解是被视为同步的非同步Userlnfo实例的后台检测。该实例可能被标记为非同步,但使实例同步的任何自动尝试通常将涉及新UserlnfoDelta的创建,因为所有先前的UserlnfoDelta通常已被标记为被拷贝到所有复制品。
异步复制
如前所述,默认复制模式为同步复制,即,通常只有当所有复制品已应用更新时才提交更新。同样地,在所有复制品都已提交更新之前,通常不进行返回客户端的响应。
作为替换,将可以为复制协议的子集提供异步复制。所述机制将是类似地,不同的是如果复制协议被标记为异步,则将不会立即预期有来自该复制品的响应,且将不阻止同步复制品处的更新的提交,也不阻止返回客户端的响应。
虽然已示出并描述了本发明的特定实施例,但很明显,本发明不仅限于这些实施例。在不脱离本发明的精神和范围的情况下,许多修改、变化、变更、替换和等价物对于本领域的技术人员来说将是显而易见的。例如,可以由诸如用于特定功能的专用硬件之类的硬件来执行被描述为以软件执行的过程、功能和操作。被描述为方法的功能可以例如被实现为模块,诸如专用硬件模块。通常,不应将本文所使用的术语理解为使本发明局限于本说明书所公开的特定实施例,而是应将其理解为包括根据所述和可以最后阐述的任何权利要求中的本发明的精神而操作的所有系统和方法。因此,意图在于本发明涵盖本发明的修改和变更,只要它们处于与本发明相关联的任何权利要求及其等价物的范围内。
Claims (34)
1.一种用于对等计算网络中的网络数据仓库的实时数据管理的系统,包括:
多个复制品中的第一复制品,托管在第一服务器计算机中,第一复制品被配置为:
接受对第一复制品上的复制品条目的数据更新,每个复制品条目对应于网络数据仓库中的条目,
将第一复制品上的复制品条目进行更新以包括所接受数据更新,
确定具有与网络数据仓库中的条目相对应的复制品条目的所述多个复制品中的复制品和所述第一复制品之间的复制协议的状态,其中,所述第一复制品具有与所述多个复制品中的每个复制品的复制协议,每个复制协议与该协议的复制品方之间的复制品条目的协调有关,
确定第一复制品上的所更新复制品条目是否违反复制协议,其中,复制协议的违反指示第一复制品上的所接受数据更新未能被拷贝到复制协议的另一复制品方,以及
针对具有活动状态且对于所接受数据更新而言未被违反的复制协议将所接受数据更新复制到所述多个复制品中的其它复制品;以及
所述多个复制品中的第二复制品,托管在第二服务器计算机中,第二复制品被配置为:
接受对第二复制品上的复制品条目的数据更新,每个复制品条目对应于网络数据仓库中的条目,
将第二复制品上的复制品条目进行更新以包括所接受数据更新,
确定具有与网络数据仓库中的条目相对应的复制品条目的所述多个复制品中的复制品和所述第二复制品之间的复制协议的状态,其中,所述第二复制品具有与所述多个复制品中的每个复制品的复制协议,每个复制协议与该协议的复制品方之间的复制品条目的协调有关,
确定第二复制品上的所更新复制品条目是否违反复制协议,其中,复制协议的违反指示第二复制品上的所接受数据更新未能被拷贝到复制协议的另一复制品方,以及
针对具有活动状态且对于所接受数据更新而言未被违反的复制协议将所接受数据更新复制到所述多个复制品中的其它复制品。
2.权利要求1的系统,还包括:
所述多个复制品中的第三复制品,托管在第一服务器计算机中,第三复制品被配置为:
接受对第三复制品上的复制品条目的数据更新,每个复制品条目对应于网络数据仓库中的条目,
将第三复制品上的复制品条目进行更新以包括所接受数据更新,
确定具有与网络数据仓库中的条目相对应的复制品条目的所述多个复制品中的复制品和所述第三复制品之间的复制协议的状态,其中,所述第三复制品具有与所述多个复制品中的每个复制品的复制协议,每个复制协议与该协议的复制品方之间的复制品条目的协调有关,
确定第三复制品上的所更新复制品条目是否违反复制协议,其中,复制协议的违反指示第三复制品上的所接受数据更新未能被拷贝到复制协议的另一复制品方,以及
针对具有活动状态且对于所接受数据更新而言未被违反的复制协议将所接受数据更新复制到所述多个复制品中的其它复制品。
3.权利要求1的系统,其中,所述第一复制品还被配置为:
使所述第一复制品上的复制品条目与具有复制协议的多个复制品中的其它复制品上的复制品条目同步,所述复制协议已由于所接受数据更新不能被拷贝到所述多个复制品中的其它复制品而被第一复制品上的所接受数据更新违反。
4.权利要求3的系统,其中,所述第一复制品还被配置为在协商中应用合并规则来确定最佳议定的条目内容,其复制品条目已经历独立且不相容的更新。
5.权利要求4的系统,其中,第一复制品被配置为应用的合并规则包括使得用于复制品条目的后面的数据改变优先于用于复制品条目的先前的数据改变和优先于基于时间的优先而应用客户端优先次序中的至少一个。
6.权利要求1的系统,其中,所述第一复制品还被配置为:
确定第一复制品与第二复制品之间的复制协议已变为活动状态;以及
使第一复制品上的复制品条目与第二复制品上的复制品条目同步,以便将数据更新采用于在第一复制品与第二复制品之间的复制协议不活动时未被更新的第一复制品和第二复制品上的复制品条目。
7.权利要求1的系统,其中,所述第一复制品还被配置为:
确定第一复制品与多个其它复制品之间的多个复制协议已变为活动状态,
与所述多个其它复制品协商以确定第一复制品和所述多个其它复制品上需要的附加数据更新的最小数目,以便使第一复制品上的复制品条目与所述多个其它复制品上的复制品条目同步,以便将数据更新采用于在所述多个复制协议不活动时所述多个复制品上的未被更新的复制品条目。
8.权利要求7的系统,其中,所述多个复制品还被配置为在协商中应用合并规则来确定最佳议定的条目内容,其复制品条目已经历独立且不相容的更新。
9.权利要求8的系统,其中,多个复制品被配置为应用的合并规则包括使得用于复制品条目的后面的数据改变优先于用于复制品条目的先前的数据改变和优先于基于时间的优先而应用客户端优先次序中的至少一个。
10.权利要求7的系统,还包括:
服务质量模块,被配置为在所述多个复制品中的复制品降到由客户端或代表客户端设置的同步服务质量阈值之下时暂停该复制品对关于客户端的网络数据仓库的数据查询进行响应的能力。
11.权利要求1的系统,其中,所述第一复制品还包括:
第一复制信息库,被配置为包括多个复制品条目,以使得每个复制品条目对应于网络数据仓库中的条目;
第一事务模块,被配置为接收对第一复制信息库中的复制品条目的数据更新;
第一添加增量模块,被配置为创建第一复制信息库中的多个复制品条目中的第一复制品条目的第一条目增量,并为第一条目增量提供来自第一事务模块的所接收数据更新,且被配置为创建所述多个复制品中的第二复制品中的第二复制品条目的所接收数据更新的副本;
第一锁定模块,被配置为锁定第一复制信息库中的第一复制品条目;
第一增量OK模块,被配置为确认第一条目增量具有与第一复制品条目相容的特性,其中,所述第一添加增量模块还被配置为在第一增量OK模块已确认第一条目增量之后通过网络将所接收数据更新的副本发送到具有第二复制品条目的第二复制品;
其中,所述第二复制品还包括:
第二复制信息库,被配置为包括多个复制品条目,以使得每个复制品条目对应于网络数据仓库中的条目;
第二添加增量模块,被配置为从所述第一添加增量模块接收数据更新并在第二复制品条目上创建第二条目增量;
第二锁定模块,被配置为将用于第二条目增量的第二复制信息库中的第二复制品条目锁定并在将第二复制品条目锁定之后向第一复制品发送成功指示符;
第二应用模块,被配置为将第二条目增量应用于第二复制品条目,以使得对第二复制品中的条目的请求随后将提供所接收数据更新,第二应用模块被配置为在接收到来自提交模块的请求之后应用第二条目增量;以及
第二解锁模块,被配置为在向第二复制品条目应用第二条目增量之后将第二复制品条目解锁,
其中,所述第一复制品进一步包括:
提交模块,被配置为在从第二锁定模块接收到成功指示符之后请求条目增量的应用,所述成功指示符与对网络数据仓库中的条目的改变相关联;
第一应用模块,被配置为将第一条目增量应用于第一复制信息库中的第一复制品条目,以使得对第一复制品中的条目的请求将随后提供所接收数据更新,第一应用模块被配置为在接收到来自提交模块的请求之后应用第一条目增量;以及
第一解锁模块,被配置为在第一应用模块已向第一复制品条目应用第一条目增量之后将第一复制品条目解锁。
12.权利要求11的系统,其中,所述第一复制品还包括:
通信模块,被配置为确定所述多个复制品中的一个复制品与另一复制品之间的复制协议是否已由于第一复制品与其它复制品之间的通信丢失而变成不活动的,该通信模块还被配置为确定在第一复制品与另一复制品之间已经恢复通信;以及
同步模块,被配置为请求在不活动状态期间被改变的第一复制品中的条目的更新数据,该同步模块还被配置为控制另一复制品的更新以解决复制协议的违反,直至复制协议恢复到活动状态为止。
13.权利要求11的系统,所述第一复制品还包括:
第一排队模块,被配置为当第一锁定模块已将第一复制信息库中的第一复制品条目锁定时使到第一锁定模块的请求排队;以及
优先级模块,被配置为在第一接收条目增量的处理未完成的同时确定第二接收条目增量优先于第一接收条目增量,且还被配置为命令第一解锁模块将第一复制品解锁,且还被配置为使第一排队模块上的第一接收条目增量排队,直至对于第二接收条目增量而言处理已完成为止。
14.权利要求13的系统,其中,所述优先级模块还被配置为识别用于第一接收条目增量的第一优先级数并识别用于第二接收条目增量的第二优先级数,且还被配置为确定第二优先级数优先于第一优先级数。
15.权利要求13的系统,其中,所述优先级模块还被配置为识别与关联于第一接收条目增量的第一外部用户相关联的第一优先级数且被配置为识别与关联于第二接收条目增量的第二外部用户相关联的第二优先级数,并确定第二优先级数优先于第一优先级数。
16.权利要求11的系统,所述第一复制品还包括:
第一排队模块,被配置为当第一锁定模块已将第一复制信息库中的第一复制品条目锁定时使到第一锁定模块的请求排队。
17.权利要求11的系统,其中,所述第一事务模块还被配置为接收来自外部用户的事务请求以将第一复制品条目进行更新以包括所接收数据改变,其中,所述第一事务模块还被配置为在接收到事务请求之后使第一添加增量模块创建第一条目增量。
18.权利要求11的系统,其中,所述第一事务模块还被配置为在第一复制品已接收到成功指示符之后通知外部用户事务请求已被成功确认,且还被配置为接收来自外部用户的请求以将数据改变提交给第一复制品条目和第二复制品条目。
19.权利要求11的系统,其中,所述第一事务模块还被配置为在将第一复制品条目解锁并将第二复制品条目解锁之后通知外部用户数据改变已被成功地应用于网络数据仓库。
20.一种用于对等计算网络中的网络数据仓库的实时数据管理的方法,包括:
接受对多个复制品中的第一复制品中的网络数据仓库的条目的数据更新,第一复制品在多个服务器中的第一服务器上被托管,第一复制品包含网络数据仓库的至少一部分作为对应于网络数据仓库中的条目的多个复制品条目;
识别对应于网络数据仓库的该条目的第一复制品上的所述多个复制品条目中的复制品条目;
检查所述多个复制品的第一复制品与其它复制品之间的复制协议,其中,每个复制协议描述所述多个复制品中的第一复制品与另一复制品之间的关系;
确定所述多个复制品的第一复制品与第二复制品之间的第一复制协议的状态,所述第二复制品在所述多个服务器中的第二服务器上被托管;
更新第一复制品上的已识别复制品条目;以及
如果第一复制协议处于活动状态且如果可以将所接受数据更新拷贝到第二复制品,则将所接受数据更新复制到第二复制品上。
21.权利要求20的方法,还包括:
将另一数据更新从所述多个复制品中的第三复制品复制到第一复制品中的另一复制品条目,其中,所述第一复制品和所述第三复制品具有处于活动状态的复制协议,并且其中,所述另一数据更新已被从第三复制品拷贝到第一复制品。
22.权利要求20的方法,还包括:
确定第一复制品与多个其它复制品之间的多个复制协议已变为活动状态,
与所述多个其它复制品协商以确定第一复制品上和所述多个其它复制品上需要的附加数据更新的最小数目,以便使第一复制品上的复制品条目与所述多个其它复制品上的复制品条目同步,以便将数据更新采用于在所述多个复制协议不活动时所述多个复制品上的未被更新的复制品条目。
23.权利要求22的方法,还包括在协商中应用合并规则来确定最佳议定的条目内容,所述第一复制品以及所述多个其它复制品上的复制品条目已经历独立且不相容的更新。
24.权利要求22的方法,其中,合并规则包括使得用于复制品条目的后面的数据更新优先于用于复制品条目的先前的数据更新和优先于基于时间的优先而应用客户端优先次序中的至少一个。
25.权利要求20的方法,还包括:
在所述多个复制品中的复制品降到由客户端或代表客户端设置的同步服务质量阈值之下时暂停该复制品对关于客户端的网络数据仓库的数据查询进行响应的能力。
26.权利要求20的方法,还包括:
确定与第三复制品和第一复制品有关的复制协议已由于所述多个复制品中的第一复制品与第三复制品之间的通信丢失而变成不活动的;
确定第三复制品与第二复制品之间的复制协议也已由于第二复制品与第三复制品之间的通信丢失而变成不活动的;
确定在第一复制品与第三复制品之间已恢复通信;以及
请求用于第一复制品的数据更新。
27.权利要求20的方法,其中,将数据更新复制到第二复制品包括:
创建用于第二复制品中的第二复制品条目的数据更新的副本,第二复制品条目对应于网络数据仓库中的条目;
创建用于第一复制品条目的第一条目增量,其中,第一条目增量包括数据更新;
将第一复制品上的第一复制品条目中的条目锁定;
确认第一条目增量具有与条目相容的特性;
通过网络将所接受数据更新的副本发送到第二复制品;
在第二复制品上创建第二条目增量,其中,第二条目增量包括适合于第二复制品条目的格式的数据更新;
将第二复制品上的第二复制品条目中的条目锁定;
在将第二复制品条目中的条目锁定之后从第二复制品向第一复制品发送成功指示符;
将第一条目增量应用于第一复制品条目,并将第二条目增量应用于第二复制品条目,以使得对第一复制品和第二复制品中的条目的请求随后将提供数据更新;
在将第一条目增量应用于第一复制品条目之后将第一复制品条目解锁;以及
在将第二条目增量应用于第二复制品条目之后将第二复制品条目解锁。
28.权利要求26的方法,还包括:
接收用于网络数据仓库中的条目的第二数据更新,该条目对应于位于第二复制品上的第二复制品条目;
在第二复制品条目上创建第三条目增量,其中,第三条目增量包括第二数据更新;
通过第三条目增量将第二复制品上的第二复制品条目中的条目锁定;
接收来自第二条目增量的锁定请求;
在应用锁定优先级规则并使第三条目增量的锁定排队之后将被第三条目增量锁定的第二复制品条目中的条目解锁,所述锁定优先级规则确定第二条目增量优先于第三条目增量;以及
在将第二复制品条目解锁之后,其中对所述第二复制品条目的解锁是在将第二条目增量应用于第二复制品条目之后,重新锁定用于第三条目增量的第二复制品中的条目。
29.权利要求28的方法,其中,应用锁定优先级规则包括:
识别第一复制品的第一优先级数,该第一优先级数与第一复制品相关联;
识别用于第三复制品的第二优先级数,该第二优先级数与第三复制品相关联;以及
确定第一优先级数具有高于第二优先级数的优先级,其中,该确定指示由第三复制品应用的锁定将被解除以支持用于第一复制品的锁定。
30.权利要求28的方法,其中,应用锁定优先级规则包括:
识别与关联于第一复制品的第一外部用户相关联的第一优先级数;
识别与关联于第三复制品的第二外部用户相关联的第二优先级数;以及
确定第一优先级数具有高于第二优先级数的优先级,其中,该确定指示由第三复制品应用的锁定将被解除以支持用于第一复制品的锁定。
31.权利要求26的方法,还包括:
接收用于网络数据仓库中的条目的第二数据更新,该条目对应于位于第二复制品上的第二复制品条目,其中,在所接收数据更新之后接收第二数据更新;
在第二复制品条目上创建第三条目增量,其中,第三条目增量包括适合于第二复制品条目的格式的第二数据更新;
在由于第二条目增量而注意到第二复制品上的第二复制品条目中的锁定条目之后使用于第三条目增量的第二复制品上的第二复制品条目中的条目上的锁定排队;以及
在将第二复制品条目解锁之后,其中对第二复制品条目的解锁是在将第二条目增量应用于第二复制品条目之后,将用于第三条目增量的第二复制品中的条目锁定。
32.权利要求26的方法,还包括:
接收来自外部用户的事务请求以将第一复制品条目进行更新以包括所接收数据更新,其中,在接收到事务请求之后创建第一条目增量。
33.权利要求26的方法,还包括:
在第一复制品接收到成功指示符之后通知外部用户事务请求已被成功确认;以及
接收来自外部用户的请求以将数据更新提交给第一复制品条目和第二复制品条目。
34.权利要求26的方法,还包括:
在将第一复制品条目解锁之后和在将第二复制品条目解锁之后通知外部用户数据更新已被成功地应用于网络数据仓库。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US97595607P | 2007-09-28 | 2007-09-28 | |
US60/975956 | 2007-09-28 | ||
US60/975,956 | 2007-09-28 | ||
PCT/EP2008/062957 WO2009040425A2 (en) | 2007-09-28 | 2008-09-26 | System and method for replication and synchronisation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101933014A CN101933014A (zh) | 2010-12-29 |
CN101933014B true CN101933014B (zh) | 2013-11-20 |
Family
ID=40511940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008801180235A Active CN101933014B (zh) | 2007-09-28 | 2008-09-26 | 用于复制和同步的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8121979B2 (zh) |
EP (1) | EP2208148B1 (zh) |
CN (1) | CN101933014B (zh) |
BR (1) | BRPI0817505A2 (zh) |
WO (1) | WO2009040425A2 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9355100B2 (en) * | 2008-09-22 | 2016-05-31 | Qualcomm Incorporated | Methods and apparatus for reconciling versions of media context lists in communications networks |
US8620883B2 (en) * | 2009-03-02 | 2013-12-31 | Qualcomm, Incorporated | Apparatus and methods of reconciling different versions of an ordered list |
CN103430511B (zh) | 2011-03-21 | 2017-03-08 | 汤姆逊许可公司 | 在包括多个设备的对等网络中复制数据的方法和设备 |
US9483259B1 (en) * | 2012-05-07 | 2016-11-01 | Google Inc. | System and method for providing real-time execution of source code in a collaborative online software development environment |
US8966382B1 (en) * | 2012-09-27 | 2015-02-24 | Emc Corporation | Managing production and replica copies dynamically |
US8990158B2 (en) | 2013-01-04 | 2015-03-24 | International Business Machines Corporation | Copy of replication status for synchronization |
US9197700B2 (en) * | 2013-01-18 | 2015-11-24 | Apple Inc. | Keychain syncing |
CN104219271B (zh) * | 2013-06-05 | 2017-10-27 | 北京齐尔布莱特科技有限公司 | 基于多线程异步下载页面的多服务器同步方法 |
US9798791B1 (en) * | 2013-12-04 | 2017-10-24 | Ca, Inc. | System and method for filtering files during data replication |
EP2963900A1 (en) * | 2014-06-30 | 2016-01-06 | Nokia Solutions and Networks Oy | Method, apparatus and computer program for operating a data directory |
US10423584B2 (en) * | 2015-11-23 | 2019-09-24 | Netapp Inc. | Synchronous replication for file access protocol storage |
US10019502B2 (en) * | 2015-11-27 | 2018-07-10 | Netapp Inc. | Non-disruptive baseline and resynchronization of a synchronous replication relationship |
US10025680B2 (en) | 2015-12-16 | 2018-07-17 | Ab Initio Technology Llc | High throughput, high reliability data processing system |
US10873626B2 (en) | 2016-04-29 | 2020-12-22 | Hewlett Packard Enterprise Development Lp | Target driven peer-zoning synchronization |
US11151162B2 (en) * | 2019-03-19 | 2021-10-19 | Netapp Inc. | Timestamp consistency for synchronous replication |
US11409714B2 (en) | 2019-06-21 | 2022-08-09 | International Business Machines Corporation | Evaluating pending object replication rules |
US11159612B1 (en) | 2020-04-28 | 2021-10-26 | Hewlett Packard Enterprise Development Lp | Determining non-TDP zones in a storage area network |
CN111939565B (zh) * | 2020-08-28 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 虚拟场景的显示方法、系统、装置、设备以及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301589B1 (en) * | 1997-12-04 | 2001-10-09 | Hitachi, Ltd. | Replication method |
CN101038591A (zh) * | 2007-04-11 | 2007-09-19 | 华为技术有限公司 | 数据库同步方法及系统 |
CN101044741A (zh) * | 2005-07-08 | 2007-09-26 | 松下电器产业株式会社 | 安全的对等消息业务 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117666A1 (en) * | 2002-12-12 | 2004-06-17 | Sun Microsystems, Inc. | Invalidation facility for synchronizing information domains |
US8010498B2 (en) * | 2005-04-08 | 2011-08-30 | Microsoft Corporation | Virtually infinite reliable storage across multiple storage devices and storage services |
EP2492813A3 (en) * | 2005-09-27 | 2013-01-30 | Onaro | Method And Systems For Validating Accessibility And Currency Of Replicated Data |
-
2008
- 2008-09-26 CN CN2008801180235A patent/CN101933014B/zh active Active
- 2008-09-26 BR BRPI0817505 patent/BRPI0817505A2/pt not_active Application Discontinuation
- 2008-09-26 US US12/679,942 patent/US8121979B2/en active Active
- 2008-09-26 EP EP08834331.4A patent/EP2208148B1/en active Active
- 2008-09-26 WO PCT/EP2008/062957 patent/WO2009040425A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301589B1 (en) * | 1997-12-04 | 2001-10-09 | Hitachi, Ltd. | Replication method |
CN101044741A (zh) * | 2005-07-08 | 2007-09-26 | 松下电器产业株式会社 | 安全的对等消息业务 |
CN101038591A (zh) * | 2007-04-11 | 2007-09-19 | 华为技术有限公司 | 数据库同步方法及系统 |
Non-Patent Citations (3)
Title |
---|
John Merrells.LDAP Replication Architecture.《IETF STANDARD-WORKING-DRAFT,INTERNET ENGINEERING TASK FORCE,IETF》.2003, * |
Richard Smith等.Oracle Internet Directory:Administrator"s Guide.Release 2.0.6.《ORACLE》.1999, * |
TELECOMMUNICATION STANDARDIZATION SECTOR OF ITU.Information technology-Open Systems Interconnection-The Directory:Replication.《ITU-T STANDARD IN FORCE(I),INTERNATIONAL TELECOMMUNICATION UNION,GENEVA》.2005, * |
Also Published As
Publication number | Publication date |
---|---|
WO2009040425A2 (en) | 2009-04-02 |
BRPI0817505A2 (pt) | 2015-03-24 |
EP2208148B1 (en) | 2014-06-25 |
EP2208148A2 (en) | 2010-07-21 |
WO2009040425A3 (en) | 2010-06-17 |
US8121979B2 (en) | 2012-02-21 |
CN101933014A (zh) | 2010-12-29 |
US20100223232A1 (en) | 2010-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101933014B (zh) | 用于复制和同步的系统和方法 | |
US8417670B1 (en) | Dynamic membership management in a distributed system | |
US5434994A (en) | System and method for maintaining replicated data coherency in a data processing system | |
EP1326184B1 (en) | Conflict resolution for collaborative work system | |
US20200218823A1 (en) | Method and system for a distributed computing system | |
US6662196B2 (en) | Collision avoidance in bidirectional database replication | |
US8412790B2 (en) | Method, system and computer readable recording medium for determining major group under split-brain syndrome | |
CN1964297A (zh) | 帮助协调独立更新的分布式数据的方法和系统 | |
CN102932164A (zh) | 群集客户端故障转移 | |
CN104239439A (zh) | 选择性的数据库复制 | |
JP2002504249A (ja) | 複製されたデータ対象の初期化 | |
US11968311B2 (en) | Multi-shard transactions in a Byzantine computing environment | |
US20100145911A1 (en) | Serverless Replication of Databases | |
US7890468B2 (en) | Rollback support in distributed data management systems | |
JP2023546897A (ja) | オブジェクト処理方法、装置、及びコンピュータ機器 | |
CN110543606A (zh) | 一种基于联盟链存储族谱数据的方法及系统 | |
JP2011522337A (ja) | サーバクラスタに配信されるコンピュータシステムのソフトウェアモジュールの同期化方法、同期化システムおよびデータストレージへの適用 | |
Wang | The adversary capabilities in practical byzantine fault tolerance | |
Beyer et al. | Increasing availability in a replicated partitionable distributed object system | |
KR102294048B1 (ko) | 블록체인 응용서비스의 복제 실행 방법 및 블록체인 응용서비스의 복제 실행 시스템 | |
Rabinovich et al. | An efficient and highly available read-one write-all protocol for replicated data management | |
US11416449B2 (en) | Method of synchronous deletion for distributed storage system | |
CN116846916B (zh) | 数据同步方法、装置、电子设备及计算机可读存储介质 | |
JP2012508412A (ja) | サーバクラスタに配信されるコンピュータシステムのソフトウェアモジュール集合の同期化方法および同期化システム | |
Sapate et al. | Survey on comparative analysis of database replication techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |