亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)復(fù)制中的分區(qū)計(jì)算和變化傳播的結(jié)構(gòu)的制作方法

文檔序號(hào):6397258閱讀:82來源:國(guó)知局
專利名稱:數(shù)據(jù)復(fù)制中的分區(qū)計(jì)算和變化傳播的結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明牽涉網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu),尤其是跨全異系統(tǒng)更新這類基于網(wǎng)絡(luò)的數(shù)據(jù)。
背景技術(shù)
全球通信網(wǎng)絡(luò)如因特網(wǎng)的出現(xiàn)方便了信息通過公司以全異數(shù)據(jù)庫(kù)的形式的廣泛分發(fā),全異數(shù)據(jù)庫(kù)通常被不同地理位置的單獨(dú)公司實(shí)體或分支辦公室所使用。將這類不同種類的數(shù)據(jù)源合并入同類數(shù)據(jù)庫(kù)迄今為止造成了重大的系統(tǒng)密集進(jìn)程,導(dǎo)致許多系統(tǒng)進(jìn)程的重復(fù)。
全異數(shù)據(jù)庫(kù)可以通過復(fù)制的方法來收斂——復(fù)制是一個(gè)進(jìn)程,將數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象從一個(gè)數(shù)據(jù)庫(kù)復(fù)制并分發(fā)到另一個(gè)數(shù)據(jù)庫(kù)中,然后在數(shù)據(jù)庫(kù)之間同步信息以保持一致性。
合并復(fù)制是一種困難的復(fù)制類型。合并復(fù)制能力使得未連接和移動(dòng)用戶可以脫機(jī)運(yùn)行應(yīng)用程序,然后周期性地重新連接來與主數(shù)據(jù)庫(kù)同步。當(dāng)連接或未連接時(shí)可能對(duì)源(也稱為發(fā)行者)和目標(biāo)(也稱為用戶)上的復(fù)制的數(shù)據(jù)作出自治的改變,然后當(dāng)站點(diǎn)被連接時(shí)合并站點(diǎn)之間的更新。采用合并復(fù)制,服務(wù)器捕捉源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)中遞增數(shù)據(jù)變化,并根據(jù)預(yù)配置的準(zhǔn)則或通過使用定制分解器來協(xié)調(diào)沖突,以分解沖突。
合并復(fù)制通常用于支持源和/或目標(biāo)上的復(fù)制數(shù)據(jù)的自治變化。數(shù)據(jù)可以在計(jì)劃的時(shí)間或者根據(jù)需求在服務(wù)器之間同步。更新在多于一個(gè)服務(wù)器上獨(dú)立完成(如不承諾協(xié)議),所以同一數(shù)據(jù)可以由源或由多于一個(gè)目標(biāo)來更新。因此,當(dāng)合并數(shù)據(jù)更改時(shí)會(huì)出現(xiàn)沖突。合并復(fù)制包括沖突分解的缺省和定制選項(xiàng),可以在配置合并源時(shí)定義。當(dāng)出現(xiàn)沖突,合并代理調(diào)用沖突分解器來確定哪一數(shù)據(jù)將被接受并傳播至其它目標(biāo)站點(diǎn)。合并重復(fù)中可用的選項(xiàng)包括水平和垂直過濾源數(shù)據(jù),包括使用聯(lián)合過濾器和動(dòng)態(tài)過濾器;使用交替同步伙伴;優(yōu)化同步來提高合并性能;使復(fù)制數(shù)據(jù)有效來確保同步;以及使用可連接的預(yù)約數(shù)據(jù)庫(kù)。
合并復(fù)制支持水平、動(dòng)態(tài)以及聯(lián)合過濾器,所有的過濾器都使管理員可以創(chuàng)建要復(fù)制的數(shù)據(jù)的分區(qū)(或表)。復(fù)制的數(shù)據(jù)的過濾可以供至少下述使用網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)量的最小化;目標(biāo)復(fù)制品所需的存儲(chǔ)空間量的減少;根據(jù)個(gè)別目標(biāo)復(fù)制品需求定制數(shù)據(jù)源和應(yīng)用程序;以及沖突的避免或緩解,因?yàn)楦髯缘臄?shù)據(jù)分區(qū)可以發(fā)送至不同的目標(biāo)復(fù)制品。即使合并復(fù)制允許多個(gè)復(fù)制品更新同一數(shù)據(jù),使復(fù)制品接收不相交集的數(shù)據(jù)的過濾能確保對(duì)單個(gè)目標(biāo)的兩個(gè)復(fù)制品不會(huì)更新相同的數(shù)據(jù)值。
傳統(tǒng)上,合并復(fù)制支持保持源復(fù)制品的分區(qū)與目標(biāo)復(fù)制品一致的技術(shù)。然而,現(xiàn)有算法由于在源和目標(biāo)復(fù)制品之間需要并發(fā)同步會(huì)話,因此導(dǎo)致系統(tǒng)的重大性能退化。在常規(guī)服務(wù)器中,合并復(fù)制必須支持十分復(fù)雜的分區(qū)技術(shù)來使目標(biāo)復(fù)制品可以僅接收源復(fù)制品的數(shù)據(jù)的一個(gè)子集。這些技術(shù)需要在源復(fù)制品上有高數(shù)量的CPU周期,從而通過增加維護(hù)目標(biāo)數(shù)據(jù)庫(kù)復(fù)制所需的同時(shí)同步數(shù),造成擴(kuò)展網(wǎng)絡(luò)的瓶頸。密集硬件和軟件處理器函數(shù)與“分區(qū)計(jì)算”算法相關(guān)聯(lián),該算法準(zhǔn)備了為保持目標(biāo)復(fù)制品的分區(qū)與源復(fù)制品的分區(qū)相一致所需的變化列表。
在常規(guī)分區(qū)計(jì)算方法中,當(dāng)客戶請(qǐng)求與服務(wù)器的數(shù)據(jù)庫(kù)同步時(shí),服務(wù)器的分區(qū)計(jì)算函數(shù)包括計(jì)算尚未同步的行的分區(qū)成員資格,來確定兩數(shù)據(jù)庫(kù)之間的差異。由于客戶數(shù)據(jù)庫(kù)通常是駐留在服務(wù)器上的全部數(shù)據(jù)庫(kù)的一個(gè)子集,計(jì)算函數(shù)還包括了充分復(fù)審源復(fù)制品上的所有可能潛在地需要傳播至目標(biāo)復(fù)制品的當(dāng)前變化,然后確定哪一變化與目標(biāo)復(fù)制品有關(guān)。例如,根據(jù)目標(biāo)復(fù)制品過濾器標(biāo)準(zhǔn)合格的行屬于目標(biāo)復(fù)制品,并且必須在目標(biāo)復(fù)制品上被更新或插入。已更新并且不再符合過濾器標(biāo)準(zhǔn)的行不再屬于目標(biāo)復(fù)制品,因此必須刪除。這表明,在源復(fù)制品上的更新可以作為刪除操作傳播到目標(biāo)復(fù)制品。更進(jìn)一步,如果有聯(lián)合過濾器,已更新并且當(dāng)前屬于目標(biāo)復(fù)制品的行可能需要擴(kuò)展來從聯(lián)合的表中獲取相關(guān)行。
從性能和伸縮度看,“每一同步會(huì)話分區(qū)計(jì)算”方法的消極方面如下。常規(guī)系統(tǒng)負(fù)擔(dān)著冗余處理,因?yàn)閷?duì)每一變化,不管是否有分區(qū)更新,常規(guī)同步會(huì)話需要估算變化的行是否屬于目標(biāo)復(fù)制品。如果行在每一同步會(huì)話之前改變,每一隨后的同步會(huì)話都要通過為該行建立新的分區(qū)成員資格元數(shù)據(jù)來再次評(píng)估該行是否屬于目標(biāo)復(fù)制品。關(guān)于行的之前的分區(qū)成員資格的知識(shí)在同步會(huì)話之間不加記憶。這導(dǎo)致每一同步會(huì)話的冗余處理。為以示例說明常規(guī)系統(tǒng)的進(jìn)程密集方面,考慮具有1,000個(gè)目標(biāo)復(fù)制品的網(wǎng)絡(luò)。如果源確定一行已改變并請(qǐng)求向目標(biāo)復(fù)制品發(fā)行,該1,000個(gè)目標(biāo)復(fù)制品進(jìn)行同步使其更新。如果該行再一次改變,隨之而來的是另1,000個(gè)同步會(huì)話,并且這一進(jìn)程得以重復(fù)直到該行改變1,000次。最后,所有同步會(huì)話將必須為該行執(zhí)行一個(gè)1,000,000的組合總數(shù)的分區(qū)計(jì)算函數(shù)。
常規(guī)系統(tǒng)展示了不良的并發(fā)行為;因?yàn)閷?duì)于每一行變化,需要每一目標(biāo)復(fù)制品執(zhí)行其自身的估算。在源和目標(biāo)系統(tǒng)之間有多重同時(shí)同步情況下,將出現(xiàn)同時(shí)執(zhí)行分區(qū)計(jì)算的多重實(shí)例,導(dǎo)致源服務(wù)器上的高CPU消耗。
準(zhǔn)備為保持目標(biāo)復(fù)制品的分區(qū)與源復(fù)制品的分區(qū)相一致所需要的變化列表的分區(qū)計(jì)算算法往往是任意給定同步會(huì)話中執(zhí)行的最CPU和查詢密集函數(shù)。如果用于定義復(fù)制數(shù)據(jù)集的過濾不是最優(yōu)的,并發(fā)分區(qū)計(jì)算函數(shù)的性能將更進(jìn)一步降低源服務(wù)器的能力。
更快的硬件和更有效的復(fù)制配置可以將這一問題處理到一定程度。但是即使在完美設(shè)計(jì)并調(diào)諧的應(yīng)用程序中,每一發(fā)行者服務(wù)器具有與其能夠有效處理的同時(shí)用戶合并進(jìn)程數(shù)相關(guān)的上限。
對(duì)于該問題的一個(gè)解決方案是調(diào)整源合并進(jìn)程的時(shí)間,使進(jìn)程交錯(cuò)。如果所有目標(biāo)目前在其工作日的開始或結(jié)束時(shí)連接來合并變化,可以要求合并進(jìn)程在一天的非繁忙時(shí)間執(zhí)行。如果在目標(biāo)執(zhí)行合并進(jìn)程時(shí)沒有控制,可以定義上限來限制允許同時(shí)合并的目標(biāo)的數(shù)量。
另一減少源服務(wù)器上的需求的方法是跨更多源擴(kuò)展處理負(fù)載。常用的技術(shù)是以重新發(fā)行等級(jí)使用幾個(gè)服務(wù)器。例如,如果一個(gè)單個(gè)服務(wù)器當(dāng)前作為國(guó)家中所有銷售代表的源,可以添加另外兩個(gè)服務(wù)器來分發(fā)與其關(guān)聯(lián)的負(fù)載,其中,中央發(fā)行者向東部和西部用戶發(fā)行數(shù)據(jù),東部用戶向東海岸的銷售代表重新發(fā)行數(shù)據(jù),西部用戶向西海岸的銷售代表重新發(fā)行數(shù)據(jù)。
然而,沒有一個(gè)常規(guī)解決方案提供具有成本效益并且有效的結(jié)構(gòu),來著眼與大量同步相關(guān)的問題。常規(guī)系統(tǒng)在網(wǎng)絡(luò)上傳播不相關(guān)的元數(shù)據(jù)。由于即使在同步會(huì)話計(jì)算分區(qū)之后也沒有保持的成員資格元數(shù)據(jù),所有源復(fù)制品的變化都被認(rèn)為是與向目標(biāo)復(fù)制品的傳播相關(guān)。這一方法引起伸縮問題,因?yàn)槿绻罅磕繕?biāo)復(fù)制品向源復(fù)制品傳播變化,所考慮的變化的列表將增加。而且,如果源復(fù)制品在與目標(biāo)復(fù)制品的一個(gè)同步會(huì)話過程中記錄任何附加的元數(shù)據(jù),可能需要傳播該元數(shù)據(jù)至另一目標(biāo)復(fù)制品。因此,當(dāng)前方法的伸縮特性未達(dá)到所期望的。本領(lǐng)域需要在同步會(huì)話中將所考慮并且在網(wǎng)絡(luò)上傳播的元數(shù)據(jù)量最小化。根據(jù)當(dāng)前技術(shù)支持許多并發(fā)同步會(huì)話的不足之處,需要在每一同步會(huì)話的執(zhí)行中消除昂貴的分區(qū)計(jì)算函數(shù)。
發(fā)明概述以下描述了本發(fā)明的簡(jiǎn)化概述,來提供本發(fā)明的某些方面的基本理解。本概述并不是本發(fā)明的廣泛綜述,目的不是確定本發(fā)明的重點(diǎn)/關(guān)鍵要素,或描繪本發(fā)明的范圍。其唯一目的是以簡(jiǎn)化的形式描述本發(fā)明的一些概念,作為后文詳細(xì)描述的序言。
本發(fā)明為分區(qū)計(jì)算提供了新的結(jié)構(gòu),并且通過合并復(fù)制使得并發(fā)同步會(huì)話數(shù)可以較大程度地按比例放大,來支持需要大量并發(fā)同步會(huì)話的推廣應(yīng)用。根據(jù)本發(fā)明的一個(gè)方面,介紹了一種新的算法,來保持目標(biāo)的數(shù)據(jù)分區(qū)與源的數(shù)據(jù)分區(qū)相一致。當(dāng)出現(xiàn)變化時(shí),該結(jié)構(gòu)進(jìn)行操作,使得通過使用簡(jiǎn)單的查詢集來計(jì)算這些變化的分區(qū)成員資格。第一同步的分區(qū)成員資格的預(yù)計(jì)算允許源復(fù)制品和目標(biāo)復(fù)制品的隨后同步會(huì)話之間的變化的有效傳播。
本發(fā)明的一個(gè)顯著的方面是,計(jì)算分區(qū)成員資格的處罰在行更改的實(shí)際時(shí)刻就引發(fā),而不是在源復(fù)制品和目標(biāo)復(fù)制品之間的每個(gè)同步會(huì)話中匆忙計(jì)算行的分區(qū)成員資格。該方法允許在每一同步會(huì)話中消除分區(qū)計(jì)算,因?yàn)榉謪^(qū)信息在第一會(huì)話更新時(shí)預(yù)計(jì)算,并對(duì)隨后的同步會(huì)話保持。
因此,這里揭示并請(qǐng)求權(quán)利的本發(fā)明的一個(gè)方面包括了在使用數(shù)據(jù)復(fù)制的客戶/服務(wù)器環(huán)境中方便同步的結(jié)構(gòu)。當(dāng)多個(gè)客戶請(qǐng)求與服務(wù)器同步時(shí),對(duì)第一選擇用于同步的客戶進(jìn)行處理,使得采用保持的元數(shù)據(jù)來計(jì)算并記錄數(shù)據(jù)庫(kù)中的分區(qū)成員資格行。在更新第一客戶后,僅對(duì)剩余的如由保持的元數(shù)據(jù)確定為受該更新影響的客戶繼續(xù)同步進(jìn)程。
本發(fā)明的新的方面允許僅當(dāng)行第一次變化時(shí)進(jìn)行處理(與“每一同步會(huì)話分區(qū)計(jì)算”類似),但是其后,保持該分區(qū)成員資格的信息。與揭示的結(jié)構(gòu)相反,常規(guī)結(jié)構(gòu)“忘記”成員資格信息,因而需要為每一同步會(huì)話計(jì)算該信息。根據(jù)本發(fā)明的方面,在隨后的同步會(huì)話中,使用保持的成員資格信息將源復(fù)制品的變化傳播至目標(biāo)復(fù)制品,來估算變化是否與剩余目標(biāo)相關(guān)。而且,如果同一行多次變化,盡管未牽涉更新(可能是更新的最常見的情況),則在第一次之后甚至也不會(huì)進(jìn)行分區(qū)計(jì)算。這是因?yàn)楸3值某蓡T資格信息將有效直到有更新為止,所以甚至隨后的同步也可以繼續(xù)使用同一保持的成員資格信息。
當(dāng)在目標(biāo)上更新行時(shí),該行的成員資格信息被更新。再者,如果有聯(lián)合過濾器,已更新的并且當(dāng)前屬于目標(biāo)復(fù)制品的行可能需要擴(kuò)充,來從聯(lián)合表中獲取相關(guān)行。計(jì)算的一個(gè)重要方面是使用簡(jiǎn)單基于集的查詢來完成。即使有無數(shù)分區(qū),該基于集的查詢的性能仍能縮放良好,只要變化的行僅屬于所有分區(qū)的一個(gè)小子集,或者最好的情況,屬于恰好一個(gè)分區(qū)的良好分區(qū)數(shù)據(jù)的一個(gè)小子集。
變化行的保持的成員資格信息本質(zhì)上是變化行的行標(biāo)識(shí)符到有資格接收該行的目標(biāo)復(fù)制品的分區(qū)身份的映射。插入和更新需要重新估算分區(qū)成員資格,也需要完成被稱為擴(kuò)充的進(jìn)程,來獲取相關(guān)的行。即,擴(kuò)充著眼于那些由于父行更新而分區(qū)成員資格發(fā)生變化的子行,并且必須重新估算它們的分區(qū)標(biāo)識(shí)符。
關(guān)于刪除和更新,過去成員資格的信息將被保持,因此在下一同步會(huì)話中,有簡(jiǎn)便的方法來得知這些行是否需要從目標(biāo)復(fù)制品中刪除。
為完成以上及相關(guān)目標(biāo),這里結(jié)合以下描述以及附圖描述了本發(fā)明某些說明性的方面。然而,這些方面僅指示了各種可采用本發(fā)明的原理的方法的少數(shù)方法,并且本發(fā)明試圖包含所有這樣的方面及其等效方面。結(jié)合附圖根據(jù)以下詳細(xì)描述,將更清楚本發(fā)明的其它優(yōu)點(diǎn)和新特性。
附圖的簡(jiǎn)要描述

