專利名稱:與物理存儲表示無關地同步邏輯視圖的制作方法
技術領域:
本發(fā)明一般涉及數(shù)據(jù)處理和操作,尤其涉及計算機系統(tǒng)之間數(shù)據(jù)同步的領域。
背景技術:
在計算機系統(tǒng)內,數(shù)據(jù)同步是一個重要的功能。經(jīng)常需要在許多不同的設置和位置中令同一數(shù)據(jù)可用。在許多同步數(shù)據(jù)有用的示例中,一個說明性示例涉及數(shù)字地址簿。計算機用戶可以在其桌面工作計算機上儲存數(shù)字地址簿。當工作時,這是儲存地址、電話號碼和一般聯(lián)系人信息的方便且可訪問的位置。當離開工作位置時,計算機用戶可能需要其地址簿以移動的形式,如個人數(shù)字助理(PDA)或其它移動信息儲存系統(tǒng)。PDA上的聯(lián)系人信息應當匹配桌面工作計算機上的聯(lián)系人信息。
此外,同一計算機用戶可具有儲存聯(lián)系人信息的家庭計算機。理想地,家庭計算機、PDA和工作計算機上的聯(lián)系人信息都應當同步。返回到計算機用戶的工作位置,儲存在數(shù)字地址簿中的一些數(shù)據(jù)可以是對計算機用戶工作的組織內其它計算機用戶可用的信息。由此,這一數(shù)據(jù)也可以被儲存在可由許多不同的計算機用戶訪問的集中式數(shù)據(jù)庫中,并且仍可以與計算機用戶的PDA、工作計算機和家庭計算機同步。
因此,在上述說明性示例中,至少有四種不同類型的平臺用于儲存該數(shù)字地址簿。即,工作計算機、PDA、家庭計算機和集中式數(shù)據(jù)庫。這些平臺的每一個可在數(shù)據(jù)存儲中具有儲存該數(shù)字地址簿的一個副本的復制品。
每一數(shù)據(jù)存儲中的數(shù)據(jù)可以在不同的物理排列中維護,例如,在物理表和/或物理表組中。物理表是在諸如數(shù)據(jù)庫大容量存儲陣列、計算機硬盤或閃存卡的計算機存儲設備上的數(shù)據(jù)的實際排列。能夠理解,每一不同的平臺可以在復制品中儲存其它復制品中完全相同的數(shù)據(jù)。然而,由于特定平臺的特征的限制,數(shù)據(jù)可能在特定的平臺上儲存在不同的物理排列中(即,在不同的物理表排列或在文件中)。當彼此同步不同的復制品時,在同一拓撲內不同的復制品上不同地物理儲存數(shù)據(jù)呈現(xiàn)了各種挑戰(zhàn)。
復制品上的數(shù)據(jù)一般被劃分成數(shù)據(jù)的離散組,通常被稱為“項目”。例如,在數(shù)字地址簿中,項目可以是名字、地址、電話號碼、完整的聯(lián)系人或任一其它離散分組。在其它示例中,項目可以是文件、圖像、文件夾等等。在復制品上的項目能夠通過例如添加、刪除和修改項目而變化。由于不同的物理排列,很難在復制品之間同步變化。
在不同的復制品上同步數(shù)據(jù)中出現(xiàn)的另一挑戰(zhàn)涉及同步數(shù)據(jù)粒度的上下文。如上所述,復制品中的數(shù)據(jù)能夠被劃分成項目。這些項目表示同步的信息的離散片段。通常,定義項目的粒度,并且該粒度對于特定的復制品拓撲來說是不可改變的。在數(shù)字地址簿的示例中,當項目為聯(lián)系人的單個字段時,如,姓、名、電話號碼、街道地址、州或郵政分區(qū)號碼,該項目具有細粒度。相反,當項目為諸如全名(姓和名)、聯(lián)系電話或地址之一時,它具有中級粒度。具有粗粒度的項目可包括如復制品中的項目的完整聯(lián)系人。
在復制品內同步項目經(jīng)常需要元數(shù)據(jù)與每一項目相關聯(lián)。元數(shù)據(jù)可包括諸如指示該項目何時最后一次改變的時間標記的信息。如果項目的粒度太細,元數(shù)據(jù)過多會不必要地消耗特定復制品的資源(如,存儲和系統(tǒng)存儲器),因為每一項目必須具有關聯(lián)的元數(shù)據(jù)。例如,在上述數(shù)字地址簿中,如果項目的粒度包括街道地址、城市和郵政分區(qū)號碼,則需要維護對這三個項目的每一個的元數(shù)據(jù)。然而,可能街道地址中的變化也導致城市和郵政分區(qū)號碼中的變化,這意味著當更新街道時,通常改變對城市和郵政分區(qū)號碼的元數(shù)據(jù)。
另一方面,如果粒度太粗,出現(xiàn)至少兩個問題,即在同步過程中可能需要傳輸太多的同步數(shù)據(jù)以及可能出現(xiàn)不必要的沖突。例如,在上述數(shù)字地址簿中,如果按照整個聯(lián)系人來定義項目,則聯(lián)系人的任一部分中的變化將導致在同步中發(fā)送整個聯(lián)系人。在拓撲中的復制品之間可能已經(jīng)同步了這一數(shù)據(jù)的大多數(shù)。因此,在同步過程中在兩個復制品之間發(fā)送了冗余的數(shù)據(jù)。例如,聯(lián)系人中對電話號碼的改變不需要發(fā)送名字和地址信息來同步相應的聯(lián)系人。然而,當項目被定義為整個聯(lián)系人時,對電話號碼的改變仍然引發(fā)在同步過程中發(fā)送名字和地址。由此,消耗了通信資源來傳輸已同步的數(shù)據(jù)。
此外,當項目的定義太粗時,復制品會不適當?shù)貦z測到復制品中數(shù)據(jù)之間的沖突。例如,如果在第一復制品上改變了聯(lián)系人的電話號碼,并且在第二復制品上改變了該聯(lián)系人的地址,則如果該項目粒度是整個聯(lián)系人,第一和第二復制品可看似沖突。然而,不存在實際的沖突,因為電話號碼的變化可以是完全有效的,且與地址的變化不相關。
在商業(yè)數(shù)字存儲應用中,經(jīng)常直到在出售特定的應用且由大量用戶使用之后才發(fā)現(xiàn)優(yōu)化,并且優(yōu)化能導致對物理存儲的改變。由此,包含數(shù)字存儲應用的較早版本的數(shù)據(jù)的物理表可能不具有與儲存該數(shù)字存儲應用的較晚版本的相同數(shù)據(jù)的物理表相同的布局。為在數(shù)字存儲應用的不同版本間同步數(shù)據(jù),需要書寫新的代碼來使用較晚版本的優(yōu)化,而仍然提供同步能力。
盡管上述示例被限在數(shù)字地址簿的上下文的框架內,但是有許多使用數(shù)據(jù)同步的其它環(huán)境。一些示例包括文檔版本、共享文件和信息、軟件更新等等。這些環(huán)境的每一個以及其它環(huán)境會遭受上述的挑戰(zhàn)。因此,更有效地使用計算機系統(tǒng)和通信資源的同步機制是有利的。更適當?shù)貦z測數(shù)據(jù)沖突的同步機制也是有利的。
發(fā)明內容
本發(fā)明的原理提供了同步復制品。計算機系統(tǒng)包括源復制品,為包括在拓撲中(如,在計算機網(wǎng)絡拓撲中)的多個復制品之一。計算機系統(tǒng)接收源復制品要與目標復制品同步的同步指示(如,請求同步消息)。計算機系統(tǒng)在源復制品上確定項目是否在物理布局中(如,在數(shù)據(jù)庫表中)變化。在一個示例中,計算機系統(tǒng)將本地變化枚舉與同步本地變化枚舉比較。
當比較指示,例如,當本地變化枚舉與同步本地變化枚舉不同時,確定該項目在物理布局中變化。計算機系統(tǒng)將源復制品上在物理布局中變化的任何項目映射到邏輯視圖,這實質上與拓撲中一個或多個其它復制品上的邏輯視圖相似。每一復制品上的目錄控制從物理布局到邏輯視圖的映射,使邏輯視圖實質上相似。計算機系統(tǒng)向目標復制品發(fā)送映射到邏輯視圖的至少一個項目。
本發(fā)明的原理也提供計算機系統(tǒng)與拓撲中的其它計算機系統(tǒng)同步數(shù)據(jù)。計算機系統(tǒng)包括數(shù)據(jù)存儲層,包括大量項目和對項目的數(shù)量維護本地變化枚舉的本地變化跟蹤器。計算機系統(tǒng)還包括同步層,包括實質上與拓撲中一個或多個其它計算機系統(tǒng)上的邏輯視圖相似的邏輯視圖。該邏輯視圖表示一個或多個從項目的數(shù)量的映射。同步層還包括對映射到邏輯視圖的一個或多個項目維護版本和同步本地變化枚舉的同步變化跟蹤器。
本發(fā)明的原理也提供生成數(shù)據(jù)存儲中項目的物理布局到邏輯視圖的映射。計算機系統(tǒng)訪問可用來方便邏輯模式的編譯的核心代碼。計算機系統(tǒng)訪問包括變化單元和一致單元的定義的邏輯模式。變化單元是可配置的,使開發(fā)者能夠基于可用的資源分配變化單元的大小。例如,在低帶寬或高等待時間的網(wǎng)絡連接上,能夠使用導致網(wǎng)絡上較小項目和較少數(shù)據(jù)的較低粒度。一致單元也是可配置的,使開發(fā)者能夠將應當一起同步的項目組合在一起。例如,開發(fā)者可以組合共同構成地址的項目,因為對這些項目的任一個的變化能夠導致對它們的所有的變化。
計算機系統(tǒng)使用核心代碼來將邏輯模式編譯為將項目從物理布局映射到邏輯視圖的至少一個目錄。編譯也能夠導致生成過程或功能。過程或功能指示項目在物理布局中如何儲存。通過對過程或功能的訪問,目錄能夠將數(shù)據(jù)的物理布局映射到實質上與一個或多個其它計算機系統(tǒng)上的邏輯視圖相似的邏輯視圖。使用眾多計算機系統(tǒng)中的相似的邏輯視圖能夠方便復制品之間更有效的同步。
下文將描述本發(fā)明的另外的特征,通過閱讀描述,能夠部分清楚本發(fā)明的另外的特征,或通過本發(fā)明的實踐學到。本發(fā)明的特征和優(yōu)點可以通過所附權利要求書中特別指出的儀器和組合來實現(xiàn)并獲取。閱讀以下描述和所附權利要求書,可以完全明白本發(fā)明的這些和其它特征,或者可以通過后文所陳述的本發(fā)明的實踐學到。
為以能獲取本發(fā)明的上述和其它特征的方式描述,參考附圖中說明的其特定實施例呈現(xiàn)上文簡要描述的本發(fā)明的更詳細描述。應當理解,這些附圖僅描述了本發(fā)明的典型實施例,因此不應考慮為對其范圍的限制,通過使用附圖描述并解釋本發(fā)明的另外的特征和細節(jié),附圖中圖1所示是包括能夠依照本發(fā)明的原理同步的復制品的示例計算機體系結構;圖2A所示是用于依照本發(fā)明的原理定義一致單元和變化單元的示例結構;圖2B所示是用于依照本發(fā)明的原理定義一致單元和變化單元的示例結構;圖3A所示是用于依照本發(fā)明的原理儲存項目、變化枚舉和版本的示例表;圖3B所示是用于依照本發(fā)明的原理儲存項目、變化枚舉和版本的示例表;圖4所示是用于依照本發(fā)明的原理將邏輯視圖映射到自定義視圖的示例表;圖5所示是用于使用本發(fā)明的一些實施例的各方面同步復制品的示例方法;
圖6所示是用于使用本發(fā)明的一些實施例的各方面生成數(shù)據(jù)存儲中項目的物理布局到邏輯視圖中的項目的映射的示例方法;圖7所示是適合本發(fā)明的原理的操作環(huán)境。
具體實施例方式
本發(fā)明延及通過邏輯視圖同步復制品上的項目的系統(tǒng)、方法和計算機程序產(chǎn)品。復制品使用目錄以將項目從物理布局映射到邏輯視圖。目錄能夠從邏輯模式編譯,邏輯模式方便了數(shù)據(jù)從不同的物理布局(如,在多個不同的復制品上)到充分相似的邏輯視圖(如,在多個不同的復制品間共享)的映射。本發(fā)明的實施例可包括專用或通用計算機,包括計算機硬件的各種零件,如后文所詳細討論的。
現(xiàn)在參考圖1,示出了包括能依照本發(fā)明的原理同步的復制品的示例計算機體系結構。圖1示出了拓撲100。拓撲100包括復制品102和復制品104,可以在連接到公用網(wǎng)絡(如,LAN、WAN或者甚至是因特網(wǎng))的計算機系統(tǒng)上。復制品102被劃分成數(shù)據(jù)存儲層126和同步層128。復制品104也被劃分成數(shù)據(jù)存儲層130和同步層132。復制品102包括物理表105和106,包括儲存在數(shù)據(jù)存儲層126的復制品102的數(shù)據(jù)。復制品104也包括物理表107、108和109,包括儲存在數(shù)據(jù)存儲層130的復制品104的數(shù)據(jù)。
物理表105和106;以及107、108和109可包含相同的信息;但這些表可以顯著不同地物理排列。這些差別可以是這些表駐留的復制品類型的結果。例如,服務器復制品上的優(yōu)化可以不同于客戶機復制品上的優(yōu)化,導致不同的物理表布局。可選地,物理表可以駐留在同一商業(yè)軟件的不同版本中。商業(yè)軟件應用的較晚版本經(jīng)常會包含優(yōu)化并具有與該物理表的前一版本的不同物理表布局。
項目可以通過用戶接口134輸入到復制品102的表105和106。用戶接口134包含指示在表105和106中添加或改變的項目的表布局的代碼。在本發(fā)明的一個實施例中,這一代碼是過程或功能代碼138。復制品104包含與復制品102中的用戶接口134類似地起作用的用戶接口136。用戶接口136也可以使用過程或功能代碼140。
復制品102也包括邏輯視圖110。物理表105和106映射到邏輯視圖110。復制品104也包括邏輯視圖112。物理表107、108和109也映射到邏輯視圖112。邏輯視圖110和112可以是充分相似的邏輯視圖,例如,邏輯視圖110和112可以都表示聯(lián)系人信息。項目能夠在邏輯視圖110和112中類似地表示。在本發(fā)明的一個實施例中,在復制品102中從表105和106到邏輯視圖110的映射通過使用包含關于復制品102中項目的物理存儲位置的信息的目錄114(在同步層128中)實現(xiàn)。復制品104上的映射類似于復制品102上的映射。復制品102和104通過邏輯視圖110和112映射。在本發(fā)明的一個實施例中,編譯到物理模式映射文檔的XML或其它邏輯模式(如后文更詳細描述的)來創(chuàng)建目錄和過程或功能。
在一個示例性實施例中,作為對復制品102接收的應當啟動同步的指示符的響應,執(zhí)行同步。指示符可包括復制品102對其表105和106中有通過用戶接口134改變或添加的項目的識別;從復制品104接收請求用于同步;或任一其它合適的指示符。復制品102然后通過目錄114將物理表105和106中需要映射的項目映射到邏輯視圖110。然后將項目從復制品102中的邏輯視圖110發(fā)送到復制品104中的邏輯視圖112。復制品104然后能夠通過目錄116將發(fā)送的項目從邏輯視圖112映射到物理表107、108和109。
在本發(fā)明的一個實施例中,能夠通過使用文件夾來控制同步的范圍。文件夾是用于將項目組合在一起的邏輯構造。由此,通過同步文件夾,能夠同步組合在公用文件夾中的那些項目。使用文件夾,通過僅同步組合在文件夾中的那些項目,能夠在少于儲存在復制品上的所有項目上完成同步。文件夾組合的一個示例在圖1中示出。文件夾組合能夠通過使用復制品上的數(shù)據(jù)存儲層中的文件夾表來實現(xiàn)。圖1通過示出數(shù)據(jù)存儲層126中的表106說明了這一概念。表106包括標注為1、2和3的數(shù)據(jù)。文件夾表118包含對應于標識號2和3的條目A。這一表條目表示包含標注為2和3的數(shù)據(jù)項目的標注為A的文件夾120。復制品104具有相應的邏輯構造,包括儲存標注為1、2和3的數(shù)據(jù)項目的表107、108和109。這些項目對應于復制品102上標注為1、2和3的項目,盡管它們物理上不同地儲存。文件夾表122儲存在復制品104的數(shù)據(jù)存儲層130中。文件夾表122映射到標注為A的文件夾124。由此,復制品102能夠在文件夾級上與復制品104同步。
邏輯視圖可以按照XML模式或某些其它類似樹的數(shù)據(jù)結構來定義。這一數(shù)據(jù)結構的一個示例在圖2A中示出。為理解邏輯視圖,必須先理解一些其它術語。例如,一致單元表示可以在同步過程中報告的項目變化的最小組。可以按照一致單元來定義的數(shù)據(jù)的一個示例是地址。地址包括若干個別的成分,包括街道、城市、州和郵政分區(qū)號碼。當更新地址時,通常改變這些項目的若干個。因此,如果在同步過程中,僅這些項目的一部分改變并發(fā)送,并且在它們發(fā)送到的復制品上改變,可能在復制品上得到非一致且無意義的地址。由此,僅當在同一同步過程中發(fā)送該一致單元的每一改變的成分時,即街道、城市、州和郵政分區(qū)號碼,在同步過程中在復制品上更新定義為一致單元的地址。
應當理解的另一概念是變化單元的概念。變化單元是定義項目的邊界的構造。換言之,如果修改變化單元的任一部分,將在隨后的同步中同步整個變化單元。在一個示例中,變化單元可定義為電話號碼。區(qū)號的改變將導致在隨后的同步過程中發(fā)送整個電話號碼。
現(xiàn)在參考圖2A,以邏輯模式200的一般化視圖示出了一致單元和變化單元。邏輯模式200包括頂層一致單元202。頂層一致單元202具有向其添加的兩個較低層一致單元。第一較低層一致單元204包括變化單元206和208。第二較低層一致單元210包括變化單元212、214、216和218。邏輯模式200的一個更具體的示例在圖2B中示出,示出了聯(lián)系人252(對應于頂層一致單元202)。在聯(lián)系人252內示出名字254(對應于第一添加的一致單元204)。名字254包括姓256和名258。示出了地址260(對應于第二一致單元210)包括街道262、城市268、州266和郵政分區(qū)號碼268。
本發(fā)明的實施例考慮可定義的一致單元和變化單元。一致單元和變化單元能夠例如以對每一特定應用的XML模式定義。在本發(fā)明的一個實施例中,開發(fā)者創(chuàng)建XML模式。該XML模式儲存在包括核心代碼的計算機系統(tǒng)中。計算機系統(tǒng)中的核心代碼編譯XML模式。編譯XML模式導致用于在邏輯視圖和物理表(如圖1所示的復制品102中的邏輯視圖110和物理表105和106)之間映射項目的目錄(如圖1所示的復制品102中的目錄114)的創(chuàng)建。編譯也可以生成過程或功能代碼。過程或功能代碼能夠儲存在復制品的數(shù)據(jù)庫層(如圖1所示的復制品102的數(shù)據(jù)庫層126)中。過程或功能代碼提供了用于在物理存儲(如圖1所示的物理表105和106)中儲存項目的功能,如指示項目如何儲存在表或其它存儲排列中。
在本發(fā)明的一個實施例中,在本地作出的變化,如通過用戶接口作出的變化能夠與從同步所得的變化相區(qū)別?,F(xiàn)在參考圖1和3A,解釋了這一功能。復制品102,如上所述,包括儲存在數(shù)據(jù)存儲層126的物理表105和106。圖3A說明了示出如何使用物理表105和106以及邏輯視圖110來同步通過用戶接口134作出的更新的時間方式的行進。圖3A說明的物理表105具有兩列即項目列302和本地變化枚舉(LOCAL_CN)列304。項目列302包含儲存在復制品102中的項目。本地變化枚舉列304包括數(shù)據(jù)存儲126向項目分配為標簽的本地變化枚舉。與每一項目關聯(lián)的本地變化枚舉在每次向一個項目作出變化時被遞增地更新。數(shù)據(jù)存儲層126向所有變化分配本地變化枚舉,而不考慮那些變化是通過用戶接口作出還是通過同步接收。本地變化跟蹤器可包括本地變化枚舉列304。
邏輯視圖110包括具有三個列的表即儲存從物理表105和106通過目錄114映射的項目的項目列306、儲存分配給項目的本地變化枚舉的同步形式的同步本地變化枚舉列308以及包括版本的版本列310,包括關于拓撲內作出變化或向項目分配版本的復制品的信息以及添加或改變項目的時間順序。同步變化跟蹤器可包括同步本地變化枚舉列308和版本列310中的信息。
在時刻(1),復制品102處于穩(wěn)定狀態(tài)。在時刻(2),通過用戶接口134對標注為I2的項目作出變化。對I2分配本地變化枚舉,該本地變化枚舉是下一可用的時間變化枚舉,如在本情況中為12。
在時刻(3),復制品102接收應當執(zhí)行同步的指示。在同步層128,復制品102通過將同步本地變化枚舉308與列304中的本地變化枚舉相比較來檢查邏輯視圖110。復制品102發(fā)現(xiàn)對物理表105和106作出了變化,因為列304中的本地變化枚舉不與列308中的同步本地變化枚舉匹配。即,本地變化枚舉具有值12,而同步本地變化枚舉具有值5。由此,復制品102將列310中的版本更新為A12,指示在復制品102上作出該變化(在本示例中,復制品102在拓撲中被標注為復制品A)以及復制品102分配一個本地變化枚舉12。同一時刻,標注為I2的項目從本地表105和106映射到邏輯視圖表110。然后在時刻(4),更新列308中的同步本地變化枚舉來匹配列304中的本地變化枚舉。然后可以將邏輯視圖110中的項目,包括從物理表105和106映射的項目與拓撲100內的其它復制品同步。
現(xiàn)在參考圖3B,示出了更新復制品,包括本地表,作為同步的結果的一個示例。在時刻(1),復制品102處于穩(wěn)定狀態(tài),未從拓撲內的其它復制品接收到任何新項目或對項目的變化。在時刻(2),在邏輯視圖表110接收到對項目I3的變化。對項目I3的變化具有版本C101。這一變化通過目錄114從邏輯視圖表110發(fā)送到物理表105。接收變化之后,數(shù)據(jù)存儲層126分配一個本地變化枚舉,為數(shù)據(jù)存儲層126可用來分配的下一變化枚舉。在本情況下,本地變化枚舉是13,如在時刻(3)在列304中所示出的。在其之后立即或不久,在時刻(4)中示出,在同步層128作出檢查來發(fā)現(xiàn)分配給該變化的列304中的本地變化枚舉。將列304中的本地變化枚舉更新為列308中的同步本地變化枚舉。以這一方式,同步層將知道只要列304中的本地變化枚舉與列308中的同步本地變化枚舉相匹配,則未通過用戶接口134向項目I3作出未經(jīng)同步的本地變化。此外,列310中的版本包含關于哪一復制品作出變化以及作出變化的時間順序(本情況中為時刻101的標注為C的復制品)的信息。
在本發(fā)明的一些實施例中,可能需要提供不同于以上所討論的邏輯視圖的自定義視圖。即,以上所討論的邏輯視圖在所有復制品上都具有相似的布局,從而最大化了同步效率。然而,可能有復制品被添加到未采用邏輯視圖設計復制品且不能被更新來包括它們的拓撲的情況。盡管如此,本發(fā)明的實施例考慮與這些自定義復制品兼容。現(xiàn)在參考圖4,示出了容納這些自定義復制品的一種方式。圖4一般示出了一種將在同步層(如圖1所示的層128)分配的列310中的版本和一般由自定義復制品分配的列410中的自定義變化枚舉映射到自定義視圖404的系統(tǒng)。然后可以如上所述地出現(xiàn)同步,具有通過自定義視圖404發(fā)送和接收項目的額外的行動。例如,當項目從復制品發(fā)送到自定義復制品時,可以在發(fā)送之前向該項目分配適當?shù)淖远x變化枚舉。
當接收項目時,通過咨詢自定義視圖404,能夠分配適當?shù)陌姹?,并且將項目映射到邏輯視圖(如圖1所示的邏輯視圖110)中適當?shù)奈恢谩?br>
圖5說明了使用本發(fā)明的一些實施例的各方面同步復制品的示例方法500。方法500可以在諸如圖1所示的計算機體系結構中實踐。因此,將參考圖1中的元素描述圖5的方法。方法500包括用于標識來自要映射到邏輯視圖的物理布局的項目的面向功能結果的步驟(步驟502)。步驟502能夠包括用于標識來自要映射到邏輯視圖的物理布局的項目的任何相應的行動。
然而,在圖5的示例方法中,步驟502包括接收源復制品應當與目標復制品同步的同步指示的相應行動(行動504)。行動504可包括計算機系統(tǒng)接收源復制品應當與目標復制品同步的指示。例如,包括復制品102的計算機系統(tǒng)能夠接收復制品102應當與復制品104同步的指示。
行動504能夠出現(xiàn)在復制品的同步層中,如圖1所示的復制品102的同步層128。復制品102在包括可與其同步數(shù)據(jù)的其它復制品的拓撲100中。行動504中陳述的指示可起源于多個不同的源,包括來自拓撲100內另一復制品的同步請求或來自復制品102內定時器的超時,或通過將標記設置為對儲存在數(shù)據(jù)庫層126中的數(shù)據(jù)的某一變化的結果。盡管這里未具體陳述,各種其它指示也可以是可以接收來指示應當執(zhí)行同步的合適的指示。
步驟502也包括確定源復制品上物理布局中的項目是否變化的相應行動(行動506)。行動506可包括計算機系統(tǒng)確定源復制品上物理布局中的項目是否變化。例如,包括復制品102的計算機系統(tǒng)可確定物理地儲存在表105和表06中的項目是否變化。
行動506的一個實施例在圖3A中在時刻(2)說明,其中,如上所述,將列308中的同步本地變化枚舉與列304中的本地變化枚舉相比較。
列304中的本地變化枚舉在復制品102的數(shù)據(jù)存儲層126中,并由數(shù)據(jù)存儲層126關聯(lián)到一個項目,如表105中。列308中的同步本地變化枚舉與映射到復制品102的邏輯視圖110的項目關聯(lián),在復制品102中,映射的項目在表105和106的物理布局中具有相應的項目。列304中的本地變化枚舉可以與列308中的同步本地變化枚舉無關地變化。由此,當作出本地變化時,列304中的本地變化枚舉變?yōu)橐粋€與列308中的同步本地變化枚舉的值不同的值。
由此,當執(zhí)行行動506時,可以使用本地變化枚舉與同步本地變化枚舉的比較來確定是否在源復制品上對物理布局中的項目作出變化。例如,本地變化枚舉和同步本地枚舉的不同值能指示物理布局中的變化。如果項目在不同于儲存該項目的復制品的復制品上變化,或者該項目與拓撲中的另一復制品同步,則本地變化枚舉和同步變化枚舉可以是同一個數(shù)。以上圖3A和3B的討論描述了這如何在本發(fā)明的一個實施例中實現(xiàn)的示例。
復制品的同步層中的同步變化跟蹤器維護與映射到邏輯視圖的項目關聯(lián)的版本和同步本地變化枚舉。例如,表307能夠位于同步層128中。同步變化跟蹤器中的版本可以包括標識對與相應的版本關聯(lián)的項目作出變化的復制品的復制品ID。版本也可包括標識在復制品上作出變化的時間順序的復制品變化枚舉。在圖3A中,項目I1(列306中)與版本A4關聯(lián),其中A是復制品ID(如,標識復制品102),4是復制品變化枚舉。因而,對項目I1的變化是在復制品102以時間順序4進行的。在本發(fā)明的一些實施例中,復制品ID標識不同于作出變化的復制品的復制品。在這些實施例中,復制品將用來向由拓撲內的若干不同復制品作出的變化分配版本。這可以被稱為系統(tǒng)標志符創(chuàng)作(surrogate authoring)。
方法500也可包括對物理布局中的每一項目定義變化單元,其中,變化單元定義了項目的粒度。變化單元可以以圖2A和2B所示的邏輯模式或邏輯結構來定義。
方法500也可包括以邏輯模式定義一致單元。一致單元包括必須由復制品接收用于該復制品應用的任一變化單元的定義的粒度的多個項目。例如,圖2B示出了地址一致單元260,包括街道262、城市264、州266和郵政分區(qū)268變化單元。如果在同步過程中,街道262、城市264、州266和郵政分區(qū)268變化單元的任一變化的項目未被復制品接收,則在復制品上不更新任何項目。當接收了一致單元中的所有項目時,在復制品中可以共同更新所有項目。
方法500也可包括編譯邏輯模式來創(chuàng)建目錄,例如,類似于目錄114。目錄包含關于項目在物理表105和106的何處布置的信息。更具體地,在本發(fā)明的一個實施例中,目錄包括詳細的元數(shù)據(jù)和用于生成過程和功能來將物理存儲中的項目映射到邏輯視圖的指令。由此,目錄被用來將物理表105和106中的項目映射到邏輯視圖110。當編譯邏輯模式后,也可以生成過程或功能代碼。過程或功能代碼可以儲存在復制品的數(shù)據(jù)庫層中(如復制品102的數(shù)據(jù)庫層126)。過程或功能代碼提供了用于在物理表(如物理表105和106)的物理布局中儲存項目的功能,如指示項目如何儲存在表中。
方法500也可包括在行動504之前安裝目錄。目錄可以由開發(fā)者或在不同于上述計算機系統(tǒng)的計算機系統(tǒng)中開發(fā)并編譯目錄的其它源提供。然后將目錄提供為可安裝代碼,能夠在主題計算機系統(tǒng)上運行。類似地,能夠提供過程或功能代碼并也在計算機系統(tǒng)上安裝。
方法500也可包括在復制品上定義包括復制品上的一些項目的文件夾。拓撲中的另一復制品也可包括具有相應項目的相應文件夾。圖1示出了復制品102上的文件夾120,對應于復制品104上的文件夾124。復制品可以通過僅發(fā)送需要同步且在文件夾中的項目來優(yōu)化文件夾的同步。
方法500也包括將源復制品的物理布局中的任何變化的項目映射到邏輯視圖的行動(行動508)。行動508可包括計算機系統(tǒng)將源復制品的物理布局中的任何變化的項目映射到邏輯視圖。例如,包括復制品102的計算機系統(tǒng)能夠通過目錄114將儲存在物理表105和106中的項目映射到邏輯視圖110。在一個復制品上的邏輯視圖能夠實質上與在拓撲中一個或多個其它復制品上的邏輯視圖相似。例如,邏輯視圖110能夠實質上與邏輯視圖112相似。這可以提高同步拓撲100中的復制品的效率。
方法500也包括將至少一個映射的項目從源復制品發(fā)送到目標復制品的行動(行動510)。行動510可包括復制品102將項目從邏輯視圖110發(fā)送到邏輯視圖112。例如,復制品102可將一個或多個項目從類似于聯(lián)系人252的聯(lián)系人發(fā)送到復制品104。
方法500也可包括將邏輯視圖映射到自定義視圖。將邏輯視圖映射到自定義視圖可包括將版本(如在列310中)映射到自定義變化枚舉(如在列410中)。自定義復制品可以向自定義復制品中的自定義項目分配自定義變化枚舉。自定義變化枚舉可以與版本(如圖4所示的自定義視圖404)相關。自定義變化枚舉可以是與本地變化不同的格式(如,不同的數(shù)據(jù)格式)。
然后,可以如上所述地出現(xiàn)同步,具有通過自定義視圖發(fā)送并接收項目的額外行動。例如,當項目從復制品發(fā)送到自定義復制品時,可以在發(fā)送之前對該項目分配適當?shù)淖远x變化枚舉。當接收項目時,通過參考自定義視圖404,可以分配適當?shù)陌姹?,并且該項目可以映射到邏輯視圖(如圖1所示的邏輯視圖110)中的適當位置。
現(xiàn)在參考圖6,示出了用于生成數(shù)據(jù)存儲中的項目的物理布局到邏輯視圖的映射的方法為方法600。方法600包括訪問可以用來方便邏輯模式的編譯的核心代碼的行動(行動602)。行動602可包括復制品(如在計算機系統(tǒng)中)訪問可用來方便邏輯模式的編譯的核心代碼。例如,復制品102能夠訪問方便邏輯模式編譯為物理模式映射的核心代碼。在本發(fā)明的一個實施例中,可以通過開發(fā)者使用適當?shù)墓δ軇?chuàng)建代碼并在編譯計算機系統(tǒng)上安裝該代碼來完成行動602。編譯計算機系統(tǒng)然后訪問該代碼。
方法600還包括訪問邏輯模式的行動(行動604)。行動604可包括復制品(如在計算機系統(tǒng)中)訪問邏輯模式。例如,復制品102可訪問邏輯模式。在本發(fā)明的一個實施例中,邏輯模式包括定義項目的粒度的變化單元。邏輯模式還可包括定義一個或多個定義的粒度的項目的一致單元,其變化必須在另一計算機系統(tǒng)上接收來用于要在其它計算機系統(tǒng)中更新的一個或多個項目的任一個。
在本發(fā)明的一個實施例中,該模式由開發(fā)者在設計時刻設計。設計特定類型的數(shù)據(jù)存儲的開發(fā)者能夠定義變化單元來對特定的應用優(yōu)化粒度。例如,可以通過定義較大變化單元來定義變化單元以減少需要維護的元數(shù)據(jù)量,或者可以通過定義較小變化單元來設計變化單元以減少沖突的發(fā)生率,或者可以定義兩者之間的某一平衡。由于變化單元粒度可以在邏輯模式中定義,開發(fā)者不需要書寫新的計算機可執(zhí)行代碼來定義變化單元。
定義一致單元也可以由開發(fā)者在設計時刻執(zhí)行。定義一致單元在上文結合圖2A和2B的描述中詳細描述。定義一致單元幫助確保了應當共同更新的項目被共同更新。由于一致單元可以在邏輯模式中定義,開發(fā)者不需要書寫新的計算機可執(zhí)行代碼來定義一致單元。
方法600還包括使用核心代碼來將邏輯模式編譯為目錄的行動(行動606)。行動606可包括復制品(如,在計算機系統(tǒng)中)使用核心代碼來將邏輯模式編譯為目錄。例如,復制品102能夠使用訪問的核心代碼來將訪問的邏輯模式編譯為目錄114。將邏輯模式編譯為物理模式映射能導致能儲存在復制品(如圖1的復制品102)的同步層(如圖1的層128)上的目錄(如圖1所示的目錄114)的創(chuàng)建。
目錄包含用于將項目從物理表(如圖1的物理表105和106)映射到邏輯視圖(如圖1的邏輯視圖110)的信息。邏輯視圖可以在拓撲中的一個或多個其它計算機系統(tǒng)上實質上相似。步驟606也可創(chuàng)建過程或功能代碼。過程或功能代碼位于復制品的數(shù)據(jù)存儲層(如圖1所示的復制品102的數(shù)據(jù)存儲層126)中。過程或功能代碼包含指示項目在物理表(如圖1的表105和106)中的物理存儲的計算機可執(zhí)行指令。
方法600也可包括配置編譯計算機系統(tǒng)通過邏輯視圖向拓撲內的其它計算機系統(tǒng)發(fā)送項目。拓撲內的其它計算機系統(tǒng)具有與該計算機系統(tǒng)上的邏輯視圖充分相似的邏輯視圖。通過邏輯視圖發(fā)送項目的示例在上文圖1的描述中詳細地描述。
方法600也可包括向計算機系統(tǒng)安裝目錄以由物理布局中配置的數(shù)據(jù)存儲使用。數(shù)據(jù)存儲可以在安裝目錄之前、安裝目錄之后或安裝的同一操作中安裝到計算機系統(tǒng)。安裝可以以多種方法完成,包括通過網(wǎng)絡或通過物理地將目錄放置到便攜式存儲媒質,如計算機硬盤或CD-ROM中并傳輸?shù)接嬎銠C系統(tǒng)。
方法600也可包括向計算機系統(tǒng)發(fā)送目錄以由配置為依照邏輯視圖同步數(shù)據(jù)的復制品使用。復制品可以在發(fā)送目錄之前、發(fā)送目錄之后或發(fā)送的同一操作中配置。
計算機系統(tǒng)可以劃分成數(shù)據(jù)存儲層和同步層。數(shù)據(jù)存儲層可以類似于上述數(shù)據(jù)存儲層126(圖1)。同步層可以類似于上述同步層128。
方法600也可在計算機系統(tǒng)的數(shù)據(jù)存儲層(如圖1中的層126)中儲存本地變化跟蹤器。本地變化跟蹤器維護對儲存在源復制品上的項目的本地變化枚舉。本地變化跟蹤器的示例性實施例在圖3A和3B中示出。方法600也可在同步層(如圖1的層128)中儲存同步變化跟蹤器。同步變化跟蹤器維護版本(如圖3A和3B中列310中所示出的)和同步本地變化枚舉(如圖3A和3B中列308中所示出的)。版本可包括對應于拓撲中的計算機系統(tǒng)的復制品ID和對應于作出變化的時間順序的變化枚舉。在一些實施例中,復制品ID對應于作出與版本關聯(lián)的變化的計算機系統(tǒng)。在其它實施例中,計算機系統(tǒng)可對若干計算機系統(tǒng)分配版本,使復制品ID對應于分配版本的計算機系統(tǒng)。
本地變化枚舉和同步本地變化枚舉可用來標識變化的項目是否應當發(fā)送并且因此是否應當從物理布局映射到邏輯視圖。當通過用戶接口(如圖1所示的用戶接口134)作出變化時,對該變化分配本地變化枚舉。由此,數(shù)據(jù)存儲層(如圖1的層126)中的項目將具有不同于與同步層(如圖1的層128)中的項目關聯(lián)的同步本地變化枚舉的本地變化枚舉。計算機系統(tǒng)然后能夠在同步過程中識別通過用戶接口改變的項目需要被分配一個有效的版本號并與其它計算機系統(tǒng)同步。這一過程在上文結合圖3A和3B的描述中更充分地討論。
方法600也可包括在數(shù)據(jù)存儲層中儲存文件夾,其中,該文件夾能夠將項目組合在一起。這一文件夾的一個示例在圖1中示出為文件夾120。儲存文件夾可包括使用表(如圖1的表118)來將項目相關到文件夾。可以使用文件夾將項目發(fā)送到其它計算機系統(tǒng)。以這一方式,僅發(fā)送選擇的項目而非在計算機系統(tǒng)上存在的所有的項目。
本發(fā)明的范圍內的實施例也包括用于含有或在其上儲存計算機指令或數(shù)據(jù)結構的計算機可讀媒質。這類計算機可讀媒質可以是任一可由通用或專用計算機訪問的可用媒質。作為示例而非局限,這類計算機可讀媒質可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設備、或其它可用來以計算機可執(zhí)行指令或數(shù)據(jù)結構的形式攜帶或儲存所期望的的程序代碼方法并可由通用或專用計算機訪問的任一媒質。當通過網(wǎng)絡或另一通信連接(或者硬布線、或者無線、或硬布線和無線的組合)向計算機傳輸或提供信息時,計算機適當?shù)貙⒃撨B接視為計算機可讀媒質。由此,任一這類連接適當?shù)胤Q為計算機可讀媒質。上述的組合也應當包括在計算機可讀媒質的范圍內。計算機可執(zhí)行指令包括,如,引發(fā)通用計算機、專用計算機或專用處理設備執(zhí)行特定功能或功能組的指令和數(shù)據(jù)。
圖7及以下討論提供了對適于在其中實現(xiàn)本發(fā)明的計算環(huán)境的簡要概括描述。盡管并非所需,但本發(fā)明將在計算機可執(zhí)行指令的一般語境下描述,計算機可執(zhí)行指令如程序模塊,由網(wǎng)絡環(huán)境中的計算機執(zhí)行。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結構等等,執(zhí)行特定的任務或實現(xiàn)特定的抽象數(shù)據(jù)類型。計算機可執(zhí)行指令、相關的數(shù)據(jù)結構以及程序模塊表示了用于執(zhí)行這里公開的方法的步驟的程序代碼方法的示例。這一可執(zhí)行指令或相關數(shù)據(jù)結構的特定順序表示了用于實現(xiàn)在這類步驟中所描述的功能的相應行動的示例。
本領域的技術人員可以理解,本發(fā)明可以在具有多種類型計算機系統(tǒng)構造的網(wǎng)絡計算環(huán)境中實踐,包括個人計算機、手持式設備、多處理器系統(tǒng)、基于微處理器或可編程消費者電子設備、網(wǎng)絡PC、小型機、大型機等等。本發(fā)明也可以在分布式計算環(huán)境中實踐,其中,任務由通過通信網(wǎng)絡連接(或者通過硬布線鏈路、或者通過無線鏈路、或通過硬布線或無線鏈路的組合)的本地和遠程處理設備來執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于本地和遠程存儲器存儲設備中。
參考圖7,用于實現(xiàn)本發(fā)明的示例系統(tǒng)包括以常規(guī)計算機形式720的通用計算裝置,包括處理單元721、系統(tǒng)存儲器722以及將各類系統(tǒng)組件包括系統(tǒng)存儲器722耦合至處理單元721的系統(tǒng)總線723。系統(tǒng)總線723可以是若干種總線結構類型的任一種,包括存儲器總線或存儲器控制器、外圍總線以及使用各類總線結構的本地總線。系統(tǒng)存儲器包括只讀存儲器(ROM)724和隨機存取存儲器(RAM)725?;据斎?輸出系統(tǒng)(BIOS)726,包含如在啟動時協(xié)助在計算機720內的元件之間傳輸信息的基本例程,可儲存在ROM 724中。
計算機720也可包括用于對磁硬盤739進行讀寫的磁硬盤驅動器727、用于對可移動磁盤729進行讀寫的磁盤驅動器728以及用于對可移動光盤731如CD-ROM或其它光媒質進行讀寫的光盤驅動器730。磁硬盤驅動器727、磁盤驅動器728以及光盤驅動器730分別通過硬盤驅動器接口732、磁盤驅動器接口733和光盤驅動器接口734連接至系統(tǒng)總線723。驅動器及其相關的計算機可讀媒質為計算機720提供了計算機可執(zhí)行指令、數(shù)據(jù)結構、程序模塊和其它數(shù)據(jù)的非易失存儲。盡管這里描述的示例環(huán)境采用了磁硬盤739、可移動磁盤729以及可移動光盤731,然而也可以使用用于儲存數(shù)據(jù)的其它類型的計算機可讀媒質,包括盒式磁帶、閃存卡、數(shù)字多功能盤、Bernoulli盒式磁盤、RAM、ROM等等。
包括一個或多個程序模塊的程序代碼方法可儲存在硬盤739、磁盤729、光盤731、ROM 724或RAM 725中,包括操作系統(tǒng)735、一個或多個應用程序736、其它程序模塊737以及程序數(shù)據(jù)738。用戶可以通過鍵盤740、指向設備742或其它輸入設備(未示出),如麥克風、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等向計算機720輸入命令和信息。這些和其它輸入設備通常通過耦合至系統(tǒng)總線723的串行端口接口746連接到處理單元721??蛇x地,輸入設備也可以通過其它接口連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器747或另一顯示設備也通過接口,如視頻適配器748連接到系統(tǒng)總線723。除監(jiān)視器之外,個人計算機通常包括其它外圍輸出設備(未示出),如揚聲器和打印機。
計算機720可以在使用到一個或多個遠程計算機,如遠程計算機783和793的邏輯連接的網(wǎng)絡化環(huán)境中操作。遠程計算機783和793的每一個可以是另一個人計算機、服務器、路由器、網(wǎng)絡PC、對等設備或其它公用網(wǎng)絡節(jié)點,并通常包括許多或所有上述與計算機720相關的元件。圖7描述的邏輯連接包括局域網(wǎng)(LAN)751和廣域網(wǎng)(WAN)752,這里示出作為示例而非局限。這類網(wǎng)絡環(huán)境常見于辦公室范圍或企業(yè)范圍計算機網(wǎng)絡、內聯(lián)網(wǎng)以及因特網(wǎng)。
當在局域網(wǎng)網(wǎng)絡環(huán)境中使用時,計算機720通過網(wǎng)絡接口或適配器753連接至局域網(wǎng)751。當在廣域網(wǎng)網(wǎng)絡環(huán)境中使用時,計算機720可包括調制解調器754、無線鏈路或其它裝置,用于通過廣域網(wǎng)752,如因特網(wǎng)建立通信。調制解調器754可以是內置或外置的,通過串行端口接口746連接至系統(tǒng)總線723。在網(wǎng)絡化環(huán)境中,描述的與計算機720相關的程序模塊或其部分可儲存在遠程存儲器存儲設備中。可以理解,示出的網(wǎng)絡連接是示例性的,也可以使用通過廣域網(wǎng)752建立通信的其它裝置。
本發(fā)明可以在不脫離其精神或本質特征的情況下以其它特定形式實施。描述的實施例在各方面僅為說明而非限制。因此,本發(fā)明的范圍由所附權利要求書而非上述描述指示。所有處于權利要求的等效技術方案的含義和范圍內的變化都包含在其范圍之內。
權利要求
1.在包括在拓撲中用于同步多個復制品的計算機系統(tǒng)中,所述計算機系統(tǒng)包括來自所述多個復制品中的源復制品,儲存在所述源復制品上的項目的物理布局不同于儲存在一個或多個其它復制品上的相應項目的物理布局,一種使復制品同步的方法,其特征在于,它包括接收行動,接收所述源復制品要與來自所述多個復制品中的目標復制品同步的同步指示;確定行動,確定所述源復制品的所述物理布局中的項目是否已變化;映射行動,將所述源復制品上的所述物理布局中任何已變化的項目映射到邏輯視圖,所述邏輯視圖實質上與所述拓撲中另一其它復制品上的邏輯視圖相似,以提高將所述源復制品與所述一個或多個其它復制品同步的效率,或當在所述同步拓撲中引入具有不同的物理存儲格式的新復制品時避免對所述源復制品作出任何變化;以及發(fā)送行動,將至少一個映射的項目從所述源復制品發(fā)送到所述目標復制品。
2.如權利要求1所述的方法,其特征在于,它還包括定義行動,在所述源復制品上定義源文件夾,所述源文件夾包括多個項目,所述源文件夾對應于所述目標復制品上的目標文件夾,所述目標文件夾包括相應的多個項目;以及發(fā)送行動,發(fā)送所述多個項目的至少一部分。
3.如權利要求1所述的方法,其特征在于,所述源復制品包括一數(shù)據(jù)存儲層和一同步層,所述數(shù)據(jù)存儲層包括一本地變化跟蹤器,所述本地變化跟蹤器維護與所述源復制品上所述物理布局中的項目關聯(lián)的本地變化枚舉,并且所述同步層包括一同步變化跟蹤器,所述同步變化跟蹤器維護與映射到所述源復制品的所述邏輯視圖的項目關聯(lián)的版本和同步本地變化枚舉,所述確定行動包括將所述本地變化枚舉與所述同步本地變化枚舉相比較的行動。
4.如權利要求3所述的方法,其特征在于,確定所述源復制品上的所述物理布局中的項目是否已變化的行動包括確定如果所述本地變化枚舉不同于所述同步本地變化枚舉,則所述物理布局中的項目已變化的行動。
5.如權利要求3所述的方法,其特征在于,確定所述源復制品上的所述物理布局中的項目是否已變化的行動包括判定如果所述本地變化枚舉與所述同步本地變化枚舉相同,則與所述本地變化枚舉和所述同步本地變化枚舉關聯(lián)的項目未變化的行動。
6.如權利要求5所述的方法,其特征在于,所述版本包括復制品ID和復制品變化枚舉,所述復制品ID標識所述拓撲內的復制品,并且所述復制品變化枚舉標識在所述多個復制品上項目變化的時間時間順序。
7.如權利要求6所述的方法,其特征在于,它還包括標識行動,標識映射到所述邏輯視圖的項目包括由與映射到所述邏輯視圖的項目關聯(lián)的所述版本的所述復制品ID標識的復制品作出的變化。
8.如權利要求6所述的方法,其特征在于,所述標識行動包括標識映射到所述邏輯視圖的項目與由向在對映射到所述邏輯視圖的所述項目作出變化的復制品上變化的項目分配版本的所述多個復制品之一分配的復制品ID相關聯(lián)的行動。
9.如權利要求3所述的方法,其特征在于,所述拓撲包括自定義復制品,自定義復制品包括自定義項目和與所述自定義項目關聯(lián)的自定義變化枚舉,所述自定義變化枚舉以不同于所述版本的格式,還包括將所述源復制品上的所述邏輯視圖映射到自定義視圖的步驟,所述自定義視圖與所述版本和所述自定義變化枚舉相關。
10.如權利要求1所述的方法,其特征在于,它還包括以邏輯模式定義變化單元的行動,所述變化單元在接收所述同步指示的行動之前定義項目的粒度;以邏輯模式定義一致單元的行動,定義了所述定義的粒度的一個或多個項目的變化必須在同一同步中順序接收用于在復制品上更新的所述一個或多個項目的任一個;以及將所述邏輯模式編譯為至少一個目錄的行動,所述目錄執(zhí)行所述映射的行動。
11.如權利要求10所述的方法,其特征在于,所述編譯的行動生成過程或功能代碼,所述過程或功能代碼指示所述源復制品在所述物理布局的何處儲存項目。
12.如權利要求1所述的方法,其特征在于,它還包括在接收所述同步指示之前安裝目錄的行動,所述目錄被配置為將項目從物理布局映射到邏輯視圖。
13.如權利要求12所述的方法,其特征在于,它還包括安裝過程或功能代碼的行動,所述過程或功能代碼指示所述源復制品在所述物理布局的何處儲存項目。
14.在包括在拓撲中用于同步多個復制品的計算機系統(tǒng)中,所述計算機系統(tǒng)包括來自多個復制品中的源復制品,儲存在所述源復制品上的項目的物理布局不同于儲存在一個或多個其它復制品上的相應項目的物理布局,一種使復制品同步的方法,其特征在于,它包括標識要映射到邏輯視圖的來自物理布局的項目的步驟;將所述源復制品上的所述物理布局中的任何變化的項目映射到邏輯視圖的行動,所述邏輯視圖實質上與所述拓撲中另一其它復制品上的邏輯視圖相似,以提高將所述源復制品與所述一個或多個其它復制品同步的效率,或當在所述同步拓撲中引入具有不同的物理存儲格式的新復制品時避免對所述源復制品的任何變化;以及將至少一個映射的項目從所述源復制品映射到所述目標復制品的行動。
15.一種被配置來與拓撲中其它計算機系統(tǒng)進行數(shù)據(jù)同步的計算機系統(tǒng),其特征在于,所述計算機系統(tǒng)包括一個或多個處理單元;以及在其上儲存了數(shù)據(jù)的一個或多個計算機可讀媒質,所述數(shù)據(jù)包括一數(shù)據(jù)存儲層,所述數(shù)據(jù)存儲層包括多個項目;以及對所述多個項目維護本地變化枚舉的一本地變化跟蹤器;以及一同步層,所述同步層包括實質上與所述拓撲中一個或多個其它計算機系統(tǒng)上的邏輯視圖相似的邏輯視圖,所述邏輯視圖表示來自所述多個項目的一個或多個項目的映射;以及一同步變化跟蹤器,所述同步變化跟蹤器對映射到所述邏輯視圖的所述一個或多個項目維護版本和同步本地變化枚舉。
16.如權利要求15所述的計算機系統(tǒng),其特征在于,所述邏輯視圖包括一變化單元,所述變化單元定義項目的邊界;以及一一致單元,所述一致單元包括定義多個項目的多個變化單元,其變化必須在同一同步中都由拓撲中的其它計算機從所述計算機系統(tǒng)順序接收,用于要在所述其它計算機系統(tǒng)中更新的所述多個項目。
17.如權利要求15所述的計算機系統(tǒng),其特征在于,所述數(shù)據(jù)存儲層包括枚舉所述數(shù)據(jù)存儲中的項目的文件夾,由所述文件夾枚舉的所述項目應用到所述拓撲中另一計算機系統(tǒng)上的相應文件夾。
18.如權利要求15所述的計算機系統(tǒng),其特征在于,所述數(shù)據(jù)存儲層中的所述多個項目儲存在表中。
19.如權利要求15所述的計算機系統(tǒng),其特征在于,所述數(shù)據(jù)存儲層中的所述多個項目儲存在多個表中。
20.如權利要求15所述的計算機系統(tǒng),其特征在于,所述數(shù)據(jù)存儲層中的所述多個項目儲存在文件中。
21.如權利要求15所述的計算機系統(tǒng),其特征在于,所述同步層適用于確定所述數(shù)據(jù)存儲中的項目是否在所述計算機系統(tǒng)中作出且未同步;或者通過其它計算機系統(tǒng)或者先前通過將所述本地變化枚舉與所述同步本地變化枚舉比較而同步。
22.如權利要求21所述的計算機系統(tǒng),其特征在于,所述版本包括一復制品ID和一變化枚舉,所述復制品ID對應于所述拓撲中的計算機系統(tǒng),并且所述變化枚舉對應于對所述項目作出變化的時間。
23.如權利要求22所述的計算機系統(tǒng),其特征在于,所述同步層能夠通過檢查所述復制品ID確定哪一計算機系統(tǒng)向所述項目作出變化。
24.如權利要求15所述的計算機系統(tǒng),其特征在于,所述同步層包括一自定義視圖,所述自定義視圖從所述邏輯視圖映射,并且所述自定義視圖將在另一計算機系統(tǒng)中存在的自定義變化枚舉與所述數(shù)據(jù)存儲中的本地變化枚舉相關。
25.在編譯計算機系統(tǒng)中,一種生成數(shù)據(jù)存儲中的項目的物理布局到邏輯視圖的映射的方法,其特征在于,所述方法包括訪問可用來方便邏輯模式的編譯的核心代碼的行動;訪問邏輯模式的行動,所述邏輯模式包括一變化單元,定義項目的粒度;以及一一致單元,定義必須在同一同步中順序接收用于要在復制品中更新的所述一個或多個項目的任一個的所述定義的粒度的一個或多個項目的變化;以及使用所述核心代碼來將所述邏輯模式編譯為至少一個目錄的行動,所述目錄將項目從物理布局映射到邏輯視圖,所述邏輯視圖實質上與一個或多個其它計算機系統(tǒng)上的邏輯視圖相似。
26.如權利要求25所述的方法,其特征在于,它還包括配置所述編譯計算機系統(tǒng)以將項目發(fā)送到所述一個或多個其它計算機系統(tǒng)的至少一個的行動。
27.如權利要求25所述的方法,其特征在于,它還包括向計算機系統(tǒng)安裝所述目錄以使用在所述物理布局中配置的數(shù)據(jù)儲存的行動。
28.如權利要求25所述的方法,其特征在于,它還包括向計算機系統(tǒng)發(fā)送所述目錄以使用配置來依照所述邏輯視圖同步數(shù)據(jù)的復制品的行動。
29.如權利要求27所述的方法,其特征在于,它還包括將所述計算機系統(tǒng)劃分成一數(shù)據(jù)存儲層和一同步層的行動。
30.如權利要求29所述的方法,其特征在于,所述編譯的行動還創(chuàng)建過程或功能代碼,所述過程或功能代碼適用于在所述數(shù)據(jù)存儲層中排列項目,并且還包括在所述數(shù)據(jù)存儲層定位所述過程或功能代碼的行動。
31.如權利要求29所述的方法,其特征在于,它還包括在所述同步層中定位所述目錄的行動。
32.如權利要求29所述的方法,其特征在于,它還包括在所述數(shù)據(jù)存儲層儲存一本地變化跟蹤器的行動,所述本地變化跟蹤器對儲存在所述數(shù)據(jù)存儲層的項目維護本地變化枚舉;在所述同步層儲存一同步變化跟蹤器的行動,所述同步變化跟蹤器對儲存在所述同步層的項目維護版本和同步本地變化枚舉;以及其中,通過將所述本地變化跟蹤器與所述同步本地變化跟蹤器相比較,所述計算機系統(tǒng)能夠確定是否應當發(fā)送儲存在所述計算機系統(tǒng)的所述數(shù)據(jù)存儲層中的項目并因此同步地映射到所述邏輯視圖。
33.如權利要求32所述的方法,其特征在于,如果所述本地變化枚舉和所述同步本地變化枚舉包括不同的值,則儲存在所述計算機系統(tǒng)的所述數(shù)據(jù)存儲層的所述項目應當映射到所述邏輯視圖。
34.如權利要求32所述的方法,其特征在于,如果所述本地變化枚舉和所述同步本地變化枚舉包括相同的值,則儲存在所述計算機系統(tǒng)的所述數(shù)據(jù)存儲層的所述項目不需要映射到所述邏輯視圖。
35.如權利要求32所述的方法,其特征在于,所述版本包括對應于所述拓撲中的計算機系統(tǒng)的復制品ID和對應于作出變化的時間順序的變化枚舉。
36.如權利要求35所述的方法,其特征在于,所述復制品ID對應于改變所述項目的計算機系統(tǒng)。
37.如權利要求35所述的方法,其特征在于,所述復制品ID對應于對在不同于對變化分配版本的計算機系統(tǒng)的計算機系統(tǒng)上作出的變化分配版本的計算機系統(tǒng)。
38.如權利要求29所述的方法,其特征在于,它還包括儲存向用戶接口展現(xiàn)為組織數(shù)據(jù)項目的一般方式的文件夾的行動,在所述數(shù)據(jù)存儲層中,所述文件夾適用于將項目組合在一起。
39.如權利要求38所述的方法,其特征在于,所述復制品被配置來發(fā)送組合在所述文件夾中的項目。
40.一種在包括在拓撲中用于同步多個復制品的計算機系統(tǒng)中使用的計算機程序產(chǎn)品,所述計算機系統(tǒng)包括來自多個復制品中的源復制品,儲存在所述源復制品上的項目的物理布局不同于儲存在一個或多個其它復制品上的相應項目的物理布局,其特征在于,所述計算機程序產(chǎn)品用于實現(xiàn)一種同步復制品的方法,所述計算機程序產(chǎn)品包括在其上儲存了計算機可讀指令的一個或多個計算機可讀媒質,當由處理器執(zhí)行所述計算機可執(zhí)行指令時,引發(fā)所述計算機系統(tǒng)執(zhí)行以下行動接收所述源復制品應當與來自所述多個復制品中的目標復制品同步的同步指示;確定所述源復制品上的所述物理布局中的項目是否變化;將所述源復制品上的所述物理布局中的任何變化的項目映射到邏輯視圖,所述邏輯視圖實質上與所述拓撲中另一其它復制品上的邏輯視圖相似,以提高將所述源復制品與所述一個或多個其它復制品同步的效率;以及將至少一個映射的項目從所述源復制品發(fā)送到所述目標復制品。
41.一種在編譯計算機系統(tǒng)中使用的計算機程序產(chǎn)品,其特征在于,所述計算機程序產(chǎn)品用于實現(xiàn)生成數(shù)據(jù)存儲中的項目的物理布局到邏輯視圖的映射的方法,所述計算機程序產(chǎn)品包括在其上儲存計算機可執(zhí)行指令的一個或多個計算機可讀媒質,當由處理器執(zhí)行所述計算機可執(zhí)行指令時,引發(fā)所述編譯計算機系統(tǒng)執(zhí)行以下行動訪問可用來方便邏輯模式的編譯的核心代碼;訪問邏輯模式,所述邏輯模式包括一變化單元,定義項目的粒度;以及一一致單元,定義必須在同一同步中順序接收用于要在復制品中更新的所述一個或多個項目的任一個的所述定義的粒度的一個或多個項目的變化;以及使用所述核心代碼來將所述邏輯模式編譯為至少一個目錄,所述目錄將項目從物理布局映射到邏輯視圖,所述邏輯視圖實質上與一個或多個其它復制品上的邏輯視圖相似。
全文摘要
揭示了同步拓撲內復制品上的項目的系統(tǒng)、方法和計算機程序產(chǎn)品。項目儲存在復制品上的物理表中。每一復制品上的物理表布局可以不同,但是被映射到公用的邏輯視圖。當復制品接收應當執(zhí)行同步的指示時,該復制品確定是否在應當映射到邏輯視圖的復制品上作出變化。復制品能夠通過將在物理表中作出的變化的本地變化枚舉與對邏輯視圖中的變化的同步本地變化枚舉相比較來方便這一過程。需要同步的任何變化通過邏輯視圖發(fā)送到拓撲中的其它復制品。
文檔編號G06Q10/00GK1577287SQ200410059078
公開日2005年2月9日 申請日期2004年7月26日 優(yōu)先權日2003年7月29日
發(fā)明者Y·吳, S·周, L·諾維克, I·胡迪斯, A·B·沙 申請人:微軟公司