欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在應(yīng)用定義的系統(tǒng)中一致性單元的復(fù)制的制作方法

文檔序號(hào):6396131閱讀:138來(lái)源:國(guó)知局
專利名稱:在應(yīng)用定義的系統(tǒng)中一致性單元的復(fù)制的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)復(fù)制系統(tǒng),且尤其涉及在應(yīng)用定義的體系中數(shù)據(jù)的復(fù)制。
背景技術(shù)
自從因特網(wǎng)出現(xiàn)后,復(fù)制若干不同的系統(tǒng)的數(shù)據(jù)組變得越來(lái)越重要。在故障情況,復(fù)制提供很大的數(shù)據(jù)冗余。復(fù)制還提供更大的數(shù)據(jù)可用性,更大的負(fù)載平衡,以及用戶與數(shù)據(jù)之間地理上更大的鄰近性。
基于狀態(tài)的復(fù)制系統(tǒng)利用一個(gè)被稱為一致性單元的術(shù)語(yǔ)來(lái)定義緊密一致性的數(shù)據(jù)組?!熬o密一致性”指的是給定的復(fù)制在一致性單元中包含全部數(shù)據(jù)或沒(méi)有數(shù)據(jù),這使得數(shù)據(jù)的使用者不必在只有部分?jǐn)?shù)據(jù)出現(xiàn)時(shí)加以補(bǔ)償。
在基于狀態(tài)的復(fù)制系統(tǒng)中一致性單元的概念不是新的。大多數(shù)那樣的系統(tǒng)定義一致性單元的某些概念,但只停留在低水平上,即例如在表中具體一行中的所有數(shù)據(jù)一起發(fā)送一起應(yīng)用的水平上。這些系統(tǒng)強(qiáng)制應(yīng)用的程序編寫(xiě)者或者裁剪他們的數(shù)據(jù)以適合系統(tǒng)的預(yù)定的低級(jí)一致性單元(這不總是可能的),或者寫(xiě)入額外的代碼以檢測(cè)并處理數(shù)據(jù)的不一致性,如處理不緊密一致的復(fù)制數(shù)據(jù)。
如名稱所表明的,應(yīng)用定義的一致性單元給予應(yīng)用程序規(guī)定對(duì)復(fù)制系統(tǒng)的緊密一致性的邊界的能力。因而,那樣的應(yīng)用能夠自由地以任何一種最適合數(shù)據(jù)的方式模型化其數(shù)據(jù)(而不是以最適合復(fù)制系統(tǒng)的方式),同時(shí)減輕了處理不一致?tīng)顟B(tài)的復(fù)雜性。
與一致性單元相對(duì),改變單元是采用沖突檢測(cè)和解決方法的數(shù)據(jù)的粒度(細(xì)節(jié)),因而是保存“改變歷史”的粒度(細(xì)節(jié))。在大多數(shù)基于狀態(tài)的復(fù)制系統(tǒng)中,改變單元固定于一個(gè)粒度或小選項(xiàng)組中的粒度之一,如具體的行或列。
雖然可能定義改變單元和一致性單元相同的系統(tǒng),有時(shí)也希望它們是不同的-或更特別地希望一個(gè)一致性單元包含多個(gè)改變單元。例如,考慮Customer(客戶),Order(訂單),和Order Detail(訂單細(xì)則)數(shù)據(jù)庫(kù)的第一復(fù)制R1和第二復(fù)制R2。若在第一復(fù)制R1上創(chuàng)建客戶數(shù)據(jù)、訂單數(shù)據(jù)和訂單細(xì)則數(shù)據(jù),最好數(shù)據(jù)作為第二復(fù)制R2上的一個(gè)單元那樣一起復(fù)制和應(yīng)用。即在此情況的一致性單元包括客戶數(shù)據(jù)、該客戶的所有訂單數(shù)據(jù)和所有該客戶訂單的訂單細(xì)則數(shù)據(jù)?,F(xiàn)假設(shè),在以后對(duì)該客戶的記帳地址在第一復(fù)制R1上更新,且在此改變的復(fù)制對(duì)第二復(fù)制R2發(fā)生之前,在R2上輸入了該客戶的新訂單。希望的結(jié)果是,在不做復(fù)制時(shí),復(fù)制R1和R2均具有新的記帳地址和新的訂單。這樣此結(jié)果需要這兩個(gè)更新不沖突,這就提出,記帳地址應(yīng)在不同于該新訂單的改變單元中。存在其它例子來(lái)說(shuō)明需要區(qū)分改變單元和一致性單元的粒度,包括限止復(fù)制帶寬等。還注意到,許多現(xiàn)代的基于狀態(tài)的復(fù)制系統(tǒng)允許一致性單元包含多個(gè)改變單元。
允許多點(diǎn)更新數(shù)據(jù)的現(xiàn)有的復(fù)制方案通常復(fù)制具體表格的行的純改變,其中沖突的檢測(cè)和解決發(fā)生在具體表格中一行或一列的粒度上。然而有需要復(fù)制語(yǔ)義上相關(guān)的諸行,因?yàn)樗鼈兪峭粯I(yè)務(wù)對(duì)象的一部分。傳播純改變到目標(biāo)復(fù)制的傳統(tǒng)的復(fù)制技術(shù)能傳播改變到以多個(gè)表形式的多個(gè)行,那些表在語(yǔ)義上通過(guò)業(yè)務(wù)邏輯相關(guān),并能在不同時(shí)間作為不同的處理的部分被應(yīng)用。然而這些方案不保證在“業(yè)務(wù)對(duì)象”層上組合的諸行之間保持一致性。
再次考慮包含來(lái)自三個(gè)數(shù)據(jù)庫(kù)表客戶、訂單和訂單細(xì)則的行的數(shù)據(jù)組的同步。假設(shè)用戶應(yīng)用插入新的客戶以及新的訂單和新的訂單細(xì)則。傳統(tǒng)上,復(fù)制不能保證保持在不同復(fù)制上應(yīng)用這些改變的次序,但是可以傳播插入項(xiàng)到客戶表,隨后到訂單表插入項(xiàng),最終到訂單細(xì)則表插入項(xiàng)。若在應(yīng)用訂單改變和訂單細(xì)則改變之間存在錯(cuò)誤或重大的延遲,看來(lái)好像某些訂單沒(méi)有訂單細(xì)則或?qū)δ承┯唵沃荒芸吹讲糠旨?xì)則。(此情況一般只是暫時(shí)的,下次成功地完成同步時(shí)將得到解決)。然而如果象以前按照基于應(yīng)用的一致性單元所定義的那樣,應(yīng)用要求所有邏輯相關(guān)的記錄在給定時(shí)刻在任何方或者全部不出現(xiàn)或者一起出現(xiàn),則只出現(xiàn)部分?jǐn)?shù)據(jù)組就成了問(wèn)題。另外例如,若有兩個(gè)應(yīng)用(或同一應(yīng)用的兩個(gè)實(shí)例)在系統(tǒng)上運(yùn)行——第一個(gè)在復(fù)制R1上更新,第二個(gè)從復(fù)制R2上讀信息,目的是從復(fù)制R2進(jìn)行讀取的應(yīng)用依賴于那里的業(yè)務(wù)對(duì)象的緊密的一致性,而不限止該應(yīng)用模型化它們?cè)跀?shù)據(jù)庫(kù)中的業(yè)務(wù)對(duì)象的方式。
在應(yīng)用定義的系統(tǒng)中對(duì)有效的復(fù)制機(jī)制有越來(lái)越大的需求,它用于高度可伸縮的系統(tǒng)以便復(fù)制語(yǔ)義上相關(guān)的對(duì)象,使得在那些相關(guān)對(duì)象之間的關(guān)系次序約束被維持,且為向其它復(fù)制的轉(zhuǎn)播保持在“業(yè)務(wù)對(duì)象”層上的一致性。如前所述,基于狀態(tài)的復(fù)制系統(tǒng)必須一起發(fā)送和應(yīng)用在給定的一致性單元中的所有更新。在單元粒度是固定的這些系統(tǒng)中,實(shí)現(xiàn)是相當(dāng)直接的。然而,對(duì)于應(yīng)用定義的一致性單元,需要附加的邏輯。