圖1描述了本發(fā)明的系統(tǒng)結(jié)構(gòu)圖。
圖2描述了本發(fā)明的復(fù)制進(jìn)程的流程圖。
圖3描述了用于計(jì)算目標(biāo)的成員資格元數(shù)據(jù)的計(jì)算算法所使用的元數(shù)據(jù)表的相互關(guān)系。
圖4描述了使用過濾和擴(kuò)充的樣本更新模式。
圖5描述了分區(qū)更新的一個(gè)示例,在該分區(qū)更新中,用戶數(shù)據(jù)從一個(gè)雇員重新分配到另一個(gè)雇員。
圖6描述了用于執(zhí)行所揭示的結(jié)構(gòu)的可操作的計(jì)算機(jī)的結(jié)構(gòu)圖。
圖7描述了符合本發(fā)明的樣本計(jì)算環(huán)境的示例性結(jié)構(gòu)圖。
發(fā)明的詳細(xì)描述定義以下術(shù)語貫穿整個(gè)描述使用,這里提供了其定義來幫助理解本發(fā)明的不同方面。
源復(fù)制品變化發(fā)源的數(shù)據(jù)組。
目標(biāo)復(fù)制品變化傳播到的數(shù)據(jù)組。
局部復(fù)制品從源發(fā)行至目標(biāo),包含源復(fù)制品的數(shù)據(jù)的子集的數(shù)據(jù)組。
分區(qū)數(shù)據(jù)的子集,所有接收同一數(shù)據(jù)子集的復(fù)制品被認(rèn)為是處于同一分區(qū)中并分配相同的分區(qū)標(biāo)識(shí)符。
分區(qū)重對(duì)齊導(dǎo)致目標(biāo)復(fù)制品中行的分區(qū)成員資格變化的更改。例如,如果一個(gè)分區(qū)復(fù)制品中的行的成員資格預(yù)言為使用WHERE子句,則任何更新一列至不同值的行更改將構(gòu)成分區(qū)重對(duì)齊。例如,如果在表Customers上使用過濾器“where state=‘WA’”,則一行中列“state”的值的變化將導(dǎo)致該行的分區(qū)重對(duì)齊。
之前值恰好在更新操作之前的值。
之后值恰好在更新操作之后的值。
行過濾器允許表中行的一個(gè)子集從源發(fā)行至目標(biāo)的過濾器。行過濾器使用查詢的WHERE子句并且限制包含在基于特定標(biāo)準(zhǔn)的分區(qū)中的行。
聯(lián)合過濾器當(dāng)一個(gè)表的過濾器是基于發(fā)行中的另一個(gè)表時(shí),個(gè)允許跨表關(guān)系可以在復(fù)制過濾器的定義中使用的過濾器。聯(lián)合過濾器定義了同步會(huì)話中將要強(qiáng)迫執(zhí)行的兩表之間的一種關(guān)系;它類似于在兩表之間指定一種聯(lián)接。聯(lián)合過濾器命名了兩個(gè)表,并指定了聯(lián)接條件來代表兩表之間的關(guān)系。聯(lián)接條件通常的形式為TABLE1.COLUMN1=TABLE2.COLUMN2。
動(dòng)態(tài)過濾器使用了函數(shù)來從目標(biāo)復(fù)制品中檢取值,然后根據(jù)該值來過濾數(shù)據(jù)的行過濾器。該過濾器被定義一次,但是具有資格的合成集對(duì)每一目標(biāo)復(fù)制品來說可以不同,并允許目標(biāo)復(fù)制品僅接收為其需求而定制的數(shù)據(jù)的子集。
同步將從源到目標(biāo)復(fù)制品的數(shù)據(jù)集收斂成最終收斂狀態(tài)的進(jìn)程。
同步標(biāo)記確定兩個(gè)復(fù)制品的不同步程度的實(shí)體。通常模擬為描述最后兩個(gè)復(fù)制品同步的時(shí)間的“邏輯時(shí)鐘實(shí)體”。
沖突檢測(cè)同步中出現(xiàn)的進(jìn)程,查詢?cè)磸?fù)制品和目標(biāo)復(fù)制品的元數(shù)據(jù)來確定更改是否沖突。
沖突分解同步中出現(xiàn)的進(jìn)程,一旦出現(xiàn)沖突能確定該沖突中的優(yōu)勝者和失敗者。
現(xiàn)在參考附圖來描述本發(fā)明,整個(gè)附圖中使用相同的數(shù)字標(biāo)識(shí)相同的元件。在以下描述中,為了解釋,提出大量的特定細(xì)節(jié)來提供對(duì)本發(fā)明的徹底理解。然而,可能很明顯,本發(fā)明可以不使用這些特定細(xì)節(jié)來實(shí)踐。在其它實(shí)例中,以結(jié)構(gòu)圖的形式展示了眾所周知的結(jié)構(gòu)和裝置以便于描述本發(fā)明。
如在本應(yīng)用中使用的,術(shù)語“組件”和“系統(tǒng)”參考計(jì)算機(jī)相關(guān)實(shí)體,在執(zhí)行中可以是硬件、硬件和軟件的組合、軟件或執(zhí)行中的軟件。例如,組件可以是,但不限于,運(yùn)行在處理器上的進(jìn)程、處理器、對(duì)象、可執(zhí)行、執(zhí)行線程、程序和/或計(jì)算機(jī)。作為說明,運(yùn)行在服務(wù)器上的應(yīng)用程序和該服務(wù)器都可以是組件。一個(gè)或多個(gè)組件可以駐留在進(jìn)程和/或執(zhí)行線程中,并且組件可以在一個(gè)計(jì)算機(jī)上本地化和/或在兩個(gè)或更多計(jì)算機(jī)之間分布。
現(xiàn)在參考圖1,說明了本發(fā)明的系統(tǒng)結(jié)構(gòu)圖。以下討論從系統(tǒng)操作中源和多重目標(biāo)先前已同步的點(diǎn)開始。每一目標(biāo)分別對(duì)其各自的數(shù)據(jù)庫(kù)作了改變,現(xiàn)在重新與源建立通信來請(qǐng)求數(shù)據(jù)庫(kù)同步。
服務(wù)器(或源)100從N個(gè)客戶(或目標(biāo))接收同步請(qǐng)求。源100包括中央處理單元(CPU)102用來處理同步請(qǐng)求并控制所有的源系統(tǒng)操作。CPU 102與源(或主)數(shù)據(jù)庫(kù)104相接口,來儲(chǔ)存多個(gè)目標(biāo)使用的數(shù)據(jù)庫(kù)入口。這樣,源數(shù)據(jù)庫(kù)104,也稱為源復(fù)制品,實(shí)質(zhì)上包含了潛在需要發(fā)行至N個(gè)目標(biāo)的信息。
在從N個(gè)目標(biāo)接收到多重同步請(qǐng)求后,源100選擇第一目標(biāo)106來同步。第一目標(biāo)106包括儲(chǔ)存所有與目標(biāo)106相關(guān)的數(shù)據(jù)庫(kù)入口的第一目標(biāo)數(shù)據(jù)庫(kù)108,包括在最后一次同步之后最近的變化。因此,在第一目標(biāo)數(shù)據(jù)庫(kù)108上儲(chǔ)存了與源100的主數(shù)據(jù)庫(kù)104的數(shù)據(jù)不同的數(shù)據(jù)。
在選擇第一目標(biāo)106之后,源100確定在先前與目標(biāo)數(shù)據(jù)庫(kù)108的同步會(huì)話之后完成的數(shù)據(jù)庫(kù)更新集,以查明源數(shù)據(jù)庫(kù)104和目標(biāo)數(shù)據(jù)庫(kù)108之間的數(shù)據(jù)差異(或變化)。源100包括分區(qū)計(jì)算算法110,該算法生成變化數(shù)據(jù)的分區(qū),分區(qū)僅定義與第一目標(biāo)106相關(guān)的變化。該分區(qū)作為成員資格元數(shù)據(jù)保持在源100上,并指示在先前同步進(jìn)程之后變化的目標(biāo)數(shù)據(jù)庫(kù)108的那些行入口。成員資格元數(shù)據(jù)114儲(chǔ)存在源100上,用于與隨后的剩余的目標(biāo)2...N的同步會(huì)話一起使用。
在第一目標(biāo)通過第一復(fù)制品數(shù)據(jù)112與源100同步之后,第一目標(biāo)106的同步完成。
現(xiàn)在需要通過合并復(fù)制將第一目標(biāo)106的更新數(shù)據(jù)庫(kù)信息傳播至一些或所有等候同步的目標(biāo)2...N。根據(jù)本發(fā)明的一個(gè)方面,隨后的目標(biāo)同步不需要執(zhí)行所有在第一目標(biāo)106的同步中執(zhí)行的計(jì)算操作,而是受益于第一同步保持的成員資格元數(shù)據(jù)114。因此,使用成員資格元數(shù)據(jù)114來生成復(fù)制品用于下載至目標(biāo)2...N。這使源100相比常規(guī)結(jié)構(gòu)大量地節(jié)省了處理時(shí)間,因?yàn)槌R?guī)結(jié)構(gòu)需要為所有隨后的同步重新計(jì)算分區(qū)成員資格。更重要地,由于分區(qū)計(jì)算在實(shí)際更新時(shí)執(zhí)行而不是在同步時(shí)執(zhí)行,其昂貴的成本將攤銷到大量同步會(huì)話中。這一技術(shù)在大量同步會(huì)話相對(duì)源復(fù)制品并發(fā)運(yùn)行的重負(fù)載下仍能伸縮良好。
在操作中,源100選擇具有第二目標(biāo)數(shù)據(jù)庫(kù)118的第二目標(biāo)116來同步。源100獲取與第二目標(biāo)116相關(guān)聯(lián)的過濾標(biāo)準(zhǔn),并根據(jù)第二目標(biāo)116的分區(qū)成員資格精確地確定哪一變化與向第二目標(biāo)116的傳播相關(guān)。
同步進(jìn)程繼續(xù)剩余的N個(gè)目標(biāo),使得源100使用成員資格元數(shù)據(jù)來與具有第N個(gè)數(shù)據(jù)庫(kù)124的第N個(gè)目標(biāo)122同步。獲取、分析第N個(gè)目標(biāo)122的過濾標(biāo)準(zhǔn),并且如果需要的話,將其應(yīng)用到成員資格元數(shù)據(jù)114中來生成變化集126用于下載至第N個(gè)目標(biāo)122。如果確定保持在給定復(fù)制品上的同步元數(shù)據(jù)安全用于清除(如,根據(jù)基于保留的政策,即,不允許在一段給定持續(xù)時(shí)間內(nèi)未同步的復(fù)制品進(jìn)行隨后的同步),相應(yīng)的分區(qū)成員資格元數(shù)據(jù)也確定為安全用于清除。
注意,雖然本描述是在客戶/服務(wù)器的環(huán)境的情況下提供的,但本發(fā)明可應(yīng)用于對(duì)任意需要同步的同質(zhì)數(shù)據(jù)收集。同樣,本發(fā)明可應(yīng)用在點(diǎn)對(duì)點(diǎn)計(jì)算環(huán)境中。例如,當(dāng)有至少兩個(gè)需要與源數(shù)據(jù)收集同步的目標(biāo)數(shù)據(jù)收集時(shí),數(shù)據(jù)收集可以根據(jù)這里描述的新方面來同步。
現(xiàn)在參考圖2,說明了本發(fā)明的復(fù)制進(jìn)程的流程圖。為簡(jiǎn)化解釋的目的,雖然可把方法示為或描述為一系列行動(dòng),但可以認(rèn)為并理解成本發(fā)明不受行動(dòng)順序的限制,因?yàn)楦鶕?jù)本發(fā)明,有些行動(dòng)可能與這里示出并描述的其它行動(dòng)不同順序和/或并發(fā)出現(xiàn)。例如,本領(lǐng)域的技術(shù)人員可以認(rèn)為并理解成方法可以作為選擇作用一系列相互相關(guān)的狀態(tài)或事件來表示,如在狀態(tài)圖表中。而且,可以不需要所有示出的行動(dòng)來實(shí)現(xiàn)符合本發(fā)明的方法。
在200,多個(gè)目標(biāo)1...N請(qǐng)求與源同步。在202,源選擇第一目標(biāo)來同步??梢杂枚喾N方法來確定選擇進(jìn)程,包括但不限于,首先請(qǐng)求同步的目標(biāo),以及使用請(qǐng)求同步的目標(biāo)的優(yōu)先級(jí)方案。一旦選擇了第一目標(biāo),源確定第一目標(biāo)數(shù)據(jù)庫(kù)中的變化行集來建立其當(dāng)前狀態(tài),如204所示。在206,源使用用于檢查的分區(qū)計(jì)算算法確定源數(shù)據(jù)庫(kù)和第一目標(biāo)數(shù)據(jù)庫(kù)之間的差異,來確定哪一變化將要傳播至剩下的目標(biāo)2...N中所選擇的目標(biāo)。在208,分區(qū)計(jì)算算法以一個(gè)或多個(gè)元數(shù)據(jù)表的形式創(chuàng)建第一成員資格元數(shù)據(jù),并在源上儲(chǔ)存成員資格元數(shù)據(jù)。在210,第一分區(qū)復(fù)制品下載至第一目標(biāo)用于更新。一旦完成更新,第一目標(biāo)的同步完成。
在212,源選擇下一用于同步的目標(biāo)。在214,源獲取下一目標(biāo)的過濾器標(biāo)準(zhǔn)來確定同步是否恰恰被請(qǐng)求用于第一目標(biāo)的該特定數(shù)據(jù)集的下一目標(biāo)。如果是的話,在216,源同時(shí)使用過濾器標(biāo)準(zhǔn)和第一成員資格元數(shù)據(jù)來創(chuàng)建第二分區(qū)復(fù)制品用于下一目標(biāo)(或第二目標(biāo))。在218,下載第二分區(qū)復(fù)制品,并且在220,執(zhí)行分區(qū)更新來完成下一目標(biāo)的同步進(jìn)程的這一部分。進(jìn)程循環(huán)回212的輸入來選擇下一目標(biāo)來同步。
進(jìn)程繼續(xù)直至所有請(qǐng)求同步的目標(biāo)接收第一目標(biāo)的變化信息,在這之后,同步跨所有其它目標(biāo)繼續(xù)第二目標(biāo)的改變的數(shù)據(jù),依此類推,直到目標(biāo)N。
現(xiàn)在參考圖3,說明了用于計(jì)算目標(biāo)的成員資格元數(shù)據(jù)的計(jì)算組件使用的元數(shù)據(jù)表300的相互關(guān)系。主要使用了六個(gè)表來捕捉目標(biāo)數(shù)據(jù)庫(kù)中的變化信息。分區(qū)元數(shù)據(jù)表302(表示為PartitionsMetadata)通過三個(gè)其它表來映射當(dāng)前變化元數(shù)據(jù)表306(表示為CurrentChangesPartitionMapping)、過去變化元數(shù)據(jù)表306(表示為PastChangesPartitionMapping)、以及生成分區(qū)元數(shù)據(jù)表308(表示為GenerationPartitionMapping)。GenerationPartitionMapping表308映射至生成元數(shù)據(jù)表310(表示為GenerationMetadata),表310也通過行元數(shù)據(jù)表312(表示為RowMetadata)映射。應(yīng)該理解成可以根據(jù)特定的實(shí)現(xiàn)來使用任何合適數(shù)量的表和/或元數(shù)據(jù)。
使用的用于計(jì)算復(fù)制品上行的分區(qū)成員資格的三個(gè)元數(shù)據(jù)包括相異分區(qū)(使用PartitionsMetadata表302),標(biāo)識(shí)目標(biāo)復(fù)制品的分區(qū);行的當(dāng)前分區(qū)成員資格(使用CurrentChangesPartitionMapping表304) 以及,行的過去分區(qū)成員資格(使用PastChangesPartitionMapping表306)。當(dāng)前和過去成員資格信息允許分區(qū)更新向其它目標(biāo)復(fù)制品的更有效傳播。優(yōu)選保持行先前所屬的分區(qū)的相關(guān)知識(shí),因?yàn)檫@允許“刪除”的傳播。刪除是在目標(biāo)復(fù)制品中不再需要的數(shù)據(jù)(或行)。
PartitionsMetadata表302持續(xù)跟蹤過濾器函數(shù)的有意思的估算。如果目標(biāo)復(fù)制品與源復(fù)制品同步,并且相標(biāo)識(shí)目標(biāo)復(fù)制品的相異分區(qū)當(dāng)前不在分區(qū)表302中,則創(chuàng)建具有“分區(qū)值”的新入口,并分配新partition_id參數(shù)。當(dāng)?shù)谝淮芜x擇新目標(biāo)時(shí),每一入口在PartitionsMetadata表302中采用各自的分區(qū)值登記,并被分配一個(gè)新partition_id。
如果動(dòng)態(tài)過濾器對(duì)Employee(雇員)的表達(dá)式是“當(dāng)TerritoryID=fn_EmployeeTerritory()時(shí)”,則fn_EmployeeTerritory列添加至PartitionsMetadata表302中。當(dāng)對(duì)Employee行作出變化,使用單個(gè)基于集查詢來計(jì)算變化行所屬的所有分區(qū),該查詢使用過濾器表達(dá)式作為聯(lián)接子句將Employee與PartitionsMetadata表302相連接,將fn_EmployeeTerritory()替換為PartitionsMetadata.fn_EmployeeTerritory。
只要每一變化行僅屬于所有partition_id的一個(gè)小子集,或者最好的情況,屬于恰好一個(gè)partition_id的良好分區(qū)數(shù)據(jù)的一個(gè)小子集,即使有大量登記的partition_id,該基于集的查詢的性能也可以伸縮良好。
CurrentChangesPartitionMapping表304跟蹤給定的行的向其相關(guān)分區(qū)的當(dāng)前映射。因此,表304包括該表中的partition_id列,該列為從PartitionsMetadata表302派生的一個(gè)值。CurrentChangesPartitionMapping表304的row_id列包含復(fù)制所使用的給定行的唯一標(biāo)識(shí)符。
PastChangesPartitionMapping表306跟蹤給定行向其可能屬于的任意分區(qū)的任意過去映射。因此,表306包括partition_id列,該列是從分區(qū)表302派生的一個(gè)值。表306的row_id列包含了復(fù)制使用的給定行的唯一標(biāo)識(shí)符。同步標(biāo)記列(synch_anchor列)邏輯上包含行的分區(qū)映射何時(shí)變化的信息。在分區(qū)更新時(shí)捕捉同步標(biāo)記允許同步進(jìn)程將分區(qū)更新從源100僅傳播至從源和目標(biāo)最后一次同步之后尚未接收到這些變化的目標(biāo)。在樣本數(shù)據(jù)中,為簡(jiǎn)化,sync_anchor列將使用UTC時(shí)間(訂正世界時(shí)坐標(biāo))形式的值或者格林威治平均時(shí)間值。
生成分區(qū)表308包括generation_id列,該列是分配給一組變化的同步標(biāo)記。當(dāng)變化從目標(biāo)傳播至源100時(shí),在源100給變化分配新generation_id。由于作為該生成的一部分的行屬于一個(gè)相異分區(qū)P1,GenerationPartitionMapping表308包括partition_id列,用于映射到目標(biāo)的partition_id P1。然而,注意,通常來說,生成可以映射到多于一個(gè)分區(qū)標(biāo)識(shí)符。這與partition_id為特定值“-1”的生成不同。當(dāng)屬于另一相異分區(qū)P2的不同目標(biāo)復(fù)制品與源100同步時(shí),生成映射消除P1生成。partition_id的特殊的-1值表明生成是全局的,因此與所有分區(qū)相關(guān)。
生成表310包括generation_id用于為每一生成分配唯一的生成ID。生成分區(qū)表308包括generation_id,映射該表310,并追蹤哪一生成已傳播至當(dāng)前復(fù)制品,哪一生成代表本地變化。它允許同步進(jìn)程派生需要為給定會(huì)話考慮的相關(guān)生成的列表。
RowMetadata表312在一行接一行的基礎(chǔ)上跟蹤復(fù)制元數(shù)據(jù),并且包含關(guān)于行何時(shí)通過使用邏輯時(shí)鐘來代表時(shí)間而發(fā)生變化的信息。表312也包含了哪一復(fù)制品貢獻(xiàn)給該行的這一版本的信息,以及列的當(dāng)前版本的信息。生成分區(qū)表308和RowMetadata表312都映射到生成表310。
以下是表1,總結(jié)了不同的元數(shù)據(jù)表及其相應(yīng)功能。
表1元數(shù)據(jù)表及總結(jié)


