專利名稱:針對復制數(shù)據(jù)庫的分布式?jīng)_突解決的制作方法
針對復制數(shù)據(jù)庫的分布式?jīng)_突解決
祖旦 冃足
一般而言,數(shù)據(jù)庫是以系統(tǒng)性的方式記錄在存儲介質(zhì)中以供計算系統(tǒng)訪問 的經(jīng)組織的數(shù)據(jù)對象(例如,數(shù)據(jù)表、數(shù)據(jù)記錄、文件等)集合。每個數(shù)據(jù)對 象可以包括通常被組織為一組鍵標數(shù)據(jù)元素或值以便檢索和排序的一個或多 個數(shù)據(jù)記錄。數(shù)據(jù)庫一般由模式結(jié)構(gòu)化地描述,而模式指定數(shù)據(jù)庫中數(shù)據(jù)對象
的類型和關(guān)系。諸如數(shù)據(jù)庫管理系統(tǒng)(DBMS)之類的程序能夠査詢數(shù)據(jù)庫以 訪問指定的數(shù)據(jù)對象。
復制允許將一個存儲介質(zhì)的單個數(shù)據(jù)庫拷貝到第二存儲介質(zhì),從而有效創(chuàng) 建原始數(shù)據(jù)庫的獨立實例。第二存儲介質(zhì)上的數(shù)據(jù)庫副本被稱為"復制數(shù)據(jù) 庫"。原始數(shù)據(jù)庫和復制品(統(tǒng)稱為"復制品")共享公用模式的全部或部分, 包括公用數(shù)據(jù)對象、鍵值對以及其他標識符和結(jié)構(gòu),從而將相關(guān)復制品耦合在 一起。共享模式允許同一査詢用于復制品兩者。此外,每個復制品能夠被本地 修改并在隨后通過被稱為"同步"的過程用其他相關(guān)復制品來更新。通過同步, 一個復制品中數(shù)據(jù)對象的改變就被記錄并作為同步更新傳播到其他相關(guān)復制 品,其中對相關(guān)復制品的相應數(shù)據(jù)對象執(zhí)行相同的改變。
然而,當在各分開復制品中的相應數(shù)據(jù)對象被并發(fā)地修改時會出現(xiàn)沖突。 一般而言,沖突表示在一個復制品A處對一數(shù)據(jù)對象進行修改,隨后在A處的 改變信息經(jīng)通信鏈接傳播至B之前就在另一復制品B處對相應的數(shù)據(jù)對象進行 修改。例如,某產(chǎn)品的價格可以在一個復制品處被改變?yōu)镾X,而幾乎與此同時 (例如,在與其他復制品同步每個改變之前),相同產(chǎn)品的價格可以在另一復 制品處被改變?yōu)镾Y,由此就在兩個復制品之間對于該產(chǎn)品的價格產(chǎn)生了沖突。 為了將復制品恢復到一致狀態(tài),沖突可被檢測并在隨后被解決。
存在不同的策略來檢測沖突。例如,可以跟蹤一復制品已被修改的時間, 并在同步期間將其傳播給其他復制品。 一旦接收到同步更新,每個接收復制品 就能夠通過比較遠程復制品處數(shù)據(jù)對象的改變時間和另一相應數(shù)據(jù)對象(無論
本地或遠程)的改變時間來檢測沖突。
在檢測到?jīng)_突之后,分布式數(shù)據(jù)庫系統(tǒng)能夠工作以解決沖突。同樣存在不 同的策略來解決這些沖突。例如,沖突可以在算法上解決,通過用戶交互解決 等。然而,由于復制數(shù)據(jù)庫系統(tǒng)的分布式特性和同步的異步特性,因而會在不 同復制品處同時檢測到相應數(shù)據(jù)對象內(nèi)的競爭沖突。競爭沖突的檢測因此能夠 觸發(fā)競爭沖突解決并將其傳播至整個分布式數(shù)據(jù)庫,藉此引入新的沖突。如 此,現(xiàn)有的數(shù)據(jù)庫服務(wù)器易于在沖突解決期間停止數(shù)據(jù)庫處理,從而避免這一
競爭沖突解決。此夕卜,競爭沖突解決尤其需要挑戰(zhàn)"非齊次(non-idempotent)"
沖突(即,不同的復制品會不同地解決沖突的情況或者解決會激起遍布該分布 式數(shù)據(jù)庫的顯著改變的時刻)。因此,如何在不停止其他數(shù)據(jù)庫處理的情況下 處理分布式數(shù)據(jù)庫內(nèi)不同復制品處的沖突解決的問題就變得相關(guān)。
概述
本文描述的并聲明的各實現(xiàn)通過響應于對一個或多個同步?jīng)_突的檢測而 和每個復制品的同步過程并發(fā)地運行一個或多個解決過程來解決上述問題。每 個解決過程用于解決有關(guān)數(shù)據(jù)對象的沖突而同步過程則繼續(xù)處理其他同步更 新。在沖突解決已被確定之后,針對本地復制品的當前條件測試沖突解決。如 果沖突解決不陳舊(例如,在本地解決過程期間沒有外部沖突解決被接收), 則將其應用于本地復制品并傳遞回到同步過程以供傳播至遠程復制品。否則, 如果沖突解決是陳舊的(例如, 一個外部沖突解決已從另一復制品被接收), 則本地沖突解決被丟棄。
在一些實現(xiàn)中,提供作為計算機程序產(chǎn)品的制品。計算機程序產(chǎn)品的一個 實現(xiàn)提供可由計算機系統(tǒng)讀取并編碼計算機程序的計算機程序存儲介質(zhì)。由計 算系統(tǒng)在載波內(nèi)具體化并編碼計算機程序的計算機數(shù)據(jù)信號可提供計算機程 序產(chǎn)品的另一個實現(xiàn)。在此還描述和列舉其它實現(xiàn)。
提供本概述以便以簡化形式介紹將在以下詳細描述中進一步描述的一些 概念。本概述并不旨在標識要求保護的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在 用于幫助確定要求保護的主題的范圍。
圖1示出了描述一示例性分布式?jīng)_突解決的分布式數(shù)據(jù)庫系統(tǒng)。 圖2示出了描述另一示例性分布式?jīng)_突解決的分布式數(shù)據(jù)庫系統(tǒng)。
圖3示出了用于分布式數(shù)據(jù)庫系統(tǒng)的示例性同步和解決過程。 圖4示出了可用于實現(xiàn)所描述技術(shù)的示例性系統(tǒng)。
具體實施例方式
圖1示出了描述示例性分布式?jīng)_突解決的分布式數(shù)據(jù)庫系統(tǒng)100。分布式 數(shù)據(jù)庫系統(tǒng)100可以具有分布式相關(guān)數(shù)據(jù)庫、文件系統(tǒng)、數(shù)據(jù)日志或其他經(jīng)組 織數(shù)據(jù)收集的形式。第一數(shù)據(jù)庫服務(wù)器102、第二數(shù)據(jù)庫服務(wù)器104和第三數(shù) 據(jù)庫服務(wù)器106經(jīng)由諸如因特網(wǎng)或局域網(wǎng)(LAN)等的網(wǎng)絡(luò)108通信連接。每 個數(shù)據(jù)庫服務(wù)器都可以訪問分布式數(shù)據(jù)庫的各別復制品。每個復制品與分布式 數(shù)據(jù)庫系統(tǒng)100中的其他復制品共享一完整或部分模式。此外,各復制品由同 步框架耦合,在其中每個復制品經(jīng)由同步更新將其改變傳播至其他相關(guān)復制 品,而后者隨后可以用所傳播的改變更新其自身的數(shù)據(jù)對象。
同步指的是用另一復制品的改變的數(shù)據(jù)對象的數(shù)據(jù)來更新一個復制品的 數(shù)據(jù)對象,使得第一數(shù)據(jù)對象反映出對該改變的數(shù)據(jù)對象所做出的改變。在一 個實現(xiàn)中,例如本地復制品的同步作為背景線程或過程來執(zhí)行。如果數(shù)據(jù)對象 的遠程副本已被改變并且數(shù)據(jù)對象的本地副本尚未被更新以反映該改變,則同 步實行對數(shù)據(jù)對象本地副本的改變。此外,同步將本地改變作為同步更新持續(xù) 傳播至其他相關(guān)復制品,并且處理從遠程復制品接收的同步更新以更新本地數(shù) 據(jù)。使用這些特征, 一個復制品中的改變就可以被同步到分布式數(shù)據(jù)庫系統(tǒng)中 的所有其他相關(guān)復制品內(nèi)。
然而,如果并發(fā)地檢測到兩個不同復制品內(nèi)相應數(shù)據(jù)對象的改變,則會導 致沖突。例如,在圖1中,與數(shù)據(jù)庫服務(wù)器102相關(guān)聯(lián)的復制品的數(shù)據(jù)對象110 用新價格更新,得到更新的數(shù)據(jù)對象112(參見包含經(jīng)改變價格的陰影單元格)。 改變操作被傳播至其他相關(guān)復制品(參見分支到復制品104和106的虛線箭頭 114)。然而,在來自與數(shù)據(jù)庫服務(wù)器104相關(guān)聯(lián)的復制品的改變進行傳播的 同時,與數(shù)據(jù)庫服務(wù)器104相關(guān)聯(lián)的復制品的相應數(shù)據(jù)對象116用新價格更新,
得到更新的數(shù)據(jù)對象118 (參見包含經(jīng)改變價格的陰影單元格)。結(jié)果在數(shù)據(jù) 庫服務(wù)器102處,就會檢測到與數(shù)據(jù)庫服務(wù)器102和104相關(guān)聯(lián)的復制品的相 應數(shù)據(jù)對象之間的沖突。
可以使用不同的策略來檢測這些沖突。在一個實現(xiàn)中,分布式數(shù)據(jù)庫系統(tǒng) 利用分布式時間戳機制并使用同步參數(shù)來檢測沖突。同步參數(shù)可以顯式地指代 向量時間對、實時值、版本向量、或者可用于跟蹤彼此相關(guān)的更新事件的其他 值。
在一個實現(xiàn)中,每個復制品維持本地時間戳,后者只要在該復制品處的數(shù) 據(jù)狀態(tài)改變時就遞增,而數(shù)據(jù)狀態(tài)的改變或者由于本地更新或者由于與對等復 制品的同步。對于每個數(shù)據(jù)對象,該復制品還維持兩個同步參數(shù)(1)修改參 數(shù)m,(為每個本地已知的復制品i )指示i 處數(shù)據(jù)對象最后改變的i 處時間 戳;以及(2)同步參數(shù)s,(為每個本地已知的復制品iO指示7 處數(shù)據(jù)對象最 后同步的i 處時間戳(例如,由遠程同步更新產(chǎn)生)。在一個實現(xiàn)中,參數(shù)m 和s被表示為帶有對應于每個已知復制品的同步參數(shù)的時間戳向量,雖然也可 以利用其他參數(shù)類型。通俗地,修改參數(shù)w跟蹤數(shù)據(jù)對象的本地版本,而同步 時間參數(shù)s跟蹤數(shù)據(jù)對象相對于其他復制品有多當前。同步過程比較修改時間 參數(shù)m^和同步時間參數(shù)^ (與遠程復制品」的數(shù)據(jù)對象的同步更新相關(guān)聯(lián)) 的組合與修改時間參數(shù)ms和同步時間參數(shù)& (與本地復制品S的對應本地數(shù) 據(jù)對象相關(guān)聯(lián))的組合,以確定是否更新本地數(shù)據(jù)對象。
例如,當考慮復制品S中的本地數(shù)據(jù)對象是否需要相對于復制品^被 更新時,w力^&測試復制品5中的本地數(shù)據(jù)對象是否由復制品J的對應數(shù) 據(jù)對象中的改變同步。因此,如果/^^&,復制品S無需被更新,因為復 制品B已經(jīng)與從復制品j獲取的最近修改相同步。相反地,如果附^>&,, 則wsS^測試復制品」是否相對于來自復制品S的最后修改而被同步。因 此,如果m」〉^且msS^,則復制品J具有尚未與復制品S同步的更近修 改,所以復制品5需要用來自復制品」的同步更新來更新。然而,如果m」〉 ^且ms > ^,則復制品與萬兩者都已經(jīng)用并發(fā)修改來修改并且存在沖突。 應該理解也可以利用其他沖突檢測模式。
在檢測到?jīng)_突之后,數(shù)據(jù)庫服務(wù)器通常會嘗試使用各種沖突解決技術(shù)中的
一種來解決沖突。在一個實現(xiàn)中,可以向用戶呈現(xiàn)沖突并且向其詢問以選擇期 望的結(jié)果,隨后該結(jié)果可以傳播遍及分布式數(shù)據(jù)庫系統(tǒng)100。在其它實現(xiàn)中, 沖突可在算法上被解決(例如,基于時間向量選擇最近改變,選擇最高改變值 等)。也可以利用其他沖突解決技術(shù)。
數(shù)據(jù)庫服務(wù)器102檢測沖突并用于解決該沖突。在一個實現(xiàn)中,在數(shù)據(jù)庫 服務(wù)器102上執(zhí)行的行進中的同步過程產(chǎn)生沖突解決線程并在隨后繼續(xù)與接收 自其他復制品的其他同步更新相同步。這些更新可以包括針對已在遠程復制品 處生成的相應沖突的沖突解決。在確定了沖突解決之后,數(shù)據(jù)庫服務(wù)器102就 確定該解決是否陳舊。陳舊解決指的是因為來自遠程復制品的介入沖突同步更 新已經(jīng)在本地復制品的沖突解決處理期間應用于相同數(shù)據(jù)對象而不再有效的 沖突解決。因此在此情況下,沖突已由遠程數(shù)據(jù)庫服務(wù)器解決,或者數(shù)據(jù)對象 已通過其他途徑改變,并且由解決過程確定的本地沖突解決是陳舊的。如果數(shù) 據(jù)庫服務(wù)器102確定本地沖突解決不陳舊,則該解決就被本地應用并傳播至分 布式數(shù)據(jù)庫系統(tǒng)中的其他相關(guān)復制品。
圖2示出了描述另一示例性分布式?jīng)_突解決的分布式數(shù)據(jù)庫系統(tǒng)200。第 一數(shù)據(jù)庫服務(wù)器202、第二數(shù)據(jù)庫服務(wù)器204和第三數(shù)據(jù)庫服務(wù)器206經(jīng)由諸 如因特網(wǎng)或局域網(wǎng)(LAN)等的網(wǎng)絡(luò)208通信連接。每個數(shù)據(jù)庫服務(wù)器都可以 訪問分布式數(shù)據(jù)庫的各別復制品。每個復制品與分布式數(shù)據(jù)庫系統(tǒng)200中的其 他復制品共享一完整或部分模式。此外,各復制品由同步框架耦合,在其中每 個復制品將其改變傳播至其他相關(guān)復制品,而后者隨后可以用傳播的改變更新 其自身數(shù)據(jù)。
如同圖1的示例一樣,會產(chǎn)生沖突。例如,在圖2中,與數(shù)據(jù)庫服務(wù)器 202相關(guān)聯(lián)的復制品的數(shù)據(jù)對象210用新價格更新,得到更新的數(shù)據(jù)對象212 (參見包含經(jīng)改變價格的陰影單元格)。改變操作被傳播至其他相關(guān)復制品(參 見將改變操作傳播至復制品206的虛線箭頭214,應該理解該改變操作也可傳 播至復制品204)。然而,在來自與數(shù)據(jù)庫服務(wù)器204相關(guān)聯(lián)的復制品的改變 進行傳播的同時,與數(shù)據(jù)庫服務(wù)器204相關(guān)聯(lián)的復制品的數(shù)據(jù)對象216用新價 格更新,得到更新的數(shù)據(jù)對象218 (參見包含經(jīng)改變價格的陰影單元格)。改 變操作被傳播至其他相關(guān)復制品(參見將改變操作傳播至復制品206的虛線箭
頭215,應該理解該改變操作也可傳播至復制品202)。結(jié)果在數(shù)據(jù)庫服務(wù)器 206處,就會檢測到與數(shù)據(jù)庫服務(wù)器202和204相關(guān)聯(lián)的復制品的相應數(shù)據(jù)對 象之間的沖突。
數(shù)據(jù)庫服務(wù)器206檢測沖突并用于解決該沖突。在一個實現(xiàn)中,在數(shù)據(jù)庫 服務(wù)器206上執(zhí)行的行進中的同步過程產(chǎn)生沖突解決線程并在隨后繼續(xù)與接收 自其他復制品的其他更新相同步。在確定了沖突解決之后,數(shù)據(jù)庫服務(wù)器206 就確定該解決是否陳舊。陳舊解決指的是因為來自遠程復制品或者本地修改的 介入沖突同步更新已經(jīng)在本地復制品的沖突解決處理期間應用于相同數(shù)據(jù)對 象而不再有效的沖突解決。因此在此情況下,沖突已由遠程數(shù)據(jù)庫服務(wù)器解決, 或者數(shù)據(jù)對象已通過其他途徑改變,并且由解決過程確定的本地沖突解決是陳 舊的。如果數(shù)據(jù)庫服務(wù)器206確定本地沖突解決不陳舊,則該解決就被本地應 用并傳播至分布式數(shù)據(jù)庫系統(tǒng)中的其他相關(guān)復制品。
圖3示出了用于分布式數(shù)據(jù)庫系統(tǒng)的示例性同步和解決過程300。同步過 程通常在每臺數(shù)據(jù)庫服務(wù)器上執(zhí)行,接收來自遠程復制品的遠程同步更新并將 本地同步更新傳播至那些遠程復制品。每個同步更新包括同步參數(shù),諸如版本 向量、向量時間對或其他參數(shù)。例如,同步參數(shù)可以具有包含本地已知的有關(guān) 在每個已知遠程復制品處數(shù)據(jù)對象的同步或修改狀態(tài)的信息的向量的形式。
接收操作302接收來自更新隊列的同步更新。更新隊列包括從遠程復制品 接收的同步更新以及要從本地復制品傳播的同步更新(例如,本地沖突解決、 本地同步或其他本地修改)。如果該同步更新由決定操作304判定為本地(例 如,原始本地修改、本地確定的沖突解決、或者由遠程同步更新產(chǎn)生的本地更 新),則傳播操作306將該同步更新發(fā)送至其他復制品并且處理返回到接收操 作302以接收更新隊列中的下一個同步更新。該同步更新由決定操作304判定 為來自遠程復制品(例如,遠程同步更新或者遠程確定的沖突解決),則鎖定 操作308鎖定本地復制品中的數(shù)據(jù)對象以避免遠程同步更新和本地沖突解決應 用之間的競爭條件。審査操作309隨后檢査同步更新的同步參數(shù)以確定沖突是 否存在,諸如使用前述修改參(m)數(shù)和同步參數(shù)(力方法。如果未在檢測操作310 中檢測到?jīng)_突,則更新操作312或者將來自同步更新的改變應用于本地復制品 或者什么也不做(例如,如果本地復制品已經(jīng)被同步)。
在一個實現(xiàn)中,可以應用來自更新的兩類不同改變,雖然在可選實現(xiàn)中可 以只應用一類或兩類以上。在第一類改變中,更新導致本地復制品中一狀態(tài)(例 如,數(shù)據(jù))改變。例如,同步更新可以指示本地復制品中數(shù)據(jù)對象的值。作為
響應,更新操作312改變數(shù)據(jù)對象的值并更新與該數(shù)據(jù)對象相關(guān)聯(lián)的同步參數(shù)。 在第二類改變中,更新不導致本地復制品中的狀態(tài)改變。例如,在同步更新中 指示的值與本地數(shù)據(jù)對象中已有值相同。作為響應,更新操作312只需更新與 該數(shù)據(jù)對象相關(guān)聯(lián)的同步參數(shù)而同步更新的剩余部分(例如,值改變)可被丟 棄。
在更新操作312之后,解鎖操作313解除該數(shù)據(jù)對象的鎖定,而排隊操作 315隨后將同步更新作為本地更新傳遞給更新隊列,該更新于是能夠在同步過 程的下一階段被正常處理。作為替換,同步更新可以被直接傳遞給傳播操作 306。處理隨后行進至傳播操作306以在其返回到接收操作302來接收來自更 新隊列的另一同步更新之前通知改變的其他遠程復制品。
如果檢測操作310檢測到?jīng)_突,則快照操作314就通過記錄有關(guān)同步更新 和沖突中本地數(shù)據(jù)對象的信息來捕捉該沖突的快照,上述信息諸如可以是本地
復制品的當前時間戳、本地數(shù)據(jù)對象的狀態(tài)(例如,值)、遠程數(shù)據(jù)對象的狀 態(tài)、本地同步參數(shù)、以及遠程同步參數(shù)。新的過程操作316初始(例如,產(chǎn)生) 由該快照伴隨的獨立解決過程(例如,新線程)以確定該沖突的解決。解決過 程與關(guān)聯(lián)于該沖突的數(shù)據(jù)對象相關(guān)聯(lián),從而可以為不同的數(shù)據(jù)對象同時運行多 個解決過程。在初始解決過程之后,同步過程執(zhí)行解除數(shù)據(jù)對象鎖定的解鎖操 作317,并在隨后返回到接收操作302同時解決過程繼續(xù)處理該沖突。當一個 或多個過程并發(fā)操作時,每個過程能夠與多任務(wù)或多線程環(huán)境中一個或多個處 理器上的其他過程協(xié)同執(zhí)行指令。這一并發(fā)處理允許同步過程用同步更新繼續(xù) 更新本地復制品并傳播其他改變,同時解決過程處理該沖突。
在解決過程中,接收操作318接收來自同步過程的快照。解決操作320 解決該沖突,諸如通過應用沖突解決算法或者要求用戶從兩個數(shù)據(jù)狀態(tài)(本地 或遠程)中選擇一個。在解決該沖突之后,鎖定操作322鎖定本地復制品中的 數(shù)據(jù)對象以避免遠程同步更新和本地沖突解決應用之間的競爭條件。
在向本地復制品應用經(jīng)解決的更新之前,解決過程檢測該沖突解決是否陳
舊。陳舊暗示在該解決被處理期間,接收另一遠程同步更新并將其應用于同一
本地數(shù)據(jù)對象。因此,陳舊測試操作324記錄解決操作320之后存在的條件并 將從同步過程的快照中接收到的本地時間戳與關(guān)聯(lián)于本地數(shù)據(jù)對象的當前同 步參數(shù)(例如,在解決操作320之后捕捉的)相比較。如果同步參數(shù)比來自快 照的時間戳更近,則本地沖突解決是陳舊的。因此,解鎖操作326就解除復制 品中數(shù)據(jù)對象的鎖定,而刪除操作328刪除該解決。
相反地,如果陳舊測試操作324確定本地沖突解決不陳舊,更新操作330 就把該沖突解決應用于本地復制品,包括更新本地數(shù)據(jù)對象的數(shù)據(jù)并更新本地 數(shù)據(jù)對象的同步參數(shù)以反映該沖突解決的應用。其后,解鎖操作332解除本地 復制品中數(shù)據(jù)對象的鎖定。排隊操作334隨后將沖突解決作為本地更新傳遞給 更新隊列,該更新能夠在同步過程中被正常處理。作為替換,沖突解決可以被 直接傳遞給傳播操作306。
終止操作336終止該解決過程。如上所述,可以為由關(guān)聯(lián)于本地復制品執(zhí) 行的單個同步過程初始的不同沖突并發(fā)執(zhí)行多個解決過程。
還應理解當在同步過程中接收到針對一數(shù)據(jù)對象的介入同步更新并對其 進行處理時,在對該同一數(shù)據(jù)對象執(zhí)行解決過程期間,可以檢測到新的潛在沖 突。在此情況下,如果同步更新包括與當前本地狀態(tài)相兼容(例如,相等)的 遠程數(shù)據(jù)狀態(tài)(例如,表示無沖突),就更新本地數(shù)據(jù)對象,這包括更新同步 參數(shù),并且相關(guān)聯(lián)的解決過程可以被中斷并丟棄。相反地,如果同步更新包括 與當前本地狀態(tài)不兼容(例如,不相等)的遠程數(shù)據(jù)狀態(tài)(例如,表示沖突), 就丟棄該同步更新以支持與該數(shù)據(jù)對象相關(guān)聯(lián)的進行中的沖突解決。
用于實現(xiàn)本發(fā)明的圖4的示例性硬件和操作環(huán)境包括具有游戲控制臺或 計算機20形式的通用計算設(shè)備,包括處理單元21、系統(tǒng)存儲器22、將包括系 統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件操作性地耦合至處理單元21的系統(tǒng)總線23???以只存在一個或者存在一個以上處理單元21,使得計算機20的處理器包括單 中央處理單元(CPU),或者多處理單元,通常稱為并行處理環(huán)境。計算機20 可以是常規(guī)計算機,分布式計算機,或者任何其他類型的計算機,本發(fā)明在此 不受限制。
系統(tǒng)總線23可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲器總線
或存儲控制器、外圍總線、切換結(jié)構(gòu)、點對點連接、以及使用各種總線體系結(jié) 構(gòu)中的任一種的局部總線。系統(tǒng)存儲器可被簡單稱為存儲器,并且包括只讀存
儲器(ROM) 24和隨機存取存儲器(RAM) 25?;据斎?輸出系統(tǒng)(BIOS) 26存儲在ROM20中,包含幫助在諸如啟動期間在計算機24內(nèi)元件之間傳遞 信息的基本例程。計算機20還包括用于對硬盤(未示出)進行讀寫的硬盤驅(qū) 動器27、用于對可移動磁盤29進行讀寫的磁盤驅(qū)動器28以及用于對可移動光 盤31,如CD-ROM或其它光介質(zhì)進行讀寫的光盤驅(qū)動器30。
硬盤驅(qū)動器27、磁盤驅(qū)動器28和光盤驅(qū)動器30分別由硬盤驅(qū)動器接口 32、磁盤驅(qū)動器接口 33和光盤驅(qū)動器接口 34連接到系統(tǒng)總線23。驅(qū)動器及其 關(guān)聯(lián)的計算機可讀媒質(zhì)為計算機20提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序 模塊和其它數(shù)據(jù)的非易失性存儲。本領(lǐng)域的技術(shù)人員可以理解,在示例操作環(huán) 境中也可使用可儲存可由計算機訪問的數(shù)據(jù)的任何類型的計算機可讀媒質(zhì),如 磁帶盒、閃存卡、數(shù)字視頻盤、隨機存取存儲器(RAM)、只讀存儲器(ROM) 等等。
若干程序模塊能存儲在硬盤、磁盤29、光盤31、 ROM24或RAM25中, 包括操作系統(tǒng)35、 一個或多個應用程序36、其它程序模塊37和程序數(shù)據(jù)38。 用戶可通過諸如鍵盤40和定點設(shè)備42的輸入設(shè)備向個人計算機20中輸入命 令和信息。其它輸入設(shè)備(未示出)可以包括麥克風、操縱桿、游戲手柄、圓 盤式衛(wèi)星天線、掃描儀等。這些和其它輸入設(shè)備通常通過耦合到系統(tǒng)總線的串 行端口接口 46連接到處理單元21,但也可通過其它接口連接,如并行端口、 游戲端口和通用串行總線(USB)。監(jiān)視器47或其它類型的顯示設(shè)備也經(jīng)由 接口,諸如視頻接口 48連接至系統(tǒng)總線23。除監(jiān)視器之外,計算機通常包括 其它外圍輸出設(shè)備(未示出),如揚聲器或打印機。
計算機20可使用至一個或多個遠程計算機,諸如遠程計算機49的邏輯連 接在網(wǎng)絡(luò)化環(huán)境中操作。這些邏輯連接由耦合至或者作為計算機20 —部分的 通信設(shè)備來實現(xiàn),本發(fā)明不限于特定類型的通信設(shè)備。遠程計算機49可以是 另一計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、客戶機、對等設(shè)備或其它公共網(wǎng)絡(luò) 節(jié)點,并且通常包括許多或所有以上相對于計算機20所描述的元件,盡管在 圖4中僅示出了存儲器存儲設(shè)備50。圖4中畫出的邏輯連接包括局域網(wǎng)(LAN)
51和廣域網(wǎng)(WAN) 52。這樣的網(wǎng)絡(luò)環(huán)境常見于辦公室網(wǎng)絡(luò)、企業(yè)范圍計算 機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng),并且可以是所有類型的網(wǎng)絡(luò)。
當在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機20通過作為一種通信設(shè)備類型的網(wǎng) 絡(luò)接口或適配器53連接到局域網(wǎng)51。當在WAN聯(lián)網(wǎng)環(huán)境中使用時,計算機 20通常包括調(diào)制解調(diào)器54、網(wǎng)絡(luò)適配器、 一種類型的通信設(shè)備,或者用于經(jīng) 廣域網(wǎng)52建立通信的任何其他類型的通信設(shè)備?;驗閮?nèi)置或為外置的調(diào)制解 調(diào)器54經(jīng)由串行端口接口46連接到系統(tǒng)總線23。在網(wǎng)絡(luò)化環(huán)境中,相對于個 人計算機20所描述的程序模塊或其部分可以存儲在遠程存儲器存儲設(shè)備中。 可以理解,所示的網(wǎng)絡(luò)連接是示例性的,且可以使用在計算機之間建立通信鏈 路的其它手段和通信設(shè)備。
在示例性實現(xiàn)中,同步模塊、解決模塊以及其它模塊可由存儲在存儲器 22和/或存儲設(shè)備29或31中并由處理單元21處理的指令來具體化。復制品、 快照、沖突解決、同步更新和其他數(shù)據(jù)可以存儲在存儲器22內(nèi)和/或作為永久 性數(shù)據(jù)存儲的存儲設(shè)備29或31內(nèi)。
此處所描述的技術(shù)在一個或多個系統(tǒng)中被實現(xiàn)為邏輯操作和/或模塊。邏 輯操作可被實現(xiàn)為在一個或多個計算機系統(tǒng)中執(zhí)行的處理器實現(xiàn)的步驟的序 列,以及在一個或多個計算機系統(tǒng)中的互連機器或電路模塊。同樣地,各組件 模塊的描述可以按照由模塊執(zhí)行或影響的操作來提供。所得的實現(xiàn)的選擇取決 于實現(xiàn)所描述的技術(shù)的下層系統(tǒng)的性能需求。從而,組成此處所述的技術(shù)的實 施例的邏輯操作被不同地表示為操作、步驟、對象或模塊。此外,應該理解, 除非以其他方式明確地提出權(quán)利要求或權(quán)利要求語言固有地需要一特定的次 序,否則邏輯操作可以任何次序來執(zhí)行。
以上說明、示例和數(shù)據(jù)提供了對本發(fā)明的各示例性實施例的結(jié)構(gòu)和使用的 全面描述。盡管以上帶著一定程度的特殊性或?qū)σ粋€或多個單獨實施例的參考 描述了本發(fā)明的各實施例,但是本領(lǐng)域的技術(shù)人員能夠?qū)λ_的實施例做出 多種改變而不背離本發(fā)明的精神或范圍。更具體地,應該理解,可以獨立于個 人計算機采用所描述的技術(shù)。因此可考慮其他實施例。其目的是以上描述中所 包含以及在附圖中所示出的所有一切應當解釋為僅僅是例示特定實施例而非 限制??梢詫毠?jié)或結(jié)構(gòu)做出更改而不背離如以下權(quán)利要求書中定義的本發(fā)明
的基本元素。
雖然已經(jīng)用具體到結(jié)構(gòu)功能部件和/或方法技藝的語言對主題進行了描 述,但是應該理解,在所附權(quán)利要求中定義的該主題不必限于上述具體的功能 部件或動作。相反,上述具體特征和動作是作為實現(xiàn)權(quán)利要求主題的示例形式 公開的。
權(quán)利要求
1. 一種在本地復制品同步中解決沖突的方法,所述方法包括執(zhí)行從一個或多個遠程復制品接收同步更新的同步過程,如果在所述本地復制品的本地數(shù)據(jù)對象和同步更新之間檢測到?jīng)_突,則所述同步過程初始與所述本地數(shù)據(jù)對象相關(guān)聯(lián)的解決過程;以及響應于由所述同步過程初始的所述解決過程,和所述同步過程并發(fā)執(zhí)行所述解決過程,所述解決過程確定沖突解決而所述同步過程則處理其他同步更新。
2. 如權(quán)利要求1所述的方法,其特征在于,所述解決過程還用所述沖突 解決更新所述本地數(shù)據(jù)對象,而所述同步過程則處理其他同步更新。
3. 如權(quán)利要求1所述的方法,其特征在于,所述解決過程還確定所述沖 突解決是否陳舊,并且如果所述沖突解決不陳舊則用所述沖突解決更新所述本 地數(shù)據(jù)對象。
4. 如權(quán)利要求1所述的方法,其特征在于,如果在所述本地數(shù)據(jù)對象和 所述同步更新之間檢測到?jīng)_突,所述同步過程還記錄所述沖突的快照并將所述 快照傳遞給所述解決過程,并且其中所述解決過程還通過將所述快照與所述沖 突解決已被確定之后存在的條件相比較來確定所述沖突解決是否陳舊。
5. 如權(quán)利要求4所述的方法,其特征在于,所述快照在所述沖突解決之 前被捕捉并且包括本地時間戳、所述本地數(shù)據(jù)對象的狀態(tài)、以及從所述同步更 新接收的相應遠程數(shù)據(jù)對象的狀態(tài)。
6. 如權(quán)利要求4所述的方法,其特征在于,所述解決過程還記錄與所述 本地數(shù)據(jù)對象相關(guān)聯(lián)的同步參數(shù)并且如果來自所述快照的所述本地時間戳早 于所述同步參數(shù),則確定所述沖突解決是陳舊的。
7. 如權(quán)利要求1所述的方法,其特征在于,所述解決過程還將所述沖突 解決傳遞給所述同步過程用以傳播至一個或多個遠程復制品。
8. 如權(quán)利要求1所述的方法,其特征在于,如果沒有在所述本地數(shù)據(jù)對 象和同步更新之間檢測到?jīng)_突,則所述同步過程將所述同步更新應用于所述本 地數(shù)據(jù)對象。
9. 如權(quán)利要求1所述的方法,其特征在于,所述解決過程還在用所述沖 突解決更新所述本地數(shù)據(jù)對象之前鎖定所述本地數(shù)據(jù)對象。
10. 如權(quán)利要求1所述的方法,其特征在于,所述解決過程還在測試所述沖突解決是否陳舊之前鎖定所述本地數(shù)據(jù)對象。
11. 如權(quán)利要求l所述的方法,其特征在于,如果所述沖突解決陳舊,則 所述解決過程還刪除所述沖突解決。
12. —種具有用于執(zhí)行實現(xiàn)權(quán)利要求1所述操作的計算機過程的計算機可 執(zhí)行指令的計算機可讀介質(zhì)。
13. —種在本地復制品同步中解決沖突的方法,所述方法包括執(zhí)行從一個或多個遠程復制品接收同步更新的同步過程,如果在所述本地 復制品的本地數(shù)據(jù)對象和同步更新之間檢測到?jīng)_突,則所述同步過程初始與所述本地數(shù)據(jù)對象相關(guān)聯(lián)的解決過程;以及響應于由所述同步過程初始的所述解決過程,和所述同步過程并發(fā)地執(zhí)行 所述解決過程,所述解決過程確定沖突解決并且如果所述本地數(shù)據(jù)對象自從所 述解決過程初始起尚未被所述同步過程更新,則將所述沖突解決應用于所述本 地數(shù)據(jù)對象。
14. 如權(quán)利要求13所述的方法,其特征在于,所述解決過程還用所述沖突解決更新所述本地數(shù)據(jù)對象,而所述同步過程則處理其他同步更新。
15. 如權(quán)利要求13所述的方法,其特征在于,所述解決過程還確定所述沖突解決是否陳舊,并且如果所述沖突解決不陳舊則用所述沖突解決更新所述 本地數(shù)據(jù)對象。
16. —種具有用于執(zhí)行實現(xiàn)權(quán)利要求13所述操作的計算機過程的計算機 可執(zhí)行指令的計算機可讀介質(zhì)。
17. —種在本地復制品同步中解決沖突的方法,所述方法包括執(zhí)行從一個或多個遠程復制品接收同步更新的同步過程,如果在所述本地 數(shù)據(jù)對象和同步更新之間檢測到?jīng)_突,則所述同步過程在分開的線程中產(chǎn)生解決過程;以及和所述同步過程同時執(zhí)行所述分開線程中的所述解決過程,所述解決過程 確定沖突解決同時所述同步過程處理其他同步更新。
18. 如權(quán)利要求17所述的方法,其特征在于,所述解決過程還用所述沖 突解決更新所述本地數(shù)據(jù)對象,而所述同步過程則處理其他同步更新。
19. 如權(quán)利要求17所述的方法,其特征在于,所述解決過程還確定所述 沖突解決是否陳舊,并且如果所述沖突解決不陳舊則用所述沖突解決更新所述 本地數(shù)據(jù)對象。
20. —種具有用于執(zhí)行實現(xiàn)權(quán)利要求17所述操作的計算機過程的計算機 可執(zhí)行指令的計算機可讀介質(zhì)。
全文摘要
響應于對一個或多個同步?jīng)_突的檢測而和每個復制品的同步過程并發(fā)運行一個或多個解決過程。每個解決過程用于解決有關(guān)數(shù)據(jù)對象的沖突而同步過程則繼續(xù)處理其他同步更新。在沖突解決已被確定之后,針對本地復制品的當前條件測試沖突解決。如果沖突解決不陳舊,則將其應用于本地復制品并傳遞回同步過程以供傳播至遠程復制品。否則,如果沖突解決陳舊,則被丟棄。
文檔編號G06F15/16GK101390094SQ200780006163
公開日2009年3月18日 申請日期2007年1月26日 優(yōu)先權(quán)日2006年2月22日
發(fā)明者S·托比斯 申請人:微軟公司