發(fā)明內(nèi)容
下面提出本發(fā)明的簡(jiǎn)單概述,以提供對(duì)本發(fā)明某些方面的基本理解。此概述不是本發(fā)明的廣泛的概論。不企圖識(shí)別本發(fā)明的關(guān)鍵/重要元素或勾劃出本發(fā)明的范圍。唯一目的是以簡(jiǎn)化的形式提出本發(fā)明的某些概念,作為在后面提出的更詳細(xì)論述的序言。
本發(fā)明涉及一特征,用于在數(shù)據(jù)集中的復(fù)制,該數(shù)據(jù)集支持配置需要保持“業(yè)務(wù)對(duì)象”一致性的應(yīng)用。本發(fā)明允許應(yīng)用利用那樣的同步行為,它嚴(yán)格地模型化業(yè)務(wù)對(duì)象而不是具體的行。按本主題發(fā)明的應(yīng)用在定義復(fù)制范圍的同時(shí)模型化業(yè)務(wù)對(duì)象,使得復(fù)制過(guò)程能傳播整個(gè)業(yè)務(wù)對(duì)象——這就表明其它復(fù)制對(duì)業(yè)務(wù)對(duì)象的部分圖像不可見(jiàn)。
本發(fā)明便于使被改變的數(shù)據(jù)的業(yè)務(wù)對(duì)象被整體傳播到其它復(fù)制。與按行或按列(傳統(tǒng)系統(tǒng)的粒度水平)地傳播改變不同,本發(fā)明通過(guò)將最小的粒度水平提升到在“業(yè)務(wù)對(duì)象”層上語(yǔ)義相關(guān)數(shù)據(jù)的組合,補(bǔ)充了傳統(tǒng)的粒度。在關(guān)系型數(shù)據(jù)庫(kù)的背景中描述應(yīng)用定義的一致性單元時(shí),本實(shí)施例在后面稱為“邏輯記錄”。在一個(gè)實(shí)施例中,組成一致性單元的諸行和列連接成公共的“父行”——一個(gè)表的唯一的一行,在“父表”中沒(méi)有兩行能是同一一致性單元的部分。父行是應(yīng)用數(shù)據(jù)的一部分——例如若訂單細(xì)則連接到訂單,訂單連接到客戶,選擇客戶作為公共“父行”意味著與給定客戶本身結(jié)合的該客戶(如通過(guò)連接定義)的所有訂單的所有訂單細(xì)則組成單個(gè)一致性單元。(請(qǐng)回憶,每個(gè)之前的例子中,訂單細(xì)則記錄在一個(gè)表中,訂單在第二個(gè)表,客戶在第三表)。對(duì)一致性單元(如任何公共的改變歷史)的復(fù)制元數(shù)據(jù)保持在“父行”上。通過(guò)分析這些行之間的連接以確定給定一致性單元的邊界、一起發(fā)送任何更新到組成一致性單元的所有行、并應(yīng)用目標(biāo)復(fù)制上單個(gè)處理中有關(guān)的任何更新,復(fù)制系統(tǒng)保持緊密的一致性。因此,在需要所有邏輯相關(guān)的記錄在給定時(shí)間和給定方整體出現(xiàn)或整體不出現(xiàn)的那些應(yīng)用中,在一致性單元的有關(guān)行之間能保持關(guān)系和次序約束。
在另外實(shí)施例中,大部分或所有應(yīng)用數(shù)據(jù)能存在于單個(gè)表中,在此情況下應(yīng)用希望將其組合到一致性單元的那些數(shù)據(jù),沒(méi)有到另外表中應(yīng)用數(shù)據(jù)的公共連接。在目錄服務(wù)中這種情況可能是普遍的,此時(shí)應(yīng)用的所希望的一致性單元包括任意的目錄對(duì)象組,每個(gè)目錄對(duì)象可能整體包含在共同的表中。在此情況,相關(guān)對(duì)象的聯(lián)系能通過(guò)共同的鍵值進(jìn)行,如“consistencyUnitKey”目錄屬性的值。復(fù)制元數(shù)據(jù)能與一個(gè)對(duì)象一起存儲(chǔ),或存入只由目錄復(fù)制系統(tǒng)使用的專用表中。
除了在行或列的層次上以外,本發(fā)明還利用協(xié)調(diào)算法來(lái)在一致性單元層次上檢測(cè)和解決沖突,并將解決的數(shù)據(jù)會(huì)聚到目標(biāo)的復(fù)制。
為實(shí)現(xiàn)上述和有關(guān)目的,這里將結(jié)合以下描述及附圖描述本發(fā)明的某些示例方面。然而,這些方面僅表明了能利用本發(fā)明的原理的各種方法中的少數(shù)一些,而本發(fā)明不試圖包括所有那些方面及它們的等效方案。結(jié)合附圖,從下面考慮的本發(fā)明詳述中,本發(fā)明的其他優(yōu)點(diǎn)及新穎特征將變得一目了然。