用于變化的有效傳播的生成分區(qū)本發(fā)明的一個(gè)新方面也便于在變化傳播中所使用的最優(yōu)化。合并復(fù)制當(dāng)前使用“生成”的概念來邏輯上將從源傳播至目標(biāo)復(fù)制品的變化分組。GenerationMetadata表310跟蹤哪一生成已傳播到當(dāng)前復(fù)制品,哪一生成代表本地變化。生成分區(qū)也允許同步進(jìn)程派生需要為給定會(huì)話考慮的相關(guān)生成的列表。
當(dāng)在源復(fù)制品上發(fā)生變化時(shí),源為表上的集變化分配一個(gè)生成值,該生成值是一個(gè)邏輯時(shí)鐘實(shí)體。如果從可能被中斷的先前同步會(huì)話,或者通過具有不同源復(fù)制品的同步會(huì)話接收到變化組,分組概念允許目標(biāo)復(fù)制品能夠有效地標(biāo)識(shí)。本質(zhì)上,當(dāng)前不在目標(biāo)復(fù)制品中的生成值的列表反映了與從源向目標(biāo)的傳播需要考慮的相關(guān)的變化。如果目標(biāo)復(fù)制品從源復(fù)制品接收數(shù)據(jù)的一個(gè)子集,如,目標(biāo)復(fù)制品,則滿足復(fù)制品的分區(qū)標(biāo)準(zhǔn)的變化是傳播至目標(biāo)的唯一變化。
然而,合并復(fù)制的當(dāng)前版本仍需要將源復(fù)制品上的現(xiàn)有的所有生成的信息傳播到目標(biāo)復(fù)制品,而不管這些生成包含的變化是否與目標(biāo)復(fù)制品相關(guān)。這是由于沒有元數(shù)據(jù)跟蹤作為源復(fù)制品處生成的一部分的變化是否與有意義的分區(qū)相關(guān)。
標(biāo)識(shí)行的分區(qū)成員資格的分區(qū)組允許從源向目標(biāo)復(fù)制品的生成傳播的效率。由于變化集已映射到分區(qū)標(biāo)識(shí)符,作為行的分組的生成也可以映射到分區(qū)標(biāo)識(shí)符。因此,當(dāng)目標(biāo)復(fù)制品對(duì)在源復(fù)制品上可用的特定分區(qū)感興趣時(shí),包含與目標(biāo)復(fù)制品不相關(guān)的分區(qū)中的變化的生成值能夠快速地在計(jì)算相關(guān)變化集中消除。除提供計(jì)算效率之外,該算法也具有更好的網(wǎng)絡(luò)性能特征,因?yàn)橹挥信c目標(biāo)分區(qū)相關(guān)的生成在網(wǎng)絡(luò)上傳播。
現(xiàn)在參考圖4,說明了使用過濾和擴(kuò)充的樣本更新模式。該示例的前提是重定位的雇員。更新進(jìn)程包括將重定位的雇員的用戶數(shù)據(jù)重新分配給另一雇員。在該示例中,客戶信息至少包括用戶信息、用戶訂單信息以及用戶訂單細(xì)節(jié)。分區(qū)表是Employees分區(qū)表400,采用EmployeeID參數(shù)唯一地標(biāo)識(shí)了重定位的雇員。在該示例中,表400至少包括三列FirstName列、LastName列以及TerritoryID列。如果Employees分區(qū)的動(dòng)態(tài)聯(lián)合過濾器表達(dá)式為“當(dāng)TerritoryID=fn_EmployeeTerritory()時(shí)”,則fn_EmployeeTerritory列被添加到雇員分區(qū)元數(shù)據(jù)表400。
當(dāng)新分區(qū)第一次達(dá)到同步時(shí),新分區(qū)使用其各自的分區(qū)值在表400中注冊(cè)入口,并被分配一個(gè)新partition_id。當(dāng)對(duì)Employees表400的行的值作出變化,使用單個(gè)基于集的查詢來計(jì)算變化行所屬的所有分區(qū),該查詢使用過濾器表達(dá)式作為聯(lián)接子句來將雇員和雇員分區(qū)元數(shù)據(jù)表400相聯(lián)接。然后,函數(shù)調(diào)用fn_EmployeeTerritory()由PartitionsMetadata.fn_EmployeeTerritory替換。
例如,如果Employees分區(qū)表400中的TerritoryID列被估算為美國(guó)的51個(gè)不同地理區(qū)域,Employees分區(qū)表400將為這些51個(gè)不同值的每一個(gè)分配一個(gè)唯一的分區(qū)身份。如果目標(biāo)與源100同步,并且標(biāo)識(shí)目標(biāo)復(fù)制品的相異分區(qū)不在Employees表400中,則使用相異的“分區(qū)值”創(chuàng)建一個(gè)新入口并被分配一個(gè)新partition_id。
下表(表2)是Employees PartitionsMetadata表400的一個(gè)樣本,沒有雇員的姓和名的列。最后一列提供了樣本數(shù)據(jù)的解釋,但不是該模式所必須的部分。
表2樣本PartitionsMetadata表

只有每一變化行僅屬于所有partition_id的一個(gè)小子集,或者最好的情況,屬于恰好一個(gè)partition_id的良好分區(qū)的數(shù)據(jù)的一個(gè)小子集,即使有大量注冊(cè)的partition_id,該基于集的查詢的性能仍能夠伸縮良好。
如上所述,所有客戶信息都需要和雇員一起傳播。采用聯(lián)合過濾器,通過定義將在同步進(jìn)程中使用的跨表關(guān)系來方便這一進(jìn)程。在樣本模式中,Employees表400中行的分區(qū)成員資格采用Employees表400上的“行過濾器”定義來預(yù)測(cè)。Customers表404中行的分區(qū)成員資格基于Employees表400中采用Employees和Customers之間的聯(lián)合過濾器定義402預(yù)測(cè)的行的成員資格。Orders表408中行的成員資格基于Customers表404中采用Customers和Orders之間的聯(lián)合過濾器定義預(yù)言的行的成員資格。同樣,Order Details表412中行的成員資格基于Orders表408中采用Orders和OrderDetails之間的聯(lián)合過濾器定義預(yù)言的行的成員資格。
因此,第一聯(lián)合過濾器402定義了Employees表400和Customers表404之間的跨表關(guān)系(Customers.EmployeeID=Employees.EmployeeID)。Customers表404與唯一標(biāo)識(shí)用戶的CustomerID相關(guān)聯(lián),并至少包括映射到Employees表400的EmployeeID列,以及其它與用戶帳號(hào)信息,如姓名、地址、郵政編碼以及聯(lián)系電話和信息相關(guān)的列。第二聯(lián)合過濾器406定義了Customers表404和Orders表408之間的表關(guān)系(Orders.CustomerID=Customers.CustomerID)。Orders表408與唯一標(biāo)識(shí)Customers表404的訂單信息的OrderID相關(guān)聯(lián),并至少包括映射到Customers表404的CustomerID列。表408包括其它與用戶訂單,如運(yùn)送信息、稅率以及貨運(yùn)收費(fèi)相關(guān)的信息列。
第三聯(lián)合過濾器410定義了Orders表408和Order Details表412之間的表關(guān)系(OrderDetails.OrderID=Orders.OrderID)。Order Details表412與唯一標(biāo)識(shí)Orders表408的訂單細(xì)節(jié)信息的OrderDetailID相關(guān)聯(lián),并至少包括映射到Orders表408的OrderID列。表412包括將Order Details表412映射到產(chǎn)品表416的ProductID列。表412也包括提供所定購(gòu)的產(chǎn)品的信息的Quantity列和UnitPrice列。因此,OrderDetails表412需要來自Products表416的UnitPrice信息。
第四聯(lián)合過濾器416定義了Order Details表412和Products表416之間的表關(guān)系(OrderDetails.ProductID=Products.ProductID)。Products表416與唯一的ProductID相關(guān)聯(lián),并進(jìn)一步包括ProductName和UnitPrice列。
因此,擴(kuò)充算法與聯(lián)合過濾器一起便于所有與客戶購(gòu)買的產(chǎn)品、購(gòu)買產(chǎn)品的訂單細(xì)節(jié)、包括細(xì)節(jié)和特定產(chǎn)品的訂單以及定購(gòu)產(chǎn)品的用戶相關(guān)的信息連同EmployeeID一起的傳播。
使用以下在圖5中描述的樣本數(shù)據(jù),在Customers表404上的分區(qū)更新導(dǎo)致Customers行的過去和當(dāng)前映射被重新計(jì)算。然后,根據(jù)Customers表404和Orders表408之間的聯(lián)合過濾器406,父分區(qū)成員資格已變化的所有Orders行將被重新估算各自的過去和當(dāng)前分區(qū)映射。根據(jù)Orders表408和OrderDetails表412之間的聯(lián)合過濾器410,父分區(qū)成員資格已變化的所有Order Details行都被重新估算各自的過去和當(dāng)前分區(qū)映射。最后,根據(jù)Order Details表412和Products表416之間的聯(lián)合過濾器414,父分區(qū)成員資格已變化的所有Products行都被重新估算各自的過去和當(dāng)前分區(qū)映射。然后,該算法終止,因?yàn)镻roducts表416沒有任何子行。當(dāng)擴(kuò)充算法終止,元數(shù)據(jù)表精確地反映了行的分區(qū)成員資格。在行從源復(fù)制品傳播到目標(biāo)復(fù)制品之前不需要進(jìn)一步的分區(qū)計(jì)算。
為反映這一算法,為子表生成的數(shù)據(jù)庫(kù)景象參考為其直接父表生成的景象。在樣本模式中,Customers景象參考Employees景象。同樣,Orders景象參考Customers景象。同樣,Order Details景象參考Orders景象。頂層父景象,在本示例中為Employees表400,使用PartitionsMetadata表302來估算行的分區(qū)成員資格,進(jìn)一步使用樣本中過濾列(TerritoryID)的值。
為說明目的,為樣本模式使用以下景象定義。
Employees表的景象定義(view_partition_Employees)從Employees,PartitionsMetadata中,在PartitionsMetadata.fn EmployeeTerritory=Employees.TerritoryID時(shí),選擇[Employees].*,partition_id=PartitionsMetadata].[partition_id]。
Customers表的景象定義(view_partition_Customers)從Customers.[view_partition_Employees]Employees中,在Customers.EmployeeID=Employees.EmployeeID時(shí),選擇[Customers].*,partition_id=[Employees].[partition_id]。
Orders表的景象定義(view_partition_Orders)從[Orders],[view_partition_Customers][Customers]中,在(Orders.CustomerID=Customers.CustomerID)時(shí),選擇[Orders].*,partition_id=[Customers].partition_id。
Order_Details表的景象定義(view_partition_OrderDetails)從[OrderDetails],[view_partition_Orders][Orders]中,在(Order_Details.OrderID=Orders.OrderID)時(shí),選擇[Order_Details].*,partition_id=[Orders].partition_id。
子行的分區(qū)成員資格由通過變化行集的景象選擇變化行集來確定。所有從“之前”值計(jì)算所得的過去分區(qū)映射保持在PastChangesPartitonMapping表306中,所有當(dāng)前分區(qū)映射保持在CurrentChangesPartitionMapping表304中。
下表(表3)是CurrentChangesPartitionMapping表304的樣本,反映了作為同步更新的一部分的變化,雇員Joe從CA地域遷移到WA地域。最后一列僅作解釋作用,并非本模式所必須的部分。
表3 CurrentChangesPartitionMapping表的樣本