圖1示出根據(jù)本發(fā)明的復(fù)制流程圖。
圖2示出對(duì)應(yīng)用定義的一致性單元,附加邏輯的邏輯記錄方案的流程圖。
圖3示出邏輯記錄方案的一致性單元。
圖4示出本發(fā)明的示范模型。
圖5示出對(duì)圖4的例子的示范數(shù)據(jù)。
圖6示出將一致性單元改變追蹤信息分離到它自己的表中的另一種應(yīng)用定義復(fù)制方案。
圖7示出可用來(lái)執(zhí)行所揭示的體系結(jié)構(gòu)的計(jì)算機(jī)的方框圖。
圖8示出根據(jù)本發(fā)明的示范計(jì)算機(jī)環(huán)境的大綱框圖。
具體實(shí)施例方式
定義下面的術(shù)語(yǔ)在通篇描述中使用,這里提供它們的定義以幫助理解本主題發(fā)明的各方面。
源復(fù)制從它發(fā)起改變的數(shù)據(jù)源。
目標(biāo)復(fù)制向它傳播改變的數(shù)據(jù)源。
同步過(guò)程將從兩個(gè)復(fù)制來(lái)的數(shù)據(jù)組同步到最終的會(huì)聚狀態(tài)的過(guò)程。
沖突當(dāng)同樣的數(shù)據(jù)元素在兩個(gè)復(fù)制中被修改時(shí),復(fù)制系統(tǒng)標(biāo)記改數(shù)據(jù)元素為沖突。
沖突檢測(cè)同步中的過(guò)程,它調(diào)查在源和目標(biāo)復(fù)制處的元數(shù)據(jù),查看修改是否沖突。
沖突解決同步中的過(guò)程,它在一旦發(fā)生沖突時(shí)決定沖突的勝方和負(fù)方。
行系屬(lineage)捕捉行的改變歷史的復(fù)制元數(shù)據(jù),此元數(shù)據(jù)捕捉行的不同更新并保持追蹤它們的版本。
列版本捕捉列的哪個(gè)版本是由哪個(gè)復(fù)制作出的復(fù)制元數(shù)據(jù)。
墓碑元數(shù)據(jù)捕捉行的刪除的復(fù)制元數(shù)據(jù)。
邏輯記錄需要作為一致性單元傳播的父行和子行的集合。
邏輯記錄連接定義兩個(gè)表之間的關(guān)系,這兩個(gè)表是將在復(fù)制過(guò)程中保持的同一邏輯記錄的一部分;它類似于在兩表之間規(guī)定聯(lián)接。“邏輯記錄連接”命名兩個(gè)表,并規(guī)定聯(lián)接條件來(lái)表示兩個(gè)表之間關(guān)系?!斑壿嬘涗涍B接”條件通常采取TABLE1.COLUMN=TABLE2.COLUMN(表1.列=表2.列)的形式。該條件保證具有與表1中相同列值的表2中所有行將作為“邏輯記錄”被復(fù)制。如,邏輯記錄連接Customer.CustomerID=Order.CustomerID(客戶.客戶ID=訂單.客戶ID)表明,給定的客戶行和相關(guān)的訂單現(xiàn)在是同一邏輯記錄的一部分。
頂層父行在邏輯記錄中起父輩作用的行。
子行邏輯記錄的成員行。
邏輯記錄的重排引起邏輯記錄中的行的成員改變的修改。
父識(shí)別符邏輯記錄的識(shí)別符。這通常是頂層父行的行識(shí)別符。
同步定位標(biāo)(anchor)確定兩個(gè)復(fù)制不同步程度的實(shí)體。
現(xiàn)在參考附圖描述本發(fā)明,所有圖中類似的參考號(hào)用于參考類似的部件。下面描述中為了解釋的目的,列出許多特定的細(xì)節(jié),以便提供對(duì)本發(fā)明透徹的理解。然而很明顯,沒(méi)有這些特定的細(xì)節(jié)本發(fā)明也能實(shí)現(xiàn)。在另外的例子中,以方框圖形式示出眾知的結(jié)構(gòu)和設(shè)備,以便于描述本發(fā)明。
在本專利申請(qǐng)中使用的術(shù)語(yǔ)“組件”和“系統(tǒng)”意在指代與計(jì)算機(jī)有關(guān)的實(shí)體,無(wú)論是硬件、軟硬件組合、軟件、或執(zhí)行中的軟件。例如,組件可以是,但不限于,在處理器上運(yùn)行的過(guò)程、處理器、對(duì)象、可執(zhí)行程序、執(zhí)行的線程、程序和/或計(jì)算機(jī)。作為示范,在服務(wù)器上運(yùn)行的應(yīng)用及服務(wù)器都可以是組件。一個(gè)或多個(gè)組件能駐留在過(guò)程和/或執(zhí)行的線程中,且一個(gè)組件能位于一臺(tái)計(jì)算機(jī)和/或分布在二臺(tái)或多臺(tái)計(jì)算機(jī)之間。
這里用的術(shù)語(yǔ)“推論”通常指的是從事件和/或數(shù)據(jù)捕捉的一組觀察,推理或推論系統(tǒng)、環(huán)境和/或用戶的狀態(tài)的過(guò)程。例如,推論能用于識(shí)別特定的環(huán)境或活動(dòng),或能產(chǎn)生狀態(tài)的概率分布。推論可以是概率的——即,是根據(jù)數(shù)據(jù)或事件的考慮,計(jì)算所關(guān)心的狀態(tài)的概率分布。推論還能指代用于從一組事件和/或數(shù)據(jù)組成較高層事件的技術(shù)。那樣的推論導(dǎo)致從一組觀察的事件和/或存儲(chǔ)的事件數(shù)據(jù)構(gòu)成新的事件或活動(dòng),而不論那些事件是否緊密地時(shí)間相關(guān),以及不論事件和數(shù)據(jù)是否來(lái)自一個(gè)或若干事件和數(shù)據(jù)源。
現(xiàn)參考圖1,示出了按本發(fā)明的復(fù)制流程圖。為說(shuō)明的目的,提供至少一個(gè)整體或部分地駐留在每個(gè)源位置100和目標(biāo)位置102的同類的數(shù)據(jù)集合。在此特定實(shí)施例中,源位置100包括第一數(shù)據(jù)集合(或源復(fù)制)104,它能是周期更新的典型網(wǎng)絡(luò)數(shù)據(jù)庫(kù),且它的更新同步于遠(yuǎn)程數(shù)據(jù)集合(或目標(biāo)復(fù)制)106。源復(fù)制104能是目標(biāo)復(fù)制106的冗余拷貝,其中對(duì)源復(fù)制104作出改變,并需要同步到目標(biāo)復(fù)制106;或者是在其中作出改變的源復(fù)制104的子集,改變需要同步到目標(biāo)復(fù)制106。同類數(shù)據(jù)集合也能包括目錄服務(wù)數(shù)據(jù)結(jié)構(gòu)。且任何其它同類數(shù)據(jù)集合需要不同數(shù)據(jù)集合之間數(shù)據(jù)的連續(xù)更新。
在某時(shí)刻,希望協(xié)調(diào)或“同步”源100和目標(biāo)102,使得源復(fù)制104發(fā)送所有改變到目標(biāo)復(fù)制106。在對(duì)等環(huán)境中,在目標(biāo)102接收的那些改變隨后或從目標(biāo)102,或直接從源100傳播到請(qǐng)求同步的其它遠(yuǎn)程的數(shù)據(jù)集合。
更進(jìn)一步,與應(yīng)用相關(guān)的源復(fù)制104和源100接收一個(gè)或多個(gè)更新。與在源100和目標(biāo)102處的每段復(fù)制數(shù)據(jù)相關(guān)的是元數(shù)據(jù)。每次改變導(dǎo)致到改變單元及其相關(guān)的一致性單元的元數(shù)據(jù)的更新。源復(fù)制104的被改變數(shù)據(jù)的元數(shù)據(jù)被用于產(chǎn)生被改變數(shù)據(jù)的元數(shù)據(jù)的一致性單元105。如上指出,一致性單元105能是單個(gè)改變單元。然而按本發(fā)明的新穎的方面,一致性單元105包含一個(gè)或多個(gè)改變單元,一致性單元105包括源復(fù)制104的所有語(yǔ)義相關(guān)的被改變數(shù)據(jù)記錄。
在操作中,目標(biāo)102周期地請(qǐng)求與源100同步,以便于目標(biāo)復(fù)制106與源復(fù)制104同步。當(dāng)源100接收同步請(qǐng)求時(shí),源100列舉更新的一致性單元(這里首先表示成包含源復(fù)制104的改變)。然后源100列舉一致性單元105的所有更新的改變單元,并為給定的一致性單元105打包諸改變單元,以便發(fā)送到目標(biāo)102。目標(biāo)102包括接收和識(shí)別更新的信息的目標(biāo)改變識(shí)別組件108。目標(biāo)102還包括目標(biāo)協(xié)調(diào)組件110,它從改變識(shí)別組件108接收列舉的改變、檢測(cè)和解決沖突、并隨后會(huì)聚改變的數(shù)據(jù)到目標(biāo)復(fù)制106。改變的數(shù)據(jù)作為一致性單元傳送到目標(biāo)102,并在單個(gè)處理中傳播到目標(biāo)復(fù)制106。
可以理解,將復(fù)制標(biāo)記為源或目標(biāo)是相對(duì)于哪個(gè)在接收和發(fā)送數(shù)據(jù)。因此為促進(jìn)本發(fā)明的新穎方面,目標(biāo)102能從目標(biāo)應(yīng)用接收改變,在發(fā)生同步時(shí)該改變將送到源100。源100將包括源改變識(shí)別組件112和源協(xié)調(diào)組件114,用于處理和傳播復(fù)制改變。
在操作中,源100周期地請(qǐng)求與目標(biāo)102同步,以便于源復(fù)制104與目標(biāo)復(fù)制106同步。當(dāng)目標(biāo)102從源100接收同步請(qǐng)求時(shí),目標(biāo)102列舉目標(biāo)改變單元的更新的一致性單元(也由一致性單元105表示,但包含目標(biāo)復(fù)制106的改變并以反方向傳送),列舉一致性單元105的所有更新的改變單元,并打包給定的一致性單元的改變單元,以便發(fā)送到源100。源改變識(shí)別組件108接收并識(shí)別更新的信息。源協(xié)調(diào)組件114從改變識(shí)別組件112接收列舉的改變,檢測(cè)并解決沖突,并隨后會(huì)聚改變的數(shù)據(jù)到源復(fù)制104。改變的數(shù)據(jù)傳送到源100并在單個(gè)處理中傳播到源復(fù)制104。打包的改變能被反復(fù)地復(fù)制到接收的復(fù)制,直到完成同步過(guò)程。
現(xiàn)參考圖2,示出了對(duì)應(yīng)用定義的一致性單元105的附加邏輯的邏輯記錄方案的流程圖。雖然為了解釋簡(jiǎn)明起見(jiàn),方法能示作或描述成一系列活動(dòng),可以理解,本發(fā)明不受活動(dòng)的次序的限止,因?yàn)榘幢景l(fā)明,某些活動(dòng)能以不同的次序發(fā)生和/或與這里示出及描述的其它活動(dòng)同時(shí)發(fā)生。例如,本領(lǐng)域的普通技術(shù)人員能理解,方法能另選地表示成如在狀態(tài)圖中那樣的一系列互相關(guān)聯(lián)的狀態(tài)或事件。而且為實(shí)現(xiàn)根據(jù)本發(fā)明的方法,不是所有示出的活動(dòng)都是必需的。
此方案利用邏輯記錄的連接來(lái)定義在改變單元和與它相關(guān)的一致性單元之間的聯(lián)系(或相互關(guān)系)。(在傳統(tǒng)系統(tǒng)中,此聯(lián)系是硬編碼的,例如若改變單元是列且一致性單元是行,則對(duì)給定改變單元的一致性單元是該列駐留的行)。在此方案中的每個(gè)一致性單元與“父行”具有一對(duì)一的關(guān)系。改變追蹤信息與每個(gè)一致性單元相關(guān)且記錄在父行中。因此,一致性單元105包括在為了同步所選擇的第一目的數(shù)據(jù)集合中,所有改變的記錄的有關(guān)的父和子元數(shù)據(jù)表。
流程在200開(kāi)始,在源復(fù)制上發(fā)生改變。每個(gè)改變導(dǎo)致對(duì)改變單元及相關(guān)的一致性單元的元數(shù)據(jù)更新。當(dāng)在用戶數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)改變時(shí),在用戶數(shù)據(jù)庫(kù)中的改變追蹤機(jī)制保持復(fù)制元數(shù)據(jù)的追蹤,然后使這些改變?cè)谝院竽芘c其它復(fù)制同步。在202,目標(biāo)請(qǐng)求同步。響應(yīng)于此,對(duì)每個(gè)更新的單元,如204表明的那樣,源列舉一個(gè)更新的一致性單元。在206,源列舉在該一致性單元中所有更新的改變單元,并將它們打包。然后如208所示,源將對(duì)給定的一致性單元的打包的改變單元發(fā)送到目標(biāo)。完成沖突檢測(cè)和解決,這是同步處理階段,其中比較從同步所涉及的源復(fù)制和目標(biāo)復(fù)制來(lái)的復(fù)制元數(shù)據(jù),并檢測(cè)和解決所有沖突。在210,目標(biāo)在單個(gè)處理中應(yīng)用打包的改變單元,包括更新一致單元的元數(shù)據(jù)。在完成沖突檢測(cè)和解決之后,改變從源復(fù)制傳播到目標(biāo)復(fù)制的情況下,發(fā)生同步處理的階段。在212,執(zhí)行校驗(yàn),判斷是否作出其它更新。若是,流程回到204的入口,著手解決下一個(gè)改變單元。若否,流程到達(dá)停止框,以結(jié)束更新過(guò)程?,F(xiàn)參考圖3,示出邏輯記錄放案的一致性單元300。對(duì)象300只包括一個(gè)頂層父行302和多個(gè)子行304。第一層306包括標(biāo)記為Child1,……ChildN的子行,它們具有作為父輩的頂層父行302。標(biāo)記為Child11,……Child1M和ChildN1,……ChildNZ的第二層子行308具有作為父輩的第一層子行306。根據(jù)包含在數(shù)據(jù)集合中的細(xì)則的數(shù)目能存在更多的子行層,但未示出。
行的每個(gè)層次通過(guò)使用邏輯記錄連接310相聯(lián)系。因此,邏輯記錄連接310建立了在第一子行312和頂層父行302之間的關(guān)系。另外的邏輯記錄連接314被用于提供在第一層306的其余子行和頂層父行302之間的邏輯連接。類似地,第二層308的每個(gè)子行通過(guò)對(duì)應(yīng)的邏輯記錄連接316聯(lián)系它的父行(較高的第一層306的子行)。每個(gè)子行表包括識(shí)別其父行、行的系屬信息和列的版本信息的元數(shù)據(jù)。
有四個(gè)主要的復(fù)制處理階段,每一個(gè)在下面作更詳細(xì)的描述改變追蹤、改變列舉、沖突檢測(cè)和解決以及改變應(yīng)用。
邏輯記錄的改變追蹤當(dāng)在用戶數(shù)據(jù)庫(kù)(或數(shù)據(jù)集合)發(fā)生數(shù)據(jù)改變時(shí),在用戶數(shù)據(jù)庫(kù)中的改變追蹤機(jī)制保持對(duì)復(fù)制元數(shù)據(jù)的追蹤,這隨后允許這些改變?cè)谝院髸r(shí)刻與其它復(fù)制同步。本發(fā)明的一個(gè)假設(shè)是邏輯記錄的每個(gè)成員將只具有一個(gè)頂層父行302。給定任何子行(310,314,316),有可能明確地確定頂層父行302,因?yàn)槊總€(gè)邏輯記錄包括僅一個(gè)頂層父行及多個(gè)子行。參與復(fù)制的每個(gè)行具有行的識(shí)別符,它是GUID值。若該行是邏輯記錄的成員,新的父行識(shí)別符屬性與正規(guī)的復(fù)制元數(shù)據(jù)一起保存。所有子行的父行識(shí)別符是頂層父行的行識(shí)別符。作為邏輯記錄一部分的成員行具有包括行系屬和列版本的復(fù)制元數(shù)據(jù),它們使得能完成行和列層次的沖突檢測(cè)。此外在頂層父行保存新屬性“邏輯記錄系屬”。此屬性包含整個(gè)邏輯記錄的改變歷史。正如行系屬對(duì)每個(gè)復(fù)制保存使用<replica_id,row_version>(復(fù)制_id,行_版本)元組更新該行的輸入項(xiàng),邏輯記錄系屬對(duì)每個(gè)復(fù)制保存一個(gè)輸入項(xiàng),它使用<replica_id,logical_record_version>(復(fù)制_id,邏輯_記錄_版本)元組修改邏輯記錄。
當(dāng)更新邏輯記錄的成員行時(shí),子行的更新行系屬如下確定<new row lineage>(<新的行系屬>)=<current row lineage>(<當(dāng)前行系屬>)+具有<current replica_id,max version oflogical_record_lineage+1>的一個(gè)新的輸入項(xiàng)類似地,整個(gè)邏輯記錄的logical_record_lineage(邏輯_記錄_系屬)如下確定
<new logical_record_lineage>(<新的邏輯_記錄_系屬>)=<currentlogical_record_lineage>(<當(dāng)前邏輯_記錄_系屬>)+具有<currentreplica_id,max version of logical_record_lineage+1>的一個(gè)新的輸入項(xiàng)下面描述說(shuō)明,當(dāng)邏輯記錄的成員行被插入,更新或刪除時(shí),改變追蹤機(jī)制如何修改復(fù)制元數(shù)據(jù)。
對(duì)于行插入到邏輯記錄,改變追蹤邏輯首先確定給定行的父識(shí)別符。若該“邏輯記錄”的頂層父行的元數(shù)據(jù)還不存在于元數(shù)據(jù)表中,必須執(zhí)行一校驗(yàn)以保證,頂層父行的元數(shù)據(jù)被插入到復(fù)制元數(shù)據(jù)表中。邏輯記錄的“l(fā)ogicalrecord lineage(邏輯記錄系屬)”隨后被更新,以包括新的輸入項(xiàng),它表示“current replica(當(dāng)前復(fù)制)”和“current max version of the logicalrecord(邏輯記錄的當(dāng)前最大版本)+1”。上面的語(yǔ)義捕捉此概念。
關(guān)于行更新到邏輯記錄,改變追蹤邏輯首先確定給定行的父識(shí)別符。若更新到該行引起“邏輯記錄”的重新排列,則記錄它。這是通過(guò)審查在更新中涉及的列是否為“邏輯記錄連接”定義的一部分而確定的。若在特定邏輯記錄中的行的成員不受更新的影響,則該行的系屬和頂層父行的“邏輯記錄系屬”被更新,以反映當(dāng)前的更新。若存在邏輯記錄的重新排列,則成員行的父行已被改變。為了傳播此重新排列到其它復(fù)制,將對(duì)成員行的更新記錄為從老的邏輯記錄的刪除和插入到新的邏輯記錄。若成員行具有作為邏輯記錄一部分的子行,重新排列也影響子行。
關(guān)于行的刪除,當(dāng)在復(fù)制處刪除子行或父行,追蹤邏輯首先對(duì)給定的行確定父識(shí)別符。刪除固有地引起邏輯記錄的重新排列。元數(shù)據(jù)以這樣的方式更新,使得此刪除與對(duì)該邏輯記錄的其它改變一起處理。刪除被記錄成帶著正確的父行識(shí)別符的墓碑。若發(fā)生該邏輯記錄的頂層父行的刪除,則需要進(jìn)行處理正如整個(gè)邏輯記錄從其它復(fù)制中刪除那樣。
邏輯記錄的重新排列現(xiàn)參考圖4,示出本發(fā)明的示范模型。邏輯記錄的重新排列要求改變追蹤機(jī)制更新元數(shù)據(jù),使得重新排列以保持邏輯記錄語(yǔ)義的方式傳播到目標(biāo)復(fù)制。在圖4的例子中,提供用CustomerID(客戶ID)列唯一識(shí)別的客戶行的客戶表400??蛻舯?00還包括標(biāo)記為FristName(名),LastName(姓)和Address(地址)的三個(gè)列。訂單表402用OrderID(訂單ID)列唯一識(shí)別。訂單表402還包括三個(gè)列,第一個(gè)標(biāo)記成CustomerID,用于映射到父客戶表100,第二列標(biāo)記成EmployeeID(雇員ID),最后一列稱為OrderData(訂單日期)。第三個(gè)表,OrderDetails(訂單細(xì)則)表404用OrderDetailID(訂單細(xì)則ID)列唯一識(shí)別。OrderDetails表404包括4列第一個(gè)標(biāo)記成OrderID(訂單ID)用于映射到父訂單表402,第二列標(biāo)記成ProductID(產(chǎn)品ID),第三個(gè)稱為UnitPrice(單價(jià)),最后列稱為Quantity(數(shù)量)。
第一邏輯記錄連接406建立在客戶表400和訂單表402之間,并定義成Customers.CustomerID=Orders.CustomerID。類似地,第二邏輯記錄連接108建立在訂單表402和訂單細(xì)則表404之間,并定義成Orders.OrderID=OrderDetails.OrderID。訂單表402具有至少兩列數(shù)據(jù),包括用于映射訂單表402回到其父表(客戶表400)的CustomerID。未示出訂單信息的其它可能的列。類似地,訂單細(xì)則表404具有至少三列數(shù)據(jù),包括用于將訂單表402映射回到其父表(客戶表400)的CustomerID,和用于將訂單細(xì)則表404映射回到其父表(訂單表402)的OrderID。未示出訂單細(xì)則信息的其它可能的列。
現(xiàn)參考圖5,圖示了對(duì)圖4的例子的示范數(shù)據(jù)。數(shù)據(jù)組包括名為“Alfred”的客戶的客戶、訂單和訂單細(xì)則(數(shù)據(jù))。頂層表500表示對(duì)客戶1“Alfred”的行數(shù)據(jù),并包含名字為“Alfred”的CustomerID列??蛻簟癆lfred”具有與其相關(guān)的三個(gè)訂單表示Order_1的行數(shù)據(jù)的第一訂單(Order_1)表502,表示Order_2的行數(shù)據(jù)的第二訂單(Order_2)表504,和表示Order_3的行數(shù)據(jù)的第三訂單(Order_3)表506。第一訂單表502具有四個(gè)子表(508,510,512和614),分別表示四個(gè)與訂單Order_1相關(guān)的訂單細(xì)則表(OrderDetail1,OrderDetail2,OrderDetail3,OrderDetail4)的行數(shù)據(jù)。
第二訂單表504具有一個(gè)子訂單細(xì)則表(OrderDetail5)516,它表示與訂單Order_2相關(guān)的一個(gè)訂單細(xì)則的行數(shù)據(jù)。第三訂單表506具有一個(gè)子訂單細(xì)則表(OrderDetail6)518,它表示與訂單Order_3相關(guān)的一個(gè)訂單細(xì)則的行數(shù)據(jù)。
使用圖4和圖5的數(shù)據(jù),考慮第一訂單表502的Order_1行的CustomerID列被更新,使得以前是“Alfred”的CustomerID現(xiàn)在變成“David”。此更新根本上改變了以CustomerID=“Alfred”為根的“邏輯記錄”中的Order_1行的成員資格。因而訂單行Oder_1和相應(yīng)表508,510,512和514的相應(yīng)訂單細(xì)則行(OrderDetail1,OrderDetail2,OrderDetail3,和OrderDetail4)現(xiàn)在屬于以CustomerID=“David”為根的不同的“邏輯記錄”中。改變追蹤邏輯傳播對(duì)Order_1和OrderDetail1,OrderDetail2,OrderDetail3和OrderDetail4的子行的改變,即以舊父識(shí)別符“Alfred”進(jìn)行刪除并用新父識(shí)別符“David”進(jìn)行插入。
邏輯記錄的改變列舉改變列舉是同步過(guò)程的階段,其中列舉從前一次源與目標(biāo)復(fù)制之間同步以來(lái),在此復(fù)制上發(fā)生的改變。
列舉對(duì)邏輯記錄改變的突出特征是對(duì)邏輯記錄的不同成員行作出多個(gè)改變,包括更新、插入和刪除,它們應(yīng)在組中列舉。為了這樣的實(shí)現(xiàn),改變列舉算法使用數(shù)據(jù)庫(kù)視圖(View),以保證在不同成員表中的行按邏輯記錄連接定義被列舉。
在圖4的示范模型中,在訂單402中的行的成員資格是基于在客戶表400中的行的成員資格,使用在此兩個(gè)表之間的“邏輯記錄連接”定義406預(yù)計(jì)此成員資格。類似地,訂單細(xì)則表404中的行的成員資格是基于在訂單表402中的行的成員資格,使用在此兩個(gè)表之間的“邏輯記錄連接”定義408預(yù)計(jì)此成員資格。為反映此情況,對(duì)直接父表產(chǎn)生這樣的數(shù)據(jù)庫(kù)視圖,即是為子表參考視圖產(chǎn)生的視圖。在示范模型中,在訂單表402上的視圖參考在客戶表400上的視圖。類似地,在訂單細(xì)則表404上的視圖參考在訂單表402上的視圖。
為解釋的目的對(duì)示范模型提供下面的視圖定義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和訂單細(xì)則表404中的行。邏輯記錄中任何行的刪除從復(fù)制元數(shù)據(jù)表中被列舉,在那里刪除的父識(shí)別符匹配被列舉的邏輯記錄的父識(shí)別符。為了只處理在目標(biāo)復(fù)制中尚不可見(jiàn)的來(lái)自源復(fù)制的增量改變,改變列舉是基于在源和目標(biāo)復(fù)制之間協(xié)商的同步定位標(biāo)。
沖突檢測(cè)和解決沖突檢測(cè)和解決是同步過(guò)程的階段,其中來(lái)自涉及同步的源及目標(biāo)復(fù)制的復(fù)制元數(shù)據(jù)被比較,且所有沖突被檢測(cè)和解決。除了在行的層及列的層次上之外,使用邏輯記錄的此新穎方面允許同步過(guò)程還在邏輯記錄層上檢測(cè)沖突。此外,沖突解決的選擇能是在邏輯記錄層或行的層次上。關(guān)于使用什么沖突檢測(cè)策略和沖突解決策略的決定留給具體的應(yīng)用選擇,因?yàn)閼?yīng)用更合適決定哪個(gè)策略更適宜。
沖突檢測(cè)和解決-邏輯記錄層當(dāng)沖突檢測(cè)是在邏輯記錄層時(shí),在源復(fù)制上屬于邏輯記錄L1的行R1的列C1中的改變與在目標(biāo)復(fù)制上屬于同樣的邏輯記錄L1的行R2的列C2中的改變相沖突。從源和目標(biāo)復(fù)制來(lái)的邏輯記錄系屬被比較,以檢測(cè)沖突。若沖突解決策略選擇邏輯記錄L1的源復(fù)制的版本為勝者,勝出的源復(fù)制的邏輯記錄L1完全改寫(xiě)負(fù)的目標(biāo)復(fù)制的邏輯記錄L1。
沖突檢測(cè)——行的層次/解決——邏輯記錄層次當(dāng)沖突檢測(cè)在行的層次時(shí),在行R1中的改變不與在行R2中的改變沖突,即使它們均屬于同一邏輯記錄。對(duì)于在行的層次檢測(cè)的沖突,沖突應(yīng)已在邏輯記錄層次檢測(cè)到。
然后比較來(lái)自源和目標(biāo)復(fù)制的邏輯記錄系屬,若表明有沖突,來(lái)自兩個(gè)復(fù)制的行的系屬被比較。若沖突解決策略選成邏輯記錄L1的源復(fù)制版本為勝者,勝出的來(lái)自源復(fù)制的邏輯記錄L1將完全改寫(xiě)在目標(biāo)復(fù)制中負(fù)的邏輯記錄L1。
沖突檢測(cè)——列的層次/解決——邏輯記錄層次當(dāng)沖突檢測(cè)在列的層次時(shí),只有在同一列和同一行的改變是沖突的。發(fā)生此情況時(shí),邏輯記錄層的沖突和行的層的沖突已經(jīng)發(fā)生。因此首先比較邏輯記錄的系屬,若表明有沖突,隨后比較行系屬。若行系屬的比較表明有沖突,則比較列版本,以確認(rèn)是否有沖突。
在沖突未發(fā)生在檢測(cè)層規(guī)定的層上,但(實(shí)際上)已發(fā)生在較高的層上的所有情況中,在較低層(在邏輯記錄中的行,或行中的列)的數(shù)量被“合并了”。例如,若行層次的沖突檢測(cè)正在使用,則行R1這一側(cè)中的改變與R2這另一側(cè)中的改變不沖突,即使它們均屬于同一邏輯記錄。這是由于如由應(yīng)用所規(guī)定,沖突在“邏輯記錄層”上檢測(cè),而不是在行的層上。結(jié)果是在兩側(cè)上“合并”的邏輯記錄,兩側(cè)均保留改變(在R1和R2中)。特別地更新復(fù)制元數(shù)據(jù),以表明合并的邏輯記錄系屬。行的系屬不是合并的系屬,因?yàn)閷?duì)兩個(gè)不同的行各有單方面的改變。
類似地,若列層次的沖突檢測(cè)在使用,則在源復(fù)制上行R1的列C1中的改變與目標(biāo)復(fù)制上同一行R1的列C2中的改變不沖突。這是因?yàn)槿缬蓱?yīng)用規(guī)定,沖突在行的層上檢測(cè)而不是在列的層上。其結(jié)果是合并的邏輯記錄,包含對(duì)行R1的合并值,它反映了從源復(fù)制來(lái)的列C1改變和從目標(biāo)復(fù)制來(lái)的列C2改變。對(duì)行R1的復(fù)制元數(shù)據(jù)包含對(duì)R1的合并的行系屬。此外,邏輯記錄具有合并的邏輯記錄系屬。
若在應(yīng)用規(guī)定的層上確鑿地檢測(cè)到?jīng)_突,則勝出的邏輯記錄系屬改寫(xiě)負(fù)的邏輯記錄系屬,且在勝出的邏輯記錄中帶有任何改變的所有行被拷貝到負(fù)的一方。
下面例子用帶有一個(gè)父行P1和二個(gè)子行C1和C2的邏輯記錄示出不同的沖突檢測(cè)和解決的選項(xiàng)。打星號(hào)的C1*表明C1行在給定的復(fù)制上被更新。未打星號(hào)的C1表明C1行在給定的復(fù)制上未改變。當(dāng)檢測(cè)到?jīng)_突時(shí),沖突解決策略挑選源復(fù)制或目標(biāo)復(fù)制作為勝方,這里的例子以對(duì)兩個(gè)選項(xiàng)的最終值為前提。
例1.在邏輯記錄層的檢測(cè)和解決-分離的行