以下是表4,為PastChangesPartitionMapping表306的樣本,表示Joe先前分配給CA地域。最后一行提供了樣本數(shù)據(jù)的解釋,但并非本模式的必須部分。
表4 PastChangesPartitionMapping表的樣本

現(xiàn)在參考圖5,說明了用戶數(shù)據(jù)從一個(gè)雇員重新分配到另一個(gè)雇員的示例分區(qū)更新。對(duì)“Joe”的EmployeeID的現(xiàn)有例示的表關(guān)系如下。Employee1表500描述了Employee1行,該行具有表示“Joe”的EmployeeID列,以及具有將Employee1表500連接回Employees PartitionsMetadata表400的“WA”的入口的TerritoryID列。Customer1表502,作為Employee1表500的子表,描述了Customer1行,該行具有“Alfred”的CustomerID列入口,以及將Customer1表502連接回Employee1表500的EmployeeID入口“Joe”。
Customer1表502有三個(gè)子實(shí)體第一Order_1實(shí)體504、第二Order_2實(shí)體506以及第三Order_3實(shí)體508。Order_1實(shí)體504描述了Order_1行,該行含有具有“1”入口的OrderID列,以及具有將實(shí)體504連接回父Customer1表502的“Alfred”入口的CustomerID列。Order_2實(shí)體506描述了Order_2行,該行含有具有“2”入口的OrderID列,以及具有將實(shí)體506連接回父Customer1表502的“Alfred”入口的CustomerID列。Order_3實(shí)體508描述了Order_3行,該行含有具有入口“3”的OrderID列,以及具有將表508連接回父Customer1表502的“Alfred”入口的CustomerID列。
第一Order_1實(shí)體有四個(gè)子OrderDetail實(shí)體,定義了特定OrderID=1的訂單細(xì)節(jié)。OrderDetail1實(shí)體510描述了OrderDetail1行,該行含有具有將實(shí)體510連接回父實(shí)體504的“1”入口的OrderID列,以及其它未示出的列細(xì)節(jié)。OrderDetail2實(shí)體512描述了OrderDetail2行,該行含有具有將實(shí)體512連接回父實(shí)體504的入口“1”的OrderID列,以及其它未示出的列細(xì)節(jié)。OrderDetail3實(shí)體514描述了OrderDetail3行,該行含有具有將實(shí)體514連接回父實(shí)體504的“1”入口的OrderID列,以及其它未示出的列細(xì)節(jié)。OrderDetail4實(shí)體516描述了OrderDetail4行,該行含有具有將實(shí)體516連接回父實(shí)體504的“1”入口的OrderID列,以及其它未示出的列細(xì)節(jié)。
Order_2實(shí)體506有一個(gè)子實(shí)體,OrderDetail5實(shí)體518,描述了OrderDetail5行,該行含有具有將實(shí)體518連接回父實(shí)體506的“2”入口的OrderID列,以及其它未示出的列細(xì)節(jié)。
Order_3實(shí)體508有兩個(gè)子實(shí)體,OrderDetail6實(shí)體520和OrderDetail7實(shí)體522。OrderDetail6實(shí)體520描述了OrderDetail6行,該行含有具有將實(shí)體520連接回父實(shí)體508的“3”入口的OrderID列,以及其它未示出的列細(xì)節(jié)。OrderDetail7實(shí)體522描述了OrderDetail7行,該行含有具有將實(shí)體522連接回父實(shí)體508的“3”入口的OrderID列,以及其它未示出的列細(xì)節(jié)。
Customer1表502中Customer1行的EmployeeID列將從“Joe”更新為“Mary”。Employee2表524描述了Employee2行,該行含有具有“Mary”入口的列,以及具有“CA”入口的TerritoryID列。該更新本質(zhì)上將Customer 1行分區(qū)成員資格從“Joe”變?yōu)椤癕ary”。因此,Order行、Order_1、Order_2和Order_3的分區(qū)成員資格也從“Joe”變?yōu)椤癕ary”。同樣,OrderDetails實(shí)體510、512、514、516、518、520和522中相應(yīng)的OrderDetails行現(xiàn)在也屬于不同的分區(qū),即,“Mary”。為將行的分區(qū)成員資格從父實(shí)體傳播到子實(shí)體,執(zhí)行擴(kuò)充進(jìn)程。
復(fù)制進(jìn)程——變化跟蹤和變化枚舉受影響的復(fù)制進(jìn)程的兩個(gè)主要階段牽涉變化跟蹤和變化枚舉。當(dāng)在用戶數(shù)據(jù)庫(kù)中出現(xiàn)數(shù)據(jù)變化時(shí),用戶數(shù)據(jù)庫(kù)中的變化跟蹤機(jī)制跟蹤復(fù)制元數(shù)據(jù),該元數(shù)據(jù)隨后允許這些變化在后面的一個(gè)時(shí)間點(diǎn)上與其它復(fù)制品同步。變化枚舉是同步進(jìn)程的一個(gè)階段,它枚舉了從源和目標(biāo)之間的先前同步以來該復(fù)制品中出現(xiàn)的變化。
復(fù)制進(jìn)程的變化調(diào)和和變化應(yīng)用階段在任何重要的方式中都不受影響。
現(xiàn)在描述當(dāng)行被插入、更新或刪除時(shí)關(guān)于對(duì)復(fù)制元數(shù)據(jù)的修改的變化跟蹤機(jī)制。當(dāng)行被插入時(shí),估算該行的當(dāng)前分區(qū)成員資格并將該信息保持在CurrentChangesPartitionMapping表304中。在已知行的子行已存在的極少情況下,新行的插入會(huì)造成子行的分區(qū)成員資格使用擴(kuò)充進(jìn)程也被估算。
當(dāng)使用非過濾器列更新來更新行時(shí),如果在元數(shù)據(jù)表中沒有該給定行的元數(shù)據(jù),則估算該行的當(dāng)前分區(qū)成員資格,并且將該信息保持在CurrentChangesPartitionMapping表304中。如果元數(shù)據(jù)已存在,則不估算分區(qū)成員資格,因?yàn)槟潜硎痉謪^(qū)成員資格之前已估算過。
當(dāng)使用過濾的列更新來更新行時(shí),在更新之前使用變化跟蹤中可用的“之前”值估算該行過去所屬的分區(qū)。由于子行的分區(qū)成員資格受父行的分區(qū)成員資格影響,使用擴(kuò)充進(jìn)程來為子行估算過去分區(qū)映射。所有的過去分區(qū)映射儲(chǔ)存在PastChangesPartitionMapping表306中。另外,分區(qū)更新出現(xiàn)的邏輯時(shí)間記錄進(jìn)過去變化表306中的同步標(biāo)記列。這允許同步進(jìn)程抑止分區(qū)更新傳播至在之前同步會(huì)話中或者通過與不同源復(fù)制品同步已看見該變化的復(fù)制品。注意,估算過去分區(qū)映射本質(zhì)上清除了CurrentChangesPartitionMapping表304中的任何入口,因?yàn)檫@些入口由于分區(qū)更新已變?yōu)闊o效。
當(dāng)通過過濾的列更新來更新行時(shí),在更新之后使用變化跟蹤中可用的“之后”值估算該行當(dāng)前所屬的分區(qū)。由于子行的分區(qū)成員資格受父行的分區(qū)成員資格影響,使用擴(kuò)充進(jìn)程來為子行估算當(dāng)前分區(qū)映射。所有當(dāng)前分區(qū)映射儲(chǔ)存在CurrentChangesPartitionMapping表304中。
當(dāng)進(jìn)行刪除時(shí),使用變化跟蹤中可用的“之前”值來估算刪除前該行先前所屬的分區(qū)。由于子行的分區(qū)成員資格受父行的分區(qū)成員資格影響,使用擴(kuò)充進(jìn)程來為子行估算過去分區(qū)映射。所有過去分區(qū)映射儲(chǔ)存在PastChangesPartitionMapping表306中。另外,分區(qū)更新出現(xiàn)的邏輯時(shí)間記錄進(jìn)表306的同步標(biāo)記列中。這避免了同步進(jìn)程冗余地將分區(qū)更新傳播到之前同步會(huì)話中已看見該變化的復(fù)制品。由于在刪除之后分區(qū)中不存在該行及其子行,因此不需要在CurrentChangesPartitionMapping表304中創(chuàng)建任何入口。注意,估算過去分區(qū)映射本質(zhì)上清除了CurrentChangesPartitionMapping表304中的任何入口,因?yàn)檫@些入口由于行刪除進(jìn)程已變?yōu)闊o效。
分區(qū)更新需要變化跟蹤機(jī)制來更新元數(shù)據(jù),使得該更新以有效的方式傳播到目標(biāo)復(fù)制品。關(guān)鍵方面是當(dāng)行的分區(qū)成員資格改變時(shí),行的partition_id必須被更新,并且任何分區(qū)成員資格因父行的更新而改變的子行必須重新估算其partition_id。使用擴(kuò)充進(jìn)程來捕捉該信息,該擴(kuò)充進(jìn)程在這里提供的示例中被使用。
變化枚舉機(jī)制使用分區(qū)成員資格元數(shù)據(jù)來有效地將變化從源復(fù)制品傳播到目標(biāo)復(fù)制品。由于變化跟蹤機(jī)制已估算了分區(qū)并執(zhí)行了擴(kuò)充,很大程度上簡(jiǎn)化了運(yùn)行時(shí)刻的變化枚舉的復(fù)雜性。
刪除和分區(qū)更新造成具有“過去分區(qū)映射入口”的變化集。通過從PastChangesPartitionMapping表306中選擇其同步標(biāo)記比與會(huì)話協(xié)商的同步標(biāo)記更新近,并且partition_id與目標(biāo)復(fù)制品的partition_id相匹配的行來枚舉這些變化集。這些行隨后將作為刪除傳播到目標(biāo)復(fù)制品。
分區(qū)和非分區(qū)的插入和更新造成具有“當(dāng)前分區(qū)映射入口”的變化集。通過從RowMetadata表312中選擇其同步標(biāo)記比與會(huì)話協(xié)商同步標(biāo)記更新近,并且在CurrentChangesPartitionMapping表304中具有partition_id與目標(biāo)復(fù)制品partition_id相匹配的入口的行來枚舉這些變化集。這些行作為更新傳播至目標(biāo)復(fù)制品。
一旦枚舉了已知分區(qū)的變化,然后通過使用現(xiàn)有技術(shù)的沖突檢測(cè)和分解機(jī)制來傳播這些變化。同樣,一旦枚舉了已知分區(qū)的變化,并且沖突被檢測(cè)并分解,然后通過使用現(xiàn)有技術(shù)的變化應(yīng)用機(jī)制傳播這些變化。
生成分區(qū)如在源復(fù)制品上維護(hù)的行映射到分區(qū)允許對(duì)將要在源和目標(biāo)復(fù)制品之間傳播的相關(guān)生成的列表的有效計(jì)算。例如,GenerationPartitionMapping表308包含generation_id列,該列是分配給一組生成的同步標(biāo)記。當(dāng)變化從目標(biāo)復(fù)制品傳播到源復(fù)制品時(shí),在源復(fù)制品上對(duì)變化分配新的generation_id。由于作為該生成的一部分的行屬于相異分區(qū)P1,該生成映射到目標(biāo)的partition_idP1。當(dāng)屬于另一相異分區(qū)P2的不同目標(biāo)復(fù)制品與源復(fù)制品同步時(shí),生成映射消除P1生成。partition_id的一個(gè)特殊值-1表明該生成是全局的,因此與所有分區(qū)相關(guān)。
以下的表5是GenerationPartitionMapping表308的樣本。最后一列提供了樣本數(shù)據(jù)的解釋,并非本模式需要的部分。
表5GenerationPartitionMapping表的樣本