在例1中,在邏輯記錄中兩個(gè)分離的行(子行C1和子行C2)已被更新。因?yàn)閳?zhí)行邏輯記錄層的檢測(cè),沖突被檢測(cè)到。此外,因?yàn)橐堰x擇邏輯記錄層次的解決,來(lái)自源或目標(biāo)復(fù)制的整個(gè)勝出邏輯記錄將出現(xiàn)在最終的會(huì)聚結(jié)果中。
例2.在邏輯記錄層的檢測(cè)和解決-同一行

在例2中,在源和目標(biāo)復(fù)制處每個(gè)邏輯記錄中的同一行已被更新。因?yàn)閳?zhí)行邏輯記錄層檢測(cè),檢測(cè)到?jīng)_突。但因?yàn)橐堰x擇了邏輯記錄層次的解決,從源或目標(biāo)復(fù)制來(lái)的整個(gè)勝出的邏輯記錄將出現(xiàn)在最終會(huì)聚的結(jié)果中。
例3.行層次的檢測(cè)和邏輯記錄層次的解決-分離的行


在例3中,更新了邏輯記錄中兩個(gè)分離的行。因?yàn)閳?zhí)行行層次的檢測(cè),沖突未檢測(cè)到。因此在最終會(huì)聚結(jié)果中出現(xiàn)來(lái)自源復(fù)制的C1*更新和來(lái)自目標(biāo)復(fù)制的C2*更新。
例4.行層次的檢測(cè)和邏輯記錄層次的解決-同一行

在例4中,更新了在源和目錄復(fù)制中每個(gè)邏輯記錄中同一行。因?yàn)閳?zhí)行行層次的檢測(cè),沖突被檢測(cè)到。但因?yàn)橐堰x擇邏輯記錄層次的解決,從源或目標(biāo)復(fù)制的整個(gè)勝出的邏輯記錄將出現(xiàn)在最終的會(huì)聚結(jié)果中。
例5.行層次的檢測(cè)和行層次的解決-分離的行

在例5中,已更新邏輯記錄中兩個(gè)分離的行。因?yàn)閳?zhí)行行層次的檢測(cè),未檢測(cè)到?jīng)_突。因此來(lái)自源復(fù)制的C1*更新和來(lái)自目標(biāo)復(fù)制的C2*更新出現(xiàn)在最終的會(huì)聚結(jié)果中。
例6.行層次的檢測(cè)和行層次的解決-同一行

在例6中,在源和目標(biāo)復(fù)制,每個(gè)邏輯記錄中的同一行已被更新。因?yàn)閳?zhí)行行層次的檢測(cè),沖突被檢測(cè)到。根據(jù)源或是目標(biāo)勝出,來(lái)自源復(fù)制的C1*更新或來(lái)自目標(biāo)復(fù)制的C2**更新出現(xiàn)在最終會(huì)聚結(jié)果中。因?yàn)閬?lái)自目標(biāo)復(fù)制的C2*更新是單方的,它將出現(xiàn)在最終的會(huì)聚的結(jié)果中。
對(duì)邏輯記錄改變應(yīng)用改變應(yīng)用是同步過(guò)程的階段,其中在完成沖突檢測(cè)和解決之后從一個(gè)復(fù)制來(lái)的改變被傳播到另一個(gè)復(fù)制。因?yàn)楦淖兊牧信e已經(jīng)將具體的行裝入邏輯記錄中,在目標(biāo)復(fù)制處這些改變的應(yīng)用必須保證,這些改變?cè)跀?shù)據(jù)庫(kù)處理中被應(yīng)用。在應(yīng)用該處理中的任何失敗將導(dǎo)致改變的應(yīng)用被重試,然而重試應(yīng)保持該邏輯記錄的語(yǔ)義。
現(xiàn)參考圖6,示出到應(yīng)用定義的復(fù)制的另外方案,它將一致性單元改變追蹤信息分離到分離表600。如前所述,每個(gè)改變單元只與一個(gè)一致性單元相關(guān)。此相關(guān)性可以是顯式的(每個(gè)改變單元能用一鍵值加標(biāo)簽,該鍵值唯一地識(shí)別一致性單元,而鍵值是其一個(gè)成員)或隱含的(如在邏輯記錄連接中,其中由Customers.CustomerID=Order.CustomerID識(shí)別該關(guān)系)。從而包含應(yīng)用數(shù)據(jù)的任何表的任何行能與任何一致性單元相關(guān)。
對(duì)于此邏輯記錄方案,在此方案中最好是,應(yīng)用將其所有應(yīng)用對(duì)象(在目錄服務(wù)器中總的對(duì)象的一小部分)放入一個(gè)一致性單元,以便傳播到目標(biāo)復(fù)制。這通過(guò)使用表600實(shí)現(xiàn)。為達(dá)到那樣的結(jié)果,提供一個(gè)實(shí)現(xiàn)方法,使得創(chuàng)建唯一的標(biāo)簽(即GUID)。該標(biāo)簽作為特定LDAP屬性(可能是“Consitency UnitKey”)的值被寫(xiě)在每個(gè)應(yīng)用對(duì)象上。在第一應(yīng)用對(duì)象上寫(xiě)唯一的標(biāo)簽的活動(dòng)觸發(fā)了目標(biāo)服務(wù)器在一致性單元改變追蹤表600的第一列602中創(chuàng)建新的輸入項(xiàng)(如Tracking Data1)以及在第二列604中的有關(guān)的標(biāo)簽值(如Tag1)。更新每個(gè)應(yīng)用對(duì)象(包括第一個(gè))的活動(dòng)更新一致性單元改變追蹤信息,以發(fā)信號(hào)通知,新的應(yīng)用對(duì)象已經(jīng)進(jìn)入該一致性單元,并更新在應(yīng)用對(duì)象上的改變歷史信息,以發(fā)信號(hào)通知,下一次一致性單元作為一致性單元的一部分被復(fù)制時(shí),該應(yīng)用對(duì)象應(yīng)用與該一致性單元一起復(fù)制。
類似地,邏輯記錄連接關(guān)系(LRL)能插入到表600。在第二應(yīng)用對(duì)象上建立LRL的活動(dòng)觸發(fā)目錄服務(wù)器,創(chuàng)建在一致性單元改變追蹤表600的第一列602中的新的輸入項(xiàng)(如Tracking Data3)和在第二列604中的有關(guān)邏輯記錄連接值(如LRL1)。更新每個(gè)應(yīng)用對(duì)象(包括第一個(gè))的活動(dòng)更新了一致性單元改變追蹤信息,以發(fā)信號(hào)通知,新的應(yīng)用對(duì)象已經(jīng)進(jìn)入該一致性單元,并更新了在應(yīng)用對(duì)象上的改變歷史信息,以發(fā)信號(hào)通知,下一次一致性單元作為一致性單元的一部分被復(fù)制時(shí),該應(yīng)用對(duì)象應(yīng)該與該一致性單元一起復(fù)制。
此方案的一個(gè)例子在于在目錄服務(wù)(如X.500或LDAP(簡(jiǎn)便目錄訪問(wèn)協(xié)議)目錄)中應(yīng)用定義的一致性單元的潛在使用。許多目錄服務(wù)使用相對(duì)一致的表建模;而在關(guān)系模型中,“用戶”和“打印機(jī)”數(shù)據(jù)類型趨于存儲(chǔ)在類型專有的表中,目錄服務(wù)試圖以趨于為所有數(shù)據(jù)類型導(dǎo)致單一表600的方式,在數(shù)據(jù)類型之間(如辦公室位置或經(jīng)理)利用共同元素。
考慮示例的安全應(yīng)用,它使用LDAP目錄服務(wù)存儲(chǔ)對(duì)認(rèn)證報(bào)文的路由信息。此信息包括全局的配置對(duì)象和對(duì)每個(gè)認(rèn)證服務(wù)器的對(duì)象。每個(gè)認(rèn)證服務(wù)器對(duì)象包含指向路由層次中的父輩的指針。該應(yīng)用要求,當(dāng)它將認(rèn)證服務(wù)器對(duì)象和它們的父輩關(guān)系組合到一張圖時(shí),該圖是生成樹(shù)——如每個(gè)節(jié)點(diǎn)(認(rèn)證服務(wù)器)直接或間接地連到每個(gè)其它節(jié)點(diǎn),且該圖中沒(méi)有環(huán)的樹(shù)。若每個(gè)認(rèn)證的服務(wù)器對(duì)象被獨(dú)立地復(fù)制,且進(jìn)而若在復(fù)制R1上改變樹(shù)的層次且該改變僅部分地復(fù)制到復(fù)制R2,則在R2的數(shù)據(jù)不再導(dǎo)致生成樹(shù)。例如,假設(shè)一開(kāi)始在復(fù)制R1和R2上存在對(duì)象O1、O2和O3。對(duì)象O2和O3兩者的父輩是對(duì)象O1,而對(duì)象O1的父輩是空。在復(fù)制R1上,管理員改變?cè)搶哟侮P(guān)系(在單個(gè)處理中),使得對(duì)象O2是根;如對(duì)象O1的父輩被設(shè)成對(duì)象O2,對(duì)象O2的父輩被刪除,且對(duì)象O3的父輩改變到對(duì)象O2。若復(fù)制R2在一個(gè)處理中應(yīng)用更新到對(duì)象O1,而該處理不應(yīng)用改變到對(duì)象O2,則讀出復(fù)制R2的應(yīng)用將看到一個(gè)環(huán)——對(duì)象O2的父輩是O1,而對(duì)象O1的父輩是O2。
現(xiàn)參考圖7,示出可用來(lái)執(zhí)行所揭示的體系結(jié)構(gòu)的計(jì)算機(jī)的方框圖。為了提供用于本發(fā)明的各種方面的附加的環(huán)境,圖7和下面的討論試圖提供對(duì)合適的計(jì)算環(huán)境700的簡(jiǎn)單一般的描述,在其中能實(shí)現(xiàn)本發(fā)明的各個(gè)方面。雖然上面以能在一個(gè)或多個(gè)計(jì)算機(jī)上運(yùn)行的計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境中描述了本發(fā)明,本領(lǐng)域的普通技術(shù)人員可以認(rèn)識(shí)到,本發(fā)明也能結(jié)合其它程序模塊和/或作為軟硬件的組合實(shí)現(xiàn)。通常,程序模塊包括例行程序、程序、組件、數(shù)據(jù)結(jié)構(gòu)等,它們完成特定任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。而且,本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,本發(fā)明的方法能用其它計(jì)算機(jī)系統(tǒng)配置實(shí)現(xiàn),包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小型計(jì)算機(jī)、大型機(jī)、個(gè)人計(jì)算機(jī)、手持計(jì)算設(shè)備、基于微處理器的或可編程的消費(fèi)型電子設(shè)備等,每一個(gè)能工作耦合到一個(gè)或多個(gè)有關(guān)設(shè)備。本發(fā)明的示出的方面能在分布式計(jì)算環(huán)境中實(shí)現(xiàn),其中某些任務(wù)由通過(guò)通訊網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備完成。在分布計(jì)算環(huán)境中,程序模塊可以同時(shí)位于本地和遠(yuǎn)程記憶存儲(chǔ)設(shè)備中。
再次參考圖7,實(shí)現(xiàn)本發(fā)明的各個(gè)方面的示例環(huán)境700包括計(jì)算機(jī)702,計(jì)算機(jī)702包括處理單元704、系統(tǒng)存儲(chǔ)器706和系統(tǒng)總線708。系統(tǒng)總線708連接包括(但不限于)系統(tǒng)存儲(chǔ)器706的系統(tǒng)組件到處理單元704。處理單元704能是各種市售處理器的任何一種。雙微處理器體系結(jié)構(gòu)和其它多處理器體系結(jié)構(gòu)也能用作處理單元704。
系統(tǒng)總線708能是若干種總線結(jié)構(gòu)的任一種,包括存儲(chǔ)總線或存儲(chǔ)控制器、外圍總線和使用各種市售總線體系結(jié)構(gòu)的任一種的局部總線。系統(tǒng)存儲(chǔ)器706包括只讀存儲(chǔ)器(ROM)710和隨機(jī)存儲(chǔ)器(RAM)712。包含如在起動(dòng)期間幫助在計(jì)算機(jī)702中的各部件之間傳輸信息的基本例行程序的基本輸入/輸出系統(tǒng)(BIOS)存儲(chǔ)在ROM710中。
計(jì)算機(jī)702還包括硬盤(pán)驅(qū)動(dòng)器714、磁盤(pán)驅(qū)動(dòng)器716(如讀寫(xiě)可移動(dòng)磁盤(pán)718)和光盤(pán)驅(qū)動(dòng)器720(如讀CD-ROM盤(pán)722或讀寫(xiě)其它光介質(zhì))。硬盤(pán)驅(qū)動(dòng)器714、磁盤(pán)驅(qū)動(dòng)器716和光盤(pán)驅(qū)動(dòng)器720能分別通過(guò)硬盤(pán)驅(qū)動(dòng)器接口724、磁盤(pán)驅(qū)動(dòng)器接口726和光盤(pán)驅(qū)動(dòng)器728連接到系統(tǒng)總線708。驅(qū)動(dòng)器及其相關(guān)的計(jì)算機(jī)可讀介質(zhì)為數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可執(zhí)行指令等提供非易失性存儲(chǔ)。對(duì)計(jì)算機(jī)702,驅(qū)動(dòng)器和介質(zhì)以合適的數(shù)據(jù)格式容納存儲(chǔ)廣泛傳播的程序。雖然上面對(duì)計(jì)算機(jī)可讀介質(zhì)的描述指的是硬盤(pán)、可移動(dòng)的磁盤(pán)和CD,本領(lǐng)域的普通技術(shù)人員應(yīng)理解,諸如zip驅(qū)動(dòng)器、盒式磁帶、閃存卡、數(shù)字視頻盤(pán)、卡式磁帶等可由計(jì)算機(jī)讀取的其它類型的介質(zhì)也能在示例操作環(huán)境中使用,而且任何那樣的介質(zhì)能包含用于實(shí)現(xiàn)本發(fā)明的方法計(jì)算機(jī)可執(zhí)行指令。
一系列程序模塊能存入驅(qū)動(dòng)器和RAM712,包括操作系統(tǒng)730、一個(gè)或多個(gè)應(yīng)用程序732、其它程序模塊734和程序數(shù)據(jù)736??梢岳斫猓景l(fā)明能用各種市售的操作系統(tǒng)或操作系統(tǒng)的組合實(shí)現(xiàn)。
用戶能通過(guò)鍵盤(pán)738和如鼠標(biāo)740那樣的定位設(shè)備輸入命令和信息到計(jì)算機(jī)702。其它輸入設(shè)備(未示出)能包括麥克風(fēng)、IR遙控器、操縱桿、游戲手柄、衛(wèi)星碟、掃描儀等。這些和其它輸入設(shè)備常常通過(guò)連接到系統(tǒng)總線708的串行接口742連接到處理單元704,但也能通過(guò)其它接口連接,如并行端口、游戲端口、通用串行總線(“USB”)、IR接口等。監(jiān)視器744或其它類型顯示設(shè)備也通過(guò)如視頻適配器746那樣的接口連接到系統(tǒng)總線。除監(jiān)視器744以外,計(jì)算機(jī)通常包括其它外圍設(shè)備(未示出),如揚(yáng)聲器、打印機(jī)等。
計(jì)算機(jī)702能使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)(如遠(yuǎn)程計(jì)算機(jī)748)的邏輯連接在網(wǎng)絡(luò)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)748可以是工作站、服務(wù)器計(jì)算機(jī)、路由器、個(gè)人計(jì)算機(jī)、便攜計(jì)算機(jī)、基于微處理器的娛樂(lè)工具、對(duì)等設(shè)備或其它公共網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括相對(duì)于計(jì)算機(jī)702描述的許多或所有部件,雖然為簡(jiǎn)單起見(jiàn),只示出存儲(chǔ)設(shè)備750。畫(huà)出的邏輯連接包括局域網(wǎng)(LAN)752和廣域網(wǎng)(WAN)754。那樣的網(wǎng)絡(luò)環(huán)境在辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見(jiàn)的。
在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)702通過(guò)網(wǎng)絡(luò)接口或適配器756連接到局域網(wǎng)752。在WAN網(wǎng)絡(luò)環(huán)境使用時(shí),計(jì)算機(jī)702通常包括調(diào)制解調(diào)器758,或連接到LAN上的通訊服務(wù)器,或具有用于建立在廣域網(wǎng)(如因特網(wǎng))754上的通訊的裝置。內(nèi)置或外接的調(diào)制解調(diào)器758經(jīng)過(guò)串行接口742連接到系統(tǒng)總線708。在網(wǎng)絡(luò)環(huán)境中,相對(duì)于計(jì)算機(jī)702畫(huà)出的程序模塊或其部分,能存儲(chǔ)在遠(yuǎn)程記憶存儲(chǔ)設(shè)備750??梢岳斫?,示出的網(wǎng)絡(luò)連結(jié)是示例的,能使用在計(jì)算機(jī)之間建立通訊鏈路的其它裝置。
參考圖8,示出根據(jù)本發(fā)明的示范計(jì)算環(huán)境800的原理方框圖。系統(tǒng)800包括一個(gè)或多個(gè)客戶802??蛻?02能是硬件和/或軟件(如線程、過(guò)程、計(jì)算設(shè)備)。例如,客戶802能通過(guò)應(yīng)用本發(fā)明包容Cookie程序和/或有關(guān)的環(huán)境關(guān)系信息。系統(tǒng)800還包括一個(gè)或多個(gè)服務(wù)器804。服務(wù)器804也能是硬件和/或軟件(如線程、過(guò)程、計(jì)算設(shè)備)。例如通過(guò)應(yīng)用本發(fā)明,服務(wù)器804能包容線程以完成轉(zhuǎn)換。在客戶802和服務(wù)器804之間的一種可能的通訊能是采用適應(yīng)于在兩個(gè)或多個(gè)計(jì)算機(jī)過(guò)程之間發(fā)送的數(shù)據(jù)包的形式。例如,數(shù)據(jù)包能包括Cookie程序和/或有關(guān)的環(huán)境關(guān)系信息。系統(tǒng)800包括通訊架構(gòu)806,它能被用來(lái)方便在客戶802和服務(wù)器804之間的通訊??蛻?02在操作上連接到一個(gè)或多個(gè)客戶數(shù)據(jù)存儲(chǔ)808,它們能被用于存儲(chǔ)客戶802本地的信息(如Cookie和/或有關(guān)的環(huán)境關(guān)系信息)。類似地,服務(wù)器804在操作上連接到一個(gè)或多個(gè)服務(wù)器數(shù)據(jù)存儲(chǔ)810,它能被用于存儲(chǔ)服務(wù)器804本地的信息。
上面已描述的包括本發(fā)明的例子。當(dāng)然,不可能為了描述本發(fā)明而描述組件或方法的每個(gè)可以想象的組合,但是本領(lǐng)域的普通技術(shù)人員可以認(rèn)識(shí)到,可能有本發(fā)明的許多另外的組合和變更。因而,本發(fā)明試圖包括落在附后權(quán)利要求的精神和范圍內(nèi)的所有更改、修改和變化。而且,就在專利詳細(xì)描述或權(quán)利要求中使用的術(shù)語(yǔ)“包括”含義范圍而言,這樣的術(shù)語(yǔ)試圖以類似于術(shù)語(yǔ)“包含”的方式看作是包容性的,因?yàn)椤鞍痹跈?quán)利要求中使用時(shí)解釋成一個(gè)遷移詞。
權(quán)利要求
1.一個(gè)便于數(shù)據(jù)復(fù)制的系統(tǒng),包括改變追蹤組件,追蹤與一致性單元的復(fù)制版本相關(guān)的元數(shù)據(jù),所述一致性單元覆蓋一個(gè)或多個(gè)同類的數(shù)據(jù)集合;和協(xié)調(diào)組件,分別比較元數(shù)據(jù),使用元數(shù)據(jù)解決沖突,并會(huì)聚一致性單元的版本。
2.如權(quán)利要求1的系統(tǒng),其特征在于一致性單元的復(fù)制版本在單個(gè)處理中會(huì)聚。
3.如權(quán)利要求1的系統(tǒng),其特征在于元數(shù)據(jù)與邏輯記錄關(guān)系相連結(jié)。
4.如權(quán)利要求1的系統(tǒng),其特征在于與邏輯記錄層次、行的層次和列的層次中至少一個(gè)相關(guān)地檢測(cè)沖突。
5.如權(quán)利要求4的系統(tǒng),其特征在于通過(guò)比較在一致性單元的邏輯記錄層上的邏輯記錄系屬元數(shù)據(jù)與在復(fù)制版本的邏輯記錄層上的邏輯記錄系屬元數(shù)據(jù),在邏輯記錄層上解決沖突,隨后按預(yù)定的沖突策略選擇勝出的邏輯記錄系屬元數(shù)據(jù)。
6.如權(quán)利要求4的系統(tǒng),其特征在于通過(guò)在邏輯記錄層上比較一致單元和復(fù)制版本的各自的邏輯記錄系屬以檢測(cè)沖突,從而在行的層上解決沖突,隨后比較沖突行的對(duì)應(yīng)的行系屬以選擇勝出者,勝出者按預(yù)定沖突策略選擇。
7.如權(quán)利要求4的系統(tǒng),其特征在于通過(guò)在邏輯記錄層上比較一致性單元和復(fù)制版本的各自的邏輯記錄系屬以檢測(cè)沖突,從而在列的層上解決沖突,隨后比較沖突行的對(duì)應(yīng)的諸行系屬以檢測(cè)沖突,響應(yīng)于在行的層上檢測(cè)到?jīng)_突,比較列數(shù)據(jù)的諸版本以確認(rèn)沖突的存在,通過(guò)按預(yù)定的沖突策略選擇勝出的列解決沖突。
8.如權(quán)利要求4的系統(tǒng),其特征在于在行層次上的記錄包括行的系屬數(shù)據(jù),在列層次上的記錄包括列的版本數(shù)據(jù),使得在行層次上的沖突檢測(cè)使用行的系屬數(shù)據(jù),在列層次上的沖突檢測(cè)使用列的版本數(shù)據(jù)。
9.如權(quán)利要求1的系統(tǒng),其特征在于協(xié)調(diào)組件使用有關(guān)的邏輯記錄元數(shù)據(jù)在邏輯記錄層解決沖突,該邏輯記錄元數(shù)據(jù)包括追蹤一致性單元的改變歷史的邏輯記錄系屬數(shù)據(jù)。
10.如權(quán)利要求1的系統(tǒng),其特征在于協(xié)調(diào)組件使用行的元數(shù)據(jù)在行的層上解決沖突,該行的元數(shù)據(jù)包括追蹤行的元數(shù)據(jù)的改變歷史的行的系屬數(shù)據(jù),該歷史包括更新該行的復(fù)制和更新該行的復(fù)制的版本中至少一個(gè)的信息。
11.如權(quán)利要求1的系統(tǒng),其特征在于協(xié)調(diào)組件使用列版本元數(shù)據(jù)在列的層解決沖突,該列版本元數(shù)據(jù)追蹤更新列版本的復(fù)制的識(shí)別數(shù)據(jù)和列版本中的至少一個(gè)的信息。
12.如權(quán)利要求1的系統(tǒng),其特征在于當(dāng)用復(fù)制版本會(huì)聚一致性單元失敗時(shí),一致性單元的元數(shù)據(jù)的語(yǔ)義關(guān)系被保持。
13.如權(quán)利要求1的系統(tǒng),其特征在于當(dāng)沖突在較高層上檢測(cè)到時(shí),協(xié)調(diào)組件在較低層上會(huì)聚數(shù)據(jù)。
14.如權(quán)利要求1的系統(tǒng),其特征在于通過(guò)按預(yù)定的沖突策略選擇勝出的邏輯記錄和負(fù)的邏輯記錄,由協(xié)調(diào)組件解決沖突,并用勝出邏輯記錄的邏輯記錄系屬改寫(xiě)負(fù)的邏輯記錄的邏輯記錄系屬。
15.如權(quán)利要求1的系統(tǒng),其特征在于用改變追蹤組件追蹤在復(fù)制的版本的元數(shù)據(jù)中的改變,使得一致性單元能被會(huì)聚。
16.如權(quán)利要求1的系統(tǒng),其特征在于協(xié)調(diào)組件利用改變列舉以方便對(duì)一致性單元的多個(gè)行的改變,這樣的改變包括更新、插入和刪除中的至少一個(gè)。
17.如權(quán)利要求16的系統(tǒng),其特征在于改變列舉利用視圖定義以保證按邏輯記錄連接定義進(jìn)行列舉。
18.一種計(jì)算機(jī),包括權(quán)利要求1的系統(tǒng)。
19.一種有多個(gè)客戶和服務(wù)器的網(wǎng)絡(luò),包括權(quán)利要求1的系統(tǒng)。
20.一種便于數(shù)據(jù)復(fù)制的方法,包括追蹤與一致性單元的復(fù)制版本有關(guān)的元數(shù)據(jù),所述一致性單元覆蓋一個(gè)或多個(gè)同類數(shù)據(jù)集合;分別地比較元數(shù)據(jù);使用元數(shù)據(jù)解決沖突;和會(huì)聚一致性單元的復(fù)制版本。
21.如權(quán)利要求20的方法,其特征在于一致性單元的復(fù)制版本在單個(gè)處理中會(huì)聚。
22.如權(quán)利要求20的方法,其特征在于還包括將元數(shù)據(jù)與邏輯記錄關(guān)系連接的步驟。
23.如權(quán)利要求20的方法,其特征在于還包括檢測(cè)與邏輯記錄層次、行的層次及列的層次中至少一個(gè)有關(guān)的沖突。
24.如權(quán)利要求23的方法,其特征在于通過(guò)下列步驟在邏輯記錄層上解決沖突比較在一致性單元的邏輯記錄層的邏輯記錄系屬元數(shù)據(jù)與復(fù)制版本的邏輯記錄層的邏輯記錄系屬元數(shù)據(jù);和按預(yù)定的沖突策略選擇勝出的邏輯記錄系屬元數(shù)據(jù)。
25.如權(quán)利要求23的方法,其特征在于在行的層解決沖突包括下列步驟在邏輯記錄層上比較一致單元和復(fù)制版本的各自的邏輯記錄系屬,以檢測(cè)沖突;和比較沖突行的分別的行系屬;和按預(yù)定的沖突策略選擇勝出者。
26.如權(quán)利要求23的方法,其特征在于在列的層上解決沖突還包括下列步驟在邏輯記錄層上比較一致性單元和復(fù)制版本的各自的邏輯記錄系屬,以檢測(cè)沖突;比較沖突行的各自的行的系屬以檢測(cè)沖突;比較列數(shù)據(jù)的各版本以確認(rèn)存在沖突;和按預(yù)定的沖突策略選擇勝出的列。
27.如權(quán)利要求23的方法,其特征在于在行層次上的記錄包括行的系屬數(shù)據(jù),而在列層次上的記錄包括列版本數(shù)據(jù),使得在行層次上的沖突檢測(cè)使用行系屬數(shù)據(jù),而在列層次上的沖突檢測(cè)使用列版本數(shù)據(jù)。
28.如權(quán)利要求20的方法,其特征在于使用有關(guān)的邏輯記錄元數(shù)據(jù)在邏輯記錄層解決沖突,該邏輯記錄元數(shù)據(jù)包括追蹤一致性單元的改變歷史的邏輯記錄系屬。
29.如權(quán)利要求20的方法,其特征在于使用行的元數(shù)據(jù)在行的層上解決沖突,該行的元數(shù)據(jù)包括追蹤行的元數(shù)據(jù)的改變歷史的行的系屬數(shù)據(jù),該歷史包括更新該行的復(fù)制和更新該行的復(fù)制的版本中至少一個(gè)的信息。
30.如權(quán)利要求20的方法,其特征在于使用列版本元數(shù)據(jù)在列的層解決沖突,該列版元數(shù)據(jù)追蹤更新列版本的復(fù)制的識(shí)別數(shù)據(jù)和列版本中的至少一個(gè)的信息。
31.如權(quán)利要求20的方法,其特征在于當(dāng)用復(fù)制版本會(huì)聚一致性單元失敗時(shí),一致性單元的元數(shù)據(jù)的語(yǔ)義關(guān)系被保持。
32.如權(quán)利要求20的方法,其特征在于當(dāng)沖突在較高層上檢測(cè)到時(shí),在較低層上會(huì)聚數(shù)據(jù)。
33.如權(quán)利要求20的方法,其特征在于解決沖突還包括下列步驟按預(yù)定的沖突策略,選擇勝出的邏輯記錄和負(fù)的邏輯的記錄;和用勝出的邏輯記錄的邏輯記錄系屬改寫(xiě)負(fù)的邏輯記錄的邏輯記錄系屬。
34.如權(quán)利要求20的方法,其特征在于還包括用改變追蹤組件追蹤在復(fù)制版本的元數(shù)據(jù)中的改變,使得一致性單元能被會(huì)聚的步驟。
35.如權(quán)利要求20的方法,其特征在于還包括列舉改變以方便改變一致性單元的多個(gè)行的步驟,這樣的改變包括更新、插入和刪除中至少一個(gè)。
36.如權(quán)利要求35的方法,其特征在于還包括提供視圖定義以保證按邏輯記錄連接定義進(jìn)行列舉的步驟。
37.一種便于數(shù)據(jù)復(fù)制的方法,包括追蹤在同類數(shù)據(jù)集合的源數(shù)據(jù)集合和第一目標(biāo)數(shù)據(jù)集合之間語(yǔ)義上相關(guān)的數(shù)據(jù)的變化;按邏輯記錄關(guān)系,連接與語(yǔ)義上相關(guān)的數(shù)據(jù)的改變有關(guān)的元數(shù)據(jù),以形成一致性單元;和在單個(gè)處理中用同類數(shù)據(jù)集合的第二目標(biāo)數(shù)據(jù)集合會(huì)聚數(shù)據(jù)改變的一致性單元。
38.如權(quán)利要求37的方法,其特征在于還包括通過(guò)比較第二目標(biāo)數(shù)據(jù)集合與一致性單元的改變而檢測(cè)沖突;和通過(guò)按預(yù)定的沖突策略選擇勝者而解決沖突。
39.如權(quán)利要求38的方法,其特征在于結(jié)合邏輯記錄層次、行的層次和列的層次中的至少一個(gè)檢測(cè)沖突。
40.如權(quán)利要求39的方法,其特征在于,通過(guò)首先比較源數(shù)據(jù)集合和第二目標(biāo)數(shù)據(jù)集合的各個(gè)邏輯記錄系屬,在邏輯記錄層次、行的層次以及列的層次中的每一個(gè)上檢測(cè)和解決沖突。
41.如權(quán)利要求39的方法,其特征在于在行的層上的記錄包括行的系屬數(shù)據(jù),而在列的層上的記錄包括列版本數(shù)據(jù),使得在行的層上的沖突檢測(cè)使用行系屬數(shù)據(jù),而在列的層上的沖突檢測(cè)使用列版本數(shù)據(jù)。
42.如權(quán)利要求40的方法,其特征在于當(dāng)一致性單元的會(huì)聚被重試時(shí),語(yǔ)義上相關(guān)的改變的語(yǔ)義被保持。
43.如權(quán)利要求38的方法,其特征在于還包括當(dāng)沖突在較高層上檢測(cè)到時(shí),在較低的層上會(huì)聚數(shù)據(jù)。
44.如權(quán)利要求37的方法,其特征在于還包括檢測(cè)和解決在數(shù)據(jù)一致性單元和第二目標(biāo)數(shù)據(jù)集合之間的沖突的步驟,通過(guò)按預(yù)定的沖突策略選擇勝出的邏輯記錄和負(fù)的邏輯記錄,并用勝出的邏輯記錄系屬改寫(xiě)負(fù)者的邏輯記錄系屬來(lái)解決沖突。
45.如權(quán)利要求37的方法,其特征在于還包括用改變追蹤組件追蹤在第一目錄數(shù)據(jù)集合中的改變的步驟,該改變追蹤組件追蹤復(fù)制元數(shù)據(jù),使得能用第二目標(biāo)數(shù)據(jù)集合會(huì)聚數(shù)據(jù)改變的一致性單元。
46.如權(quán)利要求37的方法,其特征在于該數(shù)據(jù)集合是關(guān)系型數(shù)據(jù)庫(kù)。
47.一種便于數(shù)據(jù)復(fù)制的系統(tǒng),包括用于識(shí)別在同類數(shù)據(jù)集合的源數(shù)據(jù)集合和第一目標(biāo)數(shù)據(jù)集合之間的語(yǔ)義上相關(guān)的數(shù)據(jù)改變的裝置;用于按邏輯記錄關(guān)系連接與語(yǔ)義相關(guān)的數(shù)據(jù)改變有關(guān)的元數(shù)據(jù),以形成一致性單元的裝置;和用于在單個(gè)處理中用同類數(shù)據(jù)集合的第二目標(biāo)數(shù)據(jù)集合會(huì)聚數(shù)據(jù)改變的一致性單元的裝置。
48.一種用于方便數(shù)據(jù)復(fù)制的系統(tǒng),包括用于識(shí)別與一致性單元的復(fù)制版本相關(guān)的元數(shù)據(jù)的裝置,所述一致性單元覆蓋一個(gè)或多個(gè)同類數(shù)據(jù)集合;用于分別地比較元數(shù)據(jù)的裝置;用于使用元數(shù)據(jù)解決沖突的裝置;和用于會(huì)聚一致性單元的復(fù)制版本的裝置。
49.一種用于方便數(shù)據(jù)復(fù)制的方法,包括識(shí)別在源數(shù)據(jù)集合和第一目標(biāo)數(shù)據(jù)集合之間的數(shù)據(jù)改變;創(chuàng)建一致性單元改變追蹤信息表,所述表被傳播到第二目標(biāo),作為一致性單元;和在單個(gè)處理中用第二目標(biāo)數(shù)據(jù)集合會(huì)聚數(shù)據(jù)改變的一致性單元。
50.如權(quán)利要求49的方法,其特征在于所述表包括唯一的標(biāo)簽和邏輯記錄連接中的至少一個(gè),其中所述標(biāo)簽和邏輯記錄連接都定義了改變單元和一致性單元之間的聯(lián)系。
51.如權(quán)利要求50的方法,其特征在于還包括響應(yīng)于在第一目標(biāo)數(shù)據(jù)集合上寫(xiě)入唯一的標(biāo)簽而更新所述表的步驟。
52.如權(quán)利要求49的方法,其特征在于源數(shù)據(jù)集合代表一個(gè)目錄服務(wù)體系結(jié)構(gòu)。
全文摘要
在應(yīng)用定義的系統(tǒng)中復(fù)制一致性單元的體系結(jié)構(gòu)。在源復(fù)制中的改變影響在改變單元及有關(guān)的一致性單元中的元數(shù)據(jù)改變。響應(yīng)于由目標(biāo)作出的同步請(qǐng)求,源列舉更新的一致性單元、列舉一致性單元的所有更新的改變單元、打包那些改變單元、送出打包的改變單元以發(fā)送到目標(biāo)。在檢測(cè)和解決沖突之后,目標(biāo)在單個(gè)處理中應(yīng)用該打包的改變單元。過(guò)程對(duì)每個(gè)改變持續(xù)進(jìn)行。
文檔編號(hào)G06F17/30GK1534518SQ20041003224
公開(kāi)日2004年10月6日 申請(qǐng)日期2004年3月26日 優(yōu)先權(quán)日2003年3月27日
發(fā)明者C·納拉亞南, C 納拉亞南, R·P·辛格, 辛格, J·B·帕勒姆, 帕勒姆 申請(qǐng)人:微軟公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
莒南县| 安岳县| 舟山市| 安溪县| 南江县| 夏邑县| 太保市| 乐昌市| 四川省| 高密市| 上高县| 东乡| 泸溪县| 竹溪县| 工布江达县| 左贡县| 赞皇县| 金沙县| 若尔盖县| 新竹市| 淮北市| 平江县| 蚌埠市| 扎鲁特旗| 建湖县| 安国市| 珠海市| 阿拉善盟| 廊坊市| 甘德县| 阜南县| 南漳县| 惠水县| 昌都县| 桂阳县| 龙泉市| 安阳县| 石阡县| 泸州市| 麻阳| 陇南市|