生成的分區(qū)是建立在本發(fā)明的分區(qū)分組方面上的最優(yōu)化,并提供了三個(gè)好處不相關(guān)變化的有效消除;即使許多目標(biāo)復(fù)制品已與源復(fù)制品同步,同步會(huì)話的可預(yù)言持續(xù)時(shí)間;以及因生成傳播而增強(qiáng)的網(wǎng)絡(luò)性能。
在源復(fù)制品與許多目標(biāo)復(fù)制品同步的拓?fù)渲校恳荒繕?biāo)復(fù)制品具有其相異分區(qū),生成分區(qū)使同步進(jìn)程能夠有效地消除不相關(guān)變化。例如,考慮一種拓?fù)?,其中,一個(gè)源復(fù)制品向目標(biāo)復(fù)制品提供數(shù)據(jù)的相異子集,每一子集包含對(duì)一個(gè)銷售人員特定的銷售信息。如果假設(shè)最初,1,000個(gè)目標(biāo)復(fù)制品傳播10,000個(gè)變化至源復(fù)制品,然后該10,000個(gè)變化放入源復(fù)制品上的100個(gè)相異生成中,當(dāng)所有1,000個(gè)目標(biāo)復(fù)制品將其變化傳播到源復(fù)制品時(shí),總數(shù)為1,000×10,000,或者說10,000,000個(gè)變化放入源復(fù)制品的100,000個(gè)生成中。結(jié)果,GenerationPartitionMapping表308將有100個(gè)生成集的100,000個(gè)入口,每一入口都映射到單個(gè)分區(qū)。
當(dāng)相異partition_id=P1001的第一目標(biāo)復(fù)制品與源復(fù)制品同步時(shí),由于所有生成映射到與分區(qū)P1-P1000相對(duì)應(yīng)的分區(qū),所有100,000個(gè)生成(因此有10,000,000個(gè)變化)將與partition_id=P1001的第一目標(biāo)復(fù)制品不相關(guān)。另一方面,如果partition_id=P500的第二目標(biāo)復(fù)制品與源復(fù)制品同步,同步將有效地枚舉恰好100個(gè)與第二目標(biāo)復(fù)制品(partition_id=P500)相關(guān)的生成,并且因此傳播恰好100,000個(gè)變化至第二目標(biāo)復(fù)制品。
生成分區(qū)最優(yōu)化的另一優(yōu)點(diǎn)是,由于它能夠控制相對(duì)于與該分區(qū)相關(guān)的變化數(shù)的目標(biāo)復(fù)制品檢查的同步元數(shù)據(jù)的量,因此源復(fù)制品和目標(biāo)復(fù)制品之間的同步會(huì)話的持續(xù)時(shí)間是可預(yù)測(cè)的。作為示例,假設(shè)partition_id=P500的目標(biāo)復(fù)制品很長(zhǎng)時(shí)間未與源復(fù)制品同步。在現(xiàn)有的合并復(fù)制的版本中,當(dāng)該目標(biāo)復(fù)制品最終與源復(fù)制品同步時(shí),將對(duì)其進(jìn)行處罰,因?yàn)樗鼘⒈仨毭杜e已積累在源復(fù)制品上的所有生成。也就是說,如果例如,1,000個(gè)目標(biāo)復(fù)制品每個(gè)傳播100個(gè)生成,該相關(guān)和不相關(guān)生成集總數(shù)為100,000個(gè)生成,這是重大的。一旦考慮100,000個(gè)生成,“每一同步會(huì)話分區(qū)計(jì)算”算法將消除不相關(guān)的變化,僅傳播相關(guān)變化到目標(biāo)復(fù)制品。
考慮一種生成被分區(qū)進(jìn)入相關(guān)分區(qū)標(biāo)識(shí)符的情況。根據(jù)本發(fā)明的方面,與目標(biāo)復(fù)制品(如partition_id=P500)的同步會(huì)話將不會(huì)被處罰,因?yàn)樗軌蛄⒓礃?biāo)識(shí)相關(guān)生成。對(duì)生成分區(qū)的網(wǎng)絡(luò)特征的影響是重大的,因?yàn)楸苊饬瞬幌嚓P(guān)生成向目標(biāo)復(fù)制品的傳播。繼續(xù)該示例,這相當(dāng)于節(jié)省了100,000萬減100,或者說99,900個(gè)生成(不需要向目標(biāo)復(fù)制品傳播的生成)。無論何時(shí)在源復(fù)制品上做出本地變化,即使該變化僅與單個(gè)分區(qū)或分區(qū)集相關(guān),可以更優(yōu)選并更有效地將這些本地變化作為全局生成來傳播?;谒那疤崾窃磸?fù)制品的變化與實(shí)際上所有目標(biāo)復(fù)制品相關(guān),而目標(biāo)復(fù)制品的變化僅與共享同一partition_id的目標(biāo)復(fù)制品相關(guān)。
應(yīng)理解成本發(fā)明的方面具有其它應(yīng)用。例如,在可由大量客戶用戶訪問的服務(wù)器集群中,對(duì)第一服務(wù)器的特定用戶出現(xiàn)的分區(qū)變化能夠用來確定該用戶是否應(yīng)該與第一服務(wù)器分離并且與第二服務(wù)器重新關(guān)聯(lián)。這一“關(guān)聯(lián)”進(jìn)程可以根據(jù)預(yù)定標(biāo)準(zhǔn)自動(dòng)執(zhí)行,使得一旦跟蹤到對(duì)數(shù)據(jù)庫(kù)信息的特定字段作出變化,能夠自動(dòng)觸發(fā)關(guān)聯(lián)進(jìn)程。
還應(yīng)理解成盡管本發(fā)明是在數(shù)據(jù)庫(kù)變化的環(huán)境下描述的,它并不限于此,而已應(yīng)用于需要跨全異源的數(shù)據(jù)同步的任何環(huán)境。例如,本發(fā)明應(yīng)用于目錄服務(wù),在該服務(wù)中,每一用戶的姓名、慨貌信息、用戶帳戶、網(wǎng)絡(luò)許可以及機(jī)器地址和網(wǎng)絡(luò)上的資源得以協(xié)調(diào)。
現(xiàn)在參考圖6,說明了可操作執(zhí)行所揭示的結(jié)構(gòu)的計(jì)算機(jī)的結(jié)構(gòu)圖。為向本發(fā)明的各種方面提供附加的環(huán)境,圖6及以下討論將提供合適計(jì)算環(huán)境600的簡(jiǎn)要綜合描述,在該計(jì)算環(huán)境中可以實(shí)現(xiàn)本發(fā)明的各種方面。盡管上文在運(yùn)行于一個(gè)或多個(gè)計(jì)算機(jī)上的計(jì)算機(jī)可執(zhí)行指令的一般環(huán)境下描述本發(fā)明,但本領(lǐng)域的技術(shù)人員認(rèn)識(shí)到,本發(fā)明也可以連同其它程序模塊和/或硬件和軟件的組合一起實(shí)現(xiàn)。通常來說,程序模塊包括完成特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等等。而且,本領(lǐng)域的技術(shù)人員應(yīng)理解成本發(fā)明方法可以使用其它計(jì)算機(jī)系統(tǒng)配置來實(shí)踐,包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、小型機(jī)、大型機(jī)、以及個(gè)人計(jì)算機(jī)、手持式計(jì)算裝置、基于多處理器或可編程消費(fèi)電子產(chǎn)品等等,每一都可以操作上與一個(gè)或多個(gè)關(guān)聯(lián)裝置相耦合。本發(fā)明的例示方面也可以在分布式計(jì)算環(huán)境中實(shí)踐,在該環(huán)境中,特定的任務(wù)由通過通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理裝置完成。在分布式計(jì)算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程內(nèi)存存儲(chǔ)裝置中。
再參考圖6,實(shí)現(xiàn)本發(fā)明的各種方面的示例性環(huán)境600包括計(jì)算機(jī)602,該計(jì)算機(jī)602包括處理單元604,系統(tǒng)內(nèi)存606以及系統(tǒng)總線608。系統(tǒng)總線608將系統(tǒng)組件,包括但不限于系統(tǒng)內(nèi)存606,耦合至處理單元604。處理單元604可以是任意各種商業(yè)上可用處理器。也可以采用雙微處理器和其它多處理器結(jié)構(gòu)作為處理單元604。
系統(tǒng)總線608可以是幾種類型總線結(jié)構(gòu)的任意一種,包括內(nèi)存總線或內(nèi)存控制器、使用各種商業(yè)可用總線結(jié)構(gòu)的外圍總線和本地總線。系統(tǒng)內(nèi)存606包括只讀內(nèi)存(ROM)610和隨機(jī)存儲(chǔ)內(nèi)存(RAM)612?;据斎?輸出系統(tǒng)(BIOS)儲(chǔ)存在ROM610中,包括幫助如在啟動(dòng)時(shí)在計(jì)算機(jī)602內(nèi)元件之間傳輸信息的基本例程。
計(jì)算機(jī)602還包括硬盤驅(qū)動(dòng)器614、磁盤驅(qū)動(dòng)器616(如從可移動(dòng)硬盤618讀出或?qū)懭?以及光盤驅(qū)動(dòng)器620,(如讀CD-ROM盤622或從其它光媒介讀出或?qū)懭?。硬盤驅(qū)動(dòng)器614、磁盤驅(qū)動(dòng)器616和光盤驅(qū)動(dòng)器620可以分別通過硬盤驅(qū)動(dòng)器接口624、磁盤驅(qū)動(dòng)器接口626和光盤驅(qū)動(dòng)器接口628連接至系統(tǒng)總線608。驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)可讀媒介提供數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)可讀指令等等的非易失存儲(chǔ)。對(duì)于計(jì)算機(jī)602,驅(qū)動(dòng)器和媒介以合適的數(shù)據(jù)格式容納廣播編程的存儲(chǔ)。盡管上述對(duì)計(jì)算機(jī)可讀媒介的描述是硬盤、可移動(dòng)磁盤和CD,本領(lǐng)域的技術(shù)人員應(yīng)理解成,計(jì)算機(jī)可讀的其它類型的媒介,如壓縮驅(qū)動(dòng)器、盒式磁帶、閃存卡、數(shù)字視頻盤、盒式磁盤等等,也可以在示例性操作環(huán)境中使用,并且更進(jìn)一步,任何這類媒介可以包含計(jì)算機(jī)可讀指令來執(zhí)行本發(fā)明的方法。
一些程序模塊,包括操作系統(tǒng)630、一個(gè)或多個(gè)應(yīng)用程序632、其它程序模塊634和程序數(shù)據(jù)636,可以存儲(chǔ)在驅(qū)動(dòng)器和RAM612中。應(yīng)理解成本發(fā)明可以使用各種商業(yè)可用操作系統(tǒng)或操作系統(tǒng)的組合來實(shí)現(xiàn)。
用戶可以通過鍵盤和指向設(shè)備,如鼠標(biāo)640向計(jì)算機(jī)602輸入命令和信息。其它輸入設(shè)備(未示出)可以包括麥克風(fēng)、IR遠(yuǎn)程控制、操縱桿、游戲板、圓盤式衛(wèi)星電視天線、掃描儀等等。這些和其它輸入設(shè)備經(jīng)常通過與系統(tǒng)總線608耦合的串行端口接口642連接至處理單元604,也可以通過其它接口連接,如并行端口、游戲端口、通用串行總線(“USB”)、IR接口等等。監(jiān)視器644和其它類型的顯示設(shè)備也通過接口,如視頻適配器646,連接至系統(tǒng)總線608。除監(jiān)視器644之外,計(jì)算機(jī)通常包括其它外圍輸出設(shè)備(未示出),如揚(yáng)聲器、打印機(jī)等等。
計(jì)算機(jī)602可以在建立網(wǎng)絡(luò)的環(huán)境中操作,該環(huán)境使用邏輯連接至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)648。遠(yuǎn)程計(jì)算機(jī)648可以是工作站、服務(wù)器計(jì)算機(jī)、路由器、個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、基于微處理器的娛樂器具、對(duì)等裝置或其它普通網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有所述與計(jì)算機(jī)602有關(guān)的元件,盡管為簡(jiǎn)要的目的,僅示出了內(nèi)存存儲(chǔ)設(shè)備650。所述的邏輯連接包括LAN 652和WAN 654。這類常見的網(wǎng)絡(luò)環(huán)境有辦公室、企業(yè)范圍計(jì)算機(jī)環(huán)境、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)602通過網(wǎng)絡(luò)接口或適配器656連接至本地網(wǎng)絡(luò)652。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)602通常包括調(diào)制解調(diào)器658,或連接至LAN上的通信服務(wù)器,或具有其它在WAN 654,如因特網(wǎng)上建立通信的裝置。調(diào)制解調(diào)器658可以是內(nèi)置的或外置的,通過串行端口接口642連接至系統(tǒng)總線608。在建立網(wǎng)絡(luò)的環(huán)境中,所述與計(jì)算機(jī)602或其部分有關(guān)的程序模塊可以儲(chǔ)存在遠(yuǎn)程內(nèi)存存儲(chǔ)裝置650中。應(yīng)理解成這里示出的網(wǎng)絡(luò)連接是示例性的,也可以采用在計(jì)算機(jī)之間建立通信鏈路的其它裝置。
現(xiàn)在參考圖7,說明了根據(jù)本發(fā)明的樣本計(jì)算環(huán)境700的示意結(jié)構(gòu)圖。系統(tǒng)700包括一個(gè)或多個(gè)客戶702??蛻?02可以是硬件和/或軟件(如線程、進(jìn)程、計(jì)算裝置)。例如,客戶702可以采用本發(fā)明來容納小文本文件(cookie)和/或關(guān)聯(lián)的前后關(guān)系信息。系統(tǒng)700也包括一個(gè)或多個(gè)服務(wù)器704。服務(wù)器704也可以是硬件和/或軟件(如線程、進(jìn)程、計(jì)算裝置)。例如,服務(wù)器704可以采用本發(fā)明來容納線程來執(zhí)行變換??蛻?02和服務(wù)器704之間的一個(gè)可能的通信可以是數(shù)據(jù)包的形式,適合在兩個(gè)或更多計(jì)算機(jī)進(jìn)程間發(fā)送。例如,數(shù)據(jù)包可以包括小文本文件和/或關(guān)聯(lián)的前后關(guān)系信息。系統(tǒng)700包括通信主機(jī)706,可以采用該主機(jī)以便于客戶702和服務(wù)器704之間的通信??蛻?02可操作地連接到一個(gè)或多個(gè)客戶數(shù)據(jù)存儲(chǔ)708,客戶數(shù)據(jù)存儲(chǔ)可以用來存儲(chǔ)對(duì)客戶702本地的信息(如小文本文件和/或關(guān)聯(lián)的前后關(guān)系信息)。同樣,服務(wù)器704可操作地連接至一個(gè)或多個(gè)服務(wù)器數(shù)據(jù)存儲(chǔ)710,服務(wù)器數(shù)據(jù)存儲(chǔ)可以用來儲(chǔ)存對(duì)服務(wù)器704本地的信息。
以上所描述的包括本發(fā)明的示例。當(dāng)然,為描述本發(fā)明,不可能描述每一可想到的組件或方法的組合,但是本領(lǐng)域的技術(shù)人員認(rèn)識(shí)到本發(fā)明的許多另外組合和改變都是可能的。因此,本發(fā)明旨在包含所有屬于后附權(quán)利要求書的構(gòu)思和范圍之內(nèi)的替代品、修改和變化。而且,在詳細(xì)描述中或者權(quán)利要求書中使用的術(shù)語“包括”意味著該術(shù)語旨在以與術(shù)語“包含”類似的方式包括在內(nèi),如同把它作為權(quán)利要求書中的過渡詞語來使用對(duì)“包含”所作的解釋。
權(quán)利要求
1.一種在使用復(fù)制品的客戶/服務(wù)器環(huán)境中便于同步的系統(tǒng),其特征在于,所述系統(tǒng)包括接收器組件,它從第一復(fù)制品接收與數(shù)據(jù)中的分區(qū)更新相關(guān)的信息;確定組件,它傳播分區(qū)更新并且在其它客戶同步之前確定哪個(gè)其它客戶將受分區(qū)變化影響;以及更新組件,當(dāng)由客戶同步時(shí),把確定為受分區(qū)變化影響的客戶加以更新,以方便跨多個(gè)客戶的分區(qū)一致性。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述與分區(qū)更新相關(guān)的信息以復(fù)制元數(shù)據(jù)的形式接收。
3.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述復(fù)制元數(shù)據(jù)包括多個(gè)表,它們代表復(fù)制元數(shù)據(jù)、生成元數(shù)據(jù)、分區(qū)元數(shù)據(jù)、生成分區(qū)元數(shù)據(jù)、當(dāng)前變化元數(shù)據(jù)以及過去變化元數(shù)據(jù)的數(shù)據(jù)中至少一種數(shù)據(jù)。
4.如權(quán)利要求1所述的系統(tǒng),其特征在于,將所述客戶的分區(qū)和第一復(fù)制品對(duì)齊使得正在更新的行被更新。
5.如權(quán)利要求1所述的系統(tǒng),其特征在于,將所述客戶的分區(qū)和第一復(fù)制品對(duì)齊使得正在更新的行被更新,并且使用過濾器來擴(kuò)充以從聯(lián)接的表中獲取相關(guān)的行。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述行使用過濾器來擴(kuò)充,該過濾器為聯(lián)合過濾器,該擴(kuò)充計(jì)算依照基于集的查詢。
7.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述過濾器是動(dòng)態(tài)行過濾器。
8.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述分區(qū)更新包含元數(shù)據(jù)的目標(biāo)復(fù)制品,該元數(shù)據(jù)是為其它受分區(qū)變化影響的客戶的同步所保持的成員資格信息。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述保持的成員資格信息包括變化行的行標(biāo)識(shí)符和其它客戶的各自復(fù)制品的分區(qū)身份之間的映射。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述保持的成員資格信息包括行刪除和行更新中至少一種,需要有關(guān)過去成員資格的行信息。
11.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述分區(qū)更新依照同步標(biāo)記來傳播,使得只有在過去同步中未更新的其它客戶得到更新。
12.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述分區(qū)更新使用變化跟蹤邏輯跟蹤,當(dāng)?shù)谝粡?fù)制品的行為被更新、插入和刪除行中至少一種時(shí),該跟蹤邏輯處理分區(qū)中的變化。
13.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括一種變化枚舉機(jī)制,枚舉與其它客戶同步中其它客戶中的分區(qū)更新中的變化,處理自從最后一次同步以來其它客戶中出現(xiàn)的變化。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,通過選擇同步標(biāo)記比會(huì)話的協(xié)商同步標(biāo)記更新的行來枚舉所述刪除和分區(qū)更新。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,從反映該行的過去的變化的元數(shù)據(jù)中選擇所述的行。
16.如權(quán)利要求13所述的系統(tǒng),其特征在于,通過選擇同步標(biāo)記比會(huì)話的協(xié)商同步標(biāo)記更新的行來枚舉所述插入和分區(qū)更新。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,從反映該行的當(dāng)前變化的元數(shù)據(jù)選擇所述的行。
18.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括把同步標(biāo)記分配給來自第一復(fù)制品傳播的變化,該同步標(biāo)記為生成識(shí)別信息的形式。
19.如權(quán)利要求18所述的系統(tǒng),其特征在于,當(dāng)相應(yīng)客戶同步時(shí),所述第一分區(qū)的生成識(shí)別信息被第二分區(qū)的生成識(shí)別信息所覆蓋。
20.一種基于服務(wù)器的系統(tǒng),其特征在于,所述系統(tǒng)包含權(quán)利要求1所述的系統(tǒng)。
21.一種網(wǎng)絡(luò),其特征在于,所述網(wǎng)絡(luò)包含權(quán)利要求1所述的系統(tǒng)。
22.一種在使用復(fù)制品的客戶/服務(wù)器環(huán)境中便于同步的方法,其特征在于,所述方法包括從第一復(fù)制品接收與數(shù)據(jù)中的分區(qū)更新相關(guān)的信息;傳播該分區(qū)更新,并在由其它客戶同步之前確定哪個(gè)其它客戶將受分區(qū)變化影響;以及在由客戶同步時(shí),更新確定為受分區(qū)變化影響的客戶,以方便跨多個(gè)客戶的分區(qū)一致性。
23.如權(quán)利要求22所述的方法,其特征在于,所述與分區(qū)更新相關(guān)的信息以復(fù)制元數(shù)據(jù)的形式接收。
24.如權(quán)利要求23所述的方法,其特征在于,所述復(fù)制元數(shù)據(jù)包括多個(gè)表,它們代表復(fù)制元數(shù)據(jù)、生成元數(shù)據(jù)、分區(qū)元數(shù)據(jù)、生成分區(qū)元數(shù)據(jù)、當(dāng)前變化元數(shù)據(jù)以及過去變化元數(shù)據(jù)中至少一種數(shù)據(jù)。
25.如權(quán)利要求22所述的方法,其特征在于,所述方法還包括將客戶的分區(qū)和第一復(fù)制品對(duì)齊的步驟,使得正在更新的行被更新。
26.如權(quán)利要求22所述的方法,其特征在于,所述方法還包括將客戶的分區(qū)和第一復(fù)制品對(duì)齊的步驟,使得正在更新的行被更新,并且使用過濾器來擴(kuò)充以從聯(lián)接表中獲得相關(guān)行。
27.如權(quán)利要求26所述的方法,其特征在于,所述行使用過濾器來擴(kuò)充,該過濾器為聯(lián)合過濾器,該擴(kuò)充計(jì)算依照基于集的查詢。
28.如權(quán)利要求26所述的方法,其特征在于,所述過濾器是動(dòng)態(tài)行過濾器。
29.如權(quán)利要求22所述的方法,其特征在于,所述分區(qū)更新包括元數(shù)據(jù)的局部復(fù)制品,該元數(shù)據(jù)是為與受分區(qū)變化影響的其它客戶同步所保持的成員資格信息。
30.如權(quán)利要求29所述的方法,其特征在于,所述保持的成員資格信息包括變化行的行標(biāo)識(shí)符和其它客戶各自復(fù)制品的分區(qū)身份之間的映射。
31.如權(quán)利要求29所述的方法,其特征在于,所述保持的成員資格信息包括行刪除和行更新中至少一種,需要有關(guān)過去成員資格的行信息。
32.如權(quán)利要求22所述的方法,其特征在于,所述分區(qū)更新依照同步標(biāo)志值來傳播,使得僅在最后一次同步時(shí)未被更新的其它客戶得以更新。
33.如權(quán)利要求22所述的方法,其特征在于,所述分區(qū)更新采用跟蹤邏輯來跟蹤,當(dāng)?shù)谝粡?fù)制品的行是被更新、插入、和刪除行中至少一種時(shí),該跟蹤邏輯處理分區(qū)中的變化。
34.如權(quán)利要求22所述的方法,其特征在于,所述方法包括采用變化枚舉機(jī)制枚舉與其它客戶同步時(shí)其它客戶中的變化的步驟,該變化枚舉機(jī)制處理自從最后一次同步以來其它客戶中出現(xiàn)的變化。
35.如權(quán)利要求34所述的方法,其特征在于,通過選擇其同步標(biāo)志比會(huì)話的協(xié)調(diào)同步標(biāo)志更新的行來枚舉刪除和分區(qū)更新。
36.如權(quán)利要求35所述的方法,其特征在于,從反映該行的過去變化的元數(shù)據(jù)中選擇所述行。
37.如權(quán)利要求34所述的方法,其特征在于,通過選擇其同步標(biāo)志比會(huì)話的協(xié)商同步標(biāo)志更新的行來枚舉插入和分區(qū)更新。
38.如權(quán)利要求37所述的方法,其特征在于,從反映該行的當(dāng)前變化的元數(shù)據(jù)中選擇所述行。
39.如權(quán)利要求22所述的方法,其特征在于,所述方法還包括把同步標(biāo)記分配給來自第一復(fù)制品傳播的變化的步驟,該同步標(biāo)記為生成識(shí)別信息的形式。
40.如權(quán)利要求39所述的方法,其特征在于,當(dāng)相應(yīng)客戶同步時(shí),所述第一分區(qū)的生成識(shí)別信息被第二分區(qū)的生成識(shí)別信息覆蓋。
41.一種計(jì)算機(jī)可讀媒介,其特征在于,該媒介上儲(chǔ)存用于執(zhí)行權(quán)利要求22所述方法的計(jì)算機(jī)可執(zhí)行指令。
42.一種在使用復(fù)制品的客戶/服務(wù)器環(huán)境中便于同步的系統(tǒng),其特征在于,所述系統(tǒng)包括從第一復(fù)制品接收與數(shù)據(jù)中的分區(qū)更新相關(guān)的信息的裝置;傳播該分區(qū)更新并且在其它客戶同步之前確定哪個(gè)其它客戶將受分區(qū)變化影響的裝置;以及在由客戶同步時(shí)更新確定為受分區(qū)變化影響的客戶以方便跨多個(gè)客戶的分區(qū)一致性的裝置。
43.一種在使用復(fù)制品的客戶/服務(wù)器環(huán)境中便于同步的方法,其特征在于,所述方法包括從第一復(fù)制品接收與數(shù)據(jù)中的分區(qū)更新相關(guān)的信息,所接收的信息是復(fù)制元數(shù)據(jù)的形式,該元數(shù)據(jù)是為與其它客戶同步所保持的成員資格信息;傳播該分區(qū)更新并且在其它客戶同步之前確定哪個(gè)客戶將受分區(qū)變化影響;以及在由客戶同步時(shí)更新確定為受分區(qū)變化影響的客戶以方便跨多個(gè)客戶的分區(qū)一致性。
44.一種使用復(fù)制品便于數(shù)據(jù)收集的同步的系統(tǒng),其特征在于,所述系統(tǒng)包括一種用于從第一復(fù)制品接收與數(shù)據(jù)中的分區(qū)更新相關(guān)的信息的接收器組件;一種確定組件,用于傳播該分區(qū)更新并且在其它目標(biāo)數(shù)據(jù)收集同步之前確定哪個(gè)其它目標(biāo)數(shù)據(jù)收集將受分區(qū)變化影響;以及一種更新組件,在由目標(biāo)數(shù)據(jù)收集同步時(shí),更新確定為受分區(qū)變化影響的目標(biāo)數(shù)據(jù)收集以方便跨多個(gè)目標(biāo)數(shù)據(jù)收集的分區(qū)一致性。
45.如權(quán)利要求44所述的系統(tǒng),其特征在于,與分區(qū)更新相關(guān)的信息以復(fù)制元數(shù)據(jù)的形式接收。
全文摘要
本發(fā)明涉及數(shù)據(jù)復(fù)制中分區(qū)計(jì)算和變化傳播的結(jié)構(gòu),提供了在使用數(shù)據(jù)復(fù)制品的數(shù)據(jù)源/數(shù)據(jù)目標(biāo)環(huán)境中同步的方便。當(dāng)多個(gè)目標(biāo)請(qǐng)求與源同步時(shí),處理選擇同步的第一目標(biāo)使得第一目標(biāo)數(shù)據(jù)和源數(shù)據(jù)之間的差異被確定并被保持在分區(qū)更新中。在更新第一目標(biāo)之后,同步進(jìn)程僅對(duì)由保持的數(shù)據(jù)所確定并由保持的數(shù)據(jù)所更新的將受分區(qū)變化影響的剩余目標(biāo)繼續(xù)。
文檔編號(hào)G06F17/30GK1551555SQ20041003245
公開日2004年12月1日 申請(qǐng)日期2004年4月9日 優(yōu)先權(quán)日2003年5月9日
發(fā)明者R·P·辛格, R P 辛格, C·納拉牙南, 濫 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1