亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于狀態(tài)的同步的制作方法

文檔序號(hào):6656324閱讀:266來源:國(guó)知局

專利名稱::基于狀態(tài)的同步的制作方法
技術(shù)領(lǐng)域
:計(jì)算機(jī)程序列表下表示出了22個(gè)源代碼文件,這22個(gè)源代碼文件是作為計(jì)算機(jī)程序列表提供在只讀格式的光盤中的,在此通過引用將其并入。表1計(jì)算機(jī)程序列表附錄
背景技術(shù)
:同步是提供或保持?jǐn)?shù)據(jù)集之間的一致性的功能。例如,臺(tái)式計(jì)算機(jī)可具有涉及個(gè)人信息管理(“PIM”)的臺(tái)式機(jī)數(shù)據(jù)集。該臺(tái)式計(jì)算機(jī)的用戶可能期望在她遠(yuǎn)離其臺(tái)式計(jì)算機(jī)時(shí)也可使用該P(yáng)IM數(shù)據(jù)。因此,她可能期望在使用膝上型計(jì)算機(jī)、或諸如電話的個(gè)人數(shù)字助理(“PDA”)或像微型裝置的其他裝置時(shí),訪問該P(yáng)IM數(shù)據(jù)。為了滿足該期望,她的膝上型計(jì)算機(jī)和PDA可各自攜帶與臺(tái)式計(jì)算機(jī)上的PIM數(shù)據(jù)集相對(duì)應(yīng)的PIM數(shù)據(jù)集。同步功能的作用在于使用戶在各個(gè)裝置上查看到的數(shù)據(jù)是共同的。該作用通常是通過在兩個(gè)或更多個(gè)裝置同步時(shí)的同步事件而實(shí)現(xiàn)的。用于使裝置同步的公知技術(shù)是,使用一時(shí)間點(diǎn)處的數(shù)據(jù)的快照并將當(dāng)前數(shù)據(jù)與該快照進(jìn)行比較來確定改變了什么。出于例示的目的,參照?qǐng)D1,圖1中示出了臺(tái)式計(jì)算機(jī)100和便攜式計(jì)算機(jī)110這兩個(gè)裝置的模型。臺(tái)式計(jì)算機(jī)具有PIM數(shù)據(jù)庫(kù)101,該P(yáng)IM數(shù)據(jù)庫(kù)101保持在臺(tái)式計(jì)算機(jī)100上所編輯或添加的PIM數(shù)據(jù)集的當(dāng)前信息。臺(tái)式計(jì)算機(jī)100還具有臺(tái)式機(jī)快照數(shù)據(jù)庫(kù),該臺(tái)式機(jī)快照數(shù)據(jù)庫(kù)是在某時(shí)間點(diǎn)但通常是前一同步(可能為最近同步)時(shí)刻拍攝的PIM數(shù)據(jù)集的快照。類似地,便攜式計(jì)算機(jī)110具有當(dāng)前PIM數(shù)據(jù)的便攜式機(jī)數(shù)據(jù)庫(kù)111。有了這些結(jié)構(gòu),我們就可以嘗試使臺(tái)式機(jī)100和便攜式機(jī)110同步了。典型的同步是通過將便攜式機(jī)數(shù)據(jù)庫(kù)111和臺(tái)式機(jī)數(shù)據(jù)庫(kù)101兩者與快照數(shù)據(jù)庫(kù)102進(jìn)行比較而進(jìn)行的。在比較操作期間,我們則可以集合動(dòng)態(tài)數(shù)據(jù)庫(kù)101和111中的、與數(shù)據(jù)庫(kù)102相比為新的或改變過的數(shù)據(jù)項(xiàng)的列表。最后,為了完成同步,可以使用新的或改變過的數(shù)據(jù)的列表來更新全部三個(gè)數(shù)據(jù)庫(kù)101、102和111。當(dāng)對(duì)應(yīng)數(shù)據(jù)在臺(tái)式機(jī)和便攜式機(jī)兩者中都發(fā)生改變時(shí)在所描述的同步處理中會(huì)出現(xiàn)問題。例如,在同步前的某時(shí),JaneDoe的電話號(hào)碼在臺(tái)式機(jī)中變?yōu)?77-555-5555,而在便攜式機(jī)中變?yōu)?00-555-5555。在比較操作期間(或其他時(shí)刻),同步系統(tǒng)將注意到該不一致,并識(shí)別為沖突。在現(xiàn)有技術(shù)中,通常沒有確切地解決該沖突的合理方法。一些解決方案向用戶提供界面,并請(qǐng)求用戶在兩個(gè)選項(xiàng)之間進(jìn)行選擇。遺憾的是,甚至用戶也不記得哪條數(shù)據(jù)是正確的。其他的解決方案僅是在各數(shù)據(jù)庫(kù)(具有各可能數(shù)據(jù)項(xiàng)的數(shù)據(jù)庫(kù))中創(chuàng)建副本條目。如果有兩個(gè)以上的裝置攜帶對(duì)應(yīng)數(shù)據(jù)集,則該問題進(jìn)一步加重。例如,參照?qǐng)D1,假設(shè)在與便攜式機(jī)110同步后,臺(tái)式機(jī)100試圖與PDA120同步。在同步期間,我們可能發(fā)現(xiàn)PDA120攜帶的JaneDoe的電話號(hào)碼為888-555-555。遺憾的是,在現(xiàn)有技術(shù)中,我們還是沒有確切地確定正確結(jié)果的合理解決方案。此外,即使此時(shí)我們可以確定正確結(jié)果(例如,由記得正確結(jié)果的用戶),我們也不能防止系統(tǒng)在下一次使便攜式機(jī)110同步時(shí)再次具有相同的問題。最終,對(duì)于具有3個(gè)以上對(duì)端(peer)的對(duì)等系統(tǒng)來說,該問題可能是普遍的。該普遍性在于,如果在一個(gè)時(shí)刻對(duì)端可以彼此同步,并且出現(xiàn)了沖突,則無法知道是否其中一個(gè)對(duì)端攜帶有更加新的數(shù)據(jù)。應(yīng)當(dāng)注意,時(shí)間戳也不能確切地解決沖突。這是因?yàn)?,在?shí)際人們使用中,即使兩個(gè)對(duì)應(yīng)數(shù)據(jù)項(xiàng)在過去的天或月中發(fā)生了改變,也并不一定意味著第二次改變是正確的。這在如下情況下尤其如此如果第二次改變是作為與另一對(duì)端同步的結(jié)果而發(fā)生的,而所述“另一對(duì)端”可能在很久以前接收到了其數(shù)據(jù)改變。因此,在對(duì)等情形下,我們一方面將無法確定檢測(cè)到的沖突是否為真實(shí)沖突,或者另一方面,即使我們明了數(shù)據(jù)歷史,也無法確定該檢測(cè)到的沖突是可確實(shí)地解決的顯著沖突。在下面的美國(guó)專利5,710,922用于在計(jì)算機(jī)系統(tǒng)間實(shí)現(xiàn)同步并存檔信息的方法中,可以發(fā)現(xiàn)其他相關(guān)現(xiàn)有技術(shù)的同步技術(shù),在此通過引用并入該專利。另外,在此通過引用并入下面的待審申請(qǐng)TobyPaterson和JeromeLebel于2004年5月24日提交的序號(hào)為__的“AMethodofSynchronisingBetweenThreeorMoreDevices”;以及,TobyPatterson和JeromeLebel于2004年5月24日提交的序號(hào)為__的“AMethodofSynchronising”。鑒于上述討論以及現(xiàn)有技術(shù)中存在的其他問題,本發(fā)明的一些實(shí)施例提出了具有以下三個(gè)目的一種同步系統(tǒng)(i)正確地使全部非沖突數(shù)據(jù)同步;(ii)檢測(cè)真實(shí)沖突,并僅在沖突為真實(shí)的情況下向用戶提供界面來解決該沖突;(iii)避免兩次請(qǐng)求用戶解決同一數(shù)據(jù)的相同沖突。將這些目的應(yīng)用于現(xiàn)有技術(shù),我們可以看到,現(xiàn)有同步系統(tǒng)滿足第一目的,即它們通??蓽?zhǔn)確地使非沖突數(shù)據(jù)同步。然而,為了滿足第二和第三目的,必須保持某種類型的元數(shù)據(jù),例如,我們上面引用的時(shí)間戳。雖然一些現(xiàn)有技術(shù)系統(tǒng)試圖使用元數(shù)據(jù)來實(shí)現(xiàn)這些目的,然而卻不能完全實(shí)現(xiàn)。
發(fā)明內(nèi)容本文描述的實(shí)施例涉及使用歷史信息作為同步系統(tǒng)和方法的輔助。在非常簡(jiǎn)單的實(shí)施例中,歷史信息如同以每個(gè)數(shù)據(jù)(數(shù)據(jù),在本文中,是指數(shù)據(jù)項(xiàng)或數(shù)據(jù)項(xiàng)集合)為基礎(chǔ)保留的世代計(jì)數(shù)(generationcount)信息一樣小。當(dāng)數(shù)據(jù)同步時(shí),世代計(jì)數(shù)信息被同步。世代計(jì)數(shù)還可用在同步過程中,以更好地明了沖突數(shù)據(jù)的優(yōu)先級(jí)。本發(fā)明的其他實(shí)施例使用更豐富形式的關(guān)于數(shù)據(jù)項(xiàng)的歷史信息。在一些實(shí)施例中,存儲(chǔ)在裝置中的各數(shù)據(jù)項(xiàng)與狀態(tài)(state)相關(guān)聯(lián)。每當(dāng)數(shù)據(jù)項(xiàng)改變時(shí),狀態(tài)改變(例如,遞增)。通過將狀態(tài)與數(shù)據(jù)的改變相關(guān)聯(lián),來保持歷史信息。在一些實(shí)施例中,歷史信息實(shí)際上是通用的,因此關(guān)于歷史的單個(gè)敘述(statement)可與經(jīng)歷相同歷史遞增的許多數(shù)據(jù)項(xiàng)相關(guān)聯(lián)。例如,如果用戶創(chuàng)建10個(gè)數(shù)據(jù)項(xiàng),則一些實(shí)施例僅采用一個(gè)狀態(tài)來記錄該歷史(例如,裝置X上的用戶創(chuàng)建數(shù)據(jù))。因此,所創(chuàng)建的10個(gè)數(shù)據(jù)項(xiàng)中的每一個(gè)都可與同一狀態(tài)相關(guān)聯(lián)。如果這10個(gè)數(shù)據(jù)項(xiàng)中的一個(gè)數(shù)據(jù)項(xiàng)發(fā)生了改變,則其狀態(tài)將發(fā)生改變,而剩余九項(xiàng)保持舊狀態(tài)。那么經(jīng)改變的數(shù)據(jù)項(xiàng)將具有與關(guān)于該改變的另一歷史敘述相關(guān)聯(lián)的狀態(tài)(例如,裝置X上的用戶編輯數(shù)據(jù))。此外,第一次創(chuàng)建的狀態(tài)保留為第二次創(chuàng)建的狀態(tài)的祖先(ancestor)。按照這種方式,可以采用較少的狀態(tài)(以及相關(guān)聯(lián)的通用歷史敘述)來跟蹤極大量數(shù)據(jù)項(xiàng)的改變。假設(shè)多個(gè)裝置對(duì)于對(duì)應(yīng)數(shù)據(jù)集采用示例性歷史保持,這些裝置可以同步歷史信息,使得各裝置了解關(guān)于全部裝置上的數(shù)據(jù)項(xiàng)的狀態(tài)信息(由于是時(shí)間同步,所以至少是在時(shí)間方面)。一旦歷史信息被同步,就可將歷史信息用作使數(shù)據(jù)項(xiàng)同步的基礎(chǔ),這是因?yàn)榭梢酝ㄟ^參照該歷史信息來確定數(shù)據(jù)項(xiàng)的世系(ancestry)。例如,如果數(shù)據(jù)項(xiàng)在同步期間發(fā)生沖突,則通過檢察歷史信息以確定一個(gè)數(shù)據(jù)項(xiàng)是另一數(shù)據(jù)項(xiàng)的祖先還是后代可以解決該沖突。圖1示出了可同步的裝置。圖2是示例硬件。圖3是示例硬件。圖4是示例軟件堆棧。圖5是世代計(jì)數(shù)示例表。圖6是歷史數(shù)據(jù)示例表。圖7A是示例同步處理。圖7B是示例裝置同步。圖7C是例示性數(shù)據(jù)結(jié)構(gòu)布置。圖8是基于狀態(tài)的同步的遞歸應(yīng)用的示例系統(tǒng)。圖9是示例同步處理。圖10A、10B、10C和10D是示例數(shù)據(jù)和對(duì)應(yīng)歷史敘述。圖11A、11B和11C是示例數(shù)據(jù)和對(duì)應(yīng)歷史敘述。圖12是一圖表,例示了使歷史同步的實(shí)施例。圖12B是歷史同步的例示。圖13A、13B和13C是對(duì)歷史敘述的實(shí)例使用。圖14A、14B、14C、14D和14E是例示了歷史敘述的無用數(shù)據(jù)收集(garbagecollection)的實(shí)例。圖15是歷史使用的示例。具體實(shí)施例方式I.詞匯及非限制性在整個(gè)公開中,我們將使用一定的詞匯來討論同步技術(shù)和示例。所討論的大部分例示將涉及PIM數(shù)據(jù)和對(duì)其的同步。然而,本發(fā)明的很多實(shí)施例顯然可以應(yīng)用于事實(shí)上任何類型的數(shù)據(jù)。使用本文教習(xí)的技術(shù)同步的一些示例數(shù)據(jù)如下文本文件;文字處理文件;來自文件系統(tǒng)的文件,諸如jpegs、mp3、mpeg2、mpeg4或wav文件的媒體文件;來自數(shù)據(jù)庫(kù)的記錄;或者任何其他數(shù)據(jù)文件類型,無論其是否與特定應(yīng)用關(guān)聯(lián)。隨后返回到我們大部分例示性實(shí)施例的術(shù)語,我們將主要就PIM數(shù)據(jù)方面討論本發(fā)明??傮w而言,我們將討論諸如計(jì)算機(jī)、PDA、電話或用來訪問PIM數(shù)據(jù)的其他智能裝置的裝置。各裝置通常與同步客戶機(jī)(其通常是駐留在裝置中的一個(gè)或更多個(gè)處理)相關(guān)聯(lián)。在一些情況下,第一裝置將使同步客戶機(jī)駐留在另一裝置(其被稱為代理)中。這可能是因?yàn)榘惭b第一裝置的配置不足以主控(host)同步客戶機(jī)。另選的,在多對(duì)端系統(tǒng)中,同步系統(tǒng)可以使用對(duì)于各個(gè)其他對(duì)端的本地代理,從而使所有對(duì)端同步,即使很多對(duì)端不在(代理代替不在的裝置)。PIM數(shù)據(jù)本身通常表現(xiàn)為個(gè)人聯(lián)系方式、日歷條目、筆記、日志條目等。當(dāng)我們討論一記錄時(shí),我們通常查閱互相關(guān)的多個(gè)數(shù)據(jù)項(xiàng)的集合。例如,可能查看到作為記錄的JohnDoe的個(gè)人聯(lián)絡(luò)卡,其中電話號(hào)碼、街道地址、呼機(jī)號(hào)碼以及各種其他數(shù)據(jù)項(xiàng)通過它們與JohnDoe的共同關(guān)聯(lián)而互相關(guān)。單個(gè)裝置上的各個(gè)PIM數(shù)據(jù)項(xiàng)可能具有在一個(gè)或更多個(gè)其他裝置上的一個(gè)或更多個(gè)對(duì)應(yīng)數(shù)據(jù)項(xiàng)。例如,在JaneDoe的臺(tái)式計(jì)算機(jī)、便攜式計(jì)算機(jī)、PDA以及電話中的每一個(gè)上可能具有JohnDoe的街道地址的對(duì)應(yīng)數(shù)據(jù)項(xiàng)。同樣,如果我們的數(shù)據(jù)是數(shù)字照片,則臺(tái)式機(jī)上JohnDoe的圖片可能具有在PDA、便攜式計(jì)算機(jī)以及其他地方上John的對(duì)應(yīng)圖片。同步功能的任務(wù)是使在多個(gè)裝置之間查看到的對(duì)應(yīng)數(shù)據(jù)是共同的(盡可能多)。II.實(shí)例硬件和軟件結(jié)構(gòu)盡管本文所描述的技術(shù)實(shí)際上可在任何構(gòu)造環(huán)境下實(shí)現(xiàn),但是出于例示的目的,我們將描述一些示例結(jié)構(gòu)實(shí)施例。參照?qǐng)D2,示出了諸如PDA或電話手持機(jī)的實(shí)例便攜式裝置。如先前所述,客戶機(jī)裝置可以在任意方面被實(shí)現(xiàn)為足夠智能化,以用于允許用戶訪問或編輯數(shù)據(jù)。因此,圖2的裝置旨在非限制地例示任何這種裝置的實(shí)例。裝置200的正視圖201示出了屏幕204,該屏幕204可用來查看或訪問數(shù)據(jù)以及輸入數(shù)據(jù)(在觸敏或配置有輸入的屏的情況下)。還可使用鍵盤205來例如通過字母數(shù)字或其他方式進(jìn)行數(shù)據(jù)輸入,并且可使用有線連接206來進(jìn)行供電和/或數(shù)據(jù)傳輸。無線端口203可以是用于將數(shù)據(jù)移入/移出裝置200的紅外、藍(lán)牙、802.11或任何其他無線傳輸。下面轉(zhuǎn)向裝置200的內(nèi)部202,我們看到存在處理器209來執(zhí)行處理任務(wù)。發(fā)明的實(shí)施例可并入任何類型的裝置,因此處理器209可以是任何類型的微處理器或控制器,或者是執(zhí)行用于運(yùn)行軟件的功能以實(shí)現(xiàn)一個(gè)或更多個(gè)裝置功能的組件的集合。裝置200還可以具有如存儲(chǔ)器207和208所示的用于存儲(chǔ)數(shù)據(jù)和程序的兩種或更多種類型的存儲(chǔ)器。這些存儲(chǔ)器可以是任何類型的存儲(chǔ)器,例如磁存儲(chǔ)器、光存儲(chǔ)器,或者是諸如SRAM和DRAM的多種類型的硅基存儲(chǔ)器中的任意類型。最后,裝置200可具有用以支持I/O功能的組件210,該I/O功能為諸如可能在有線連接206和無線連接203中實(shí)現(xiàn)的功能。下面參照?qǐng)D3,計(jì)算機(jī)300是用戶結(jié)合多個(gè)所公開技術(shù)使用的裝置的另一例示。計(jì)算機(jī)300是普通的計(jì)算機(jī),像個(gè)人計(jì)算機(jī),但并不旨在限于此。計(jì)算機(jī)300在系統(tǒng)的核心處具有一個(gè)或更多個(gè)微處理器315以及配件芯片組(未示出)。該芯片組可包括多項(xiàng),例如網(wǎng)絡(luò)單元310、音頻單元311以及很多I/O功能,諸如可能在I/O單元314中實(shí)現(xiàn)的功能。當(dāng)然,任何這些功能或子功能可單獨(dú)地或共同地在芯片組內(nèi)部或外部實(shí)現(xiàn)。計(jì)算機(jī)300還具有電源313,用于適配并供電。計(jì)算機(jī)300可具有任意多種光和磁驅(qū)動(dòng)器以及使用這些驅(qū)動(dòng)器的適當(dāng)控制器,例如,IDE、ATA或SCSI控制器。為了用戶可進(jìn)行訪問,計(jì)算機(jī)300具有監(jiān)視器318、揚(yáng)聲器319、鍵盤321以及鼠標(biāo)320,可選地,寫字板/觸摸屏。最后,計(jì)算機(jī)300可通過各種端口(網(wǎng)絡(luò)301、無線302、USB303、并口306、串口307、1394308或調(diào)制解調(diào)器309)與任何形式的其他項(xiàng)(例如,攜帶有對(duì)應(yīng)數(shù)據(jù)項(xiàng)的其他裝置)相連接。下面我們將討論從實(shí)例硬件轉(zhuǎn)移到通用軟件背景。具體來說,參照?qǐng)D4,示出了軟件堆棧,旨在例示本發(fā)明的一些實(shí)施例將駐留于的軟件架構(gòu)。類似于硬件示例,該結(jié)構(gòu)并不旨在以任何方式進(jìn)行窮舉,而只是示例性的。對(duì)于層型圖表尤其如此,軟件開發(fā)商傾向于按照略微不同的方式來表示這些層型圖表。在這種情況下,我們以O(shè)/S內(nèi)核開始來表示多層,因此略去了下層軟件和固件。注意,通常暗示的,層中所示的軟件元件采用來自下層的資源并向上層提供服務(wù)。然而,實(shí)際上,并不是特定軟件元件的所有組件都會(huì)完全按照這種方式工作。通過這些限定,我們看到在圖4中,分別專用于操作系統(tǒng)內(nèi)核和核心服務(wù)的兩個(gè)層424和423。通常,在核心服務(wù)層423之上,具有軟件層(422和421),用于向應(yīng)用層420中的應(yīng)用提供更高級(jí)別資源和服務(wù)。將層圖應(yīng)用于本文中,我們通常希望在應(yīng)用層420中找到PIM型軟件。例如,在應(yīng)用層中駐留有iCal應(yīng)用402和地址簿應(yīng)用403。iCal402和地址簿403是管理PIM數(shù)據(jù)并向用戶提供允許用戶訪問、編輯或操控該數(shù)據(jù)的界面的應(yīng)用。這些應(yīng)用層服務(wù)是一種類型的同步客戶機(jī),其中同步功能通過保持對(duì)指定客戶機(jī)中的數(shù)據(jù)的共同查看(盡可能多)來向這些客戶機(jī)提供服務(wù)。在很多實(shí)施例中,區(qū)域4100通常表示實(shí)現(xiàn)同步功能的處理可位于其中的地方。更具體地說,實(shí)現(xiàn)同步功能的處理可以是其應(yīng)用客戶機(jī)的對(duì)端,或者可位于該應(yīng)用的下層中,甚至可能相對(duì)于應(yīng)用程序隱藏自身(指的是這樣的同步客戶機(jī),其不知道該處理為同步客戶機(jī))。同步功能還可以具有兩層或更多層中的組件。然而,在很多實(shí)施例中,應(yīng)用級(jí)別同步客戶機(jī)向用戶提供接口來配置并采用同步功能,因此同步處理表現(xiàn)為客戶軟件中的集成特性。另外,同步處理典型地可呈現(xiàn)自身的、用于配置和控制的用戶接口,該接口與任何特定應(yīng)用無關(guān)。最后,如前所述,同步客戶機(jī)可存在為外部裝置的代理。這種代理處理較少需要用戶接口,并通常(但并非必須)位于軟件堆棧的更高層中。III.保留表示數(shù)據(jù)歷史的元數(shù)據(jù)a.世代計(jì)數(shù)通過保持各數(shù)據(jù)集或數(shù)據(jù)項(xiàng)的數(shù)據(jù)歷史信息可以發(fā)現(xiàn)對(duì)現(xiàn)有技術(shù)的許多問題的解決方案。按照一種簡(jiǎn)單形式,如在一些實(shí)施例中實(shí)踐的,可以保持世代計(jì)數(shù)。具體來說,每當(dāng)數(shù)據(jù)改變時(shí),可以遞增世代計(jì)數(shù)來表示該改變。更加具體來說,可以對(duì)于任何級(jí)別的數(shù)據(jù)集(即,每PIM數(shù)據(jù)庫(kù)、每數(shù)據(jù)類數(shù)據(jù)庫(kù)、每記錄、或每數(shù)據(jù)項(xiàng))保持世代計(jì)數(shù)。世代計(jì)數(shù)可被概念化為元數(shù)據(jù),由此通過任何已知技術(shù)與數(shù)據(jù)相關(guān)聯(lián)。例如,在很多實(shí)施例中,每個(gè)數(shù)據(jù)項(xiàng)地保持世代計(jì)數(shù),并將該世代計(jì)數(shù)與數(shù)據(jù)一起存儲(chǔ)。正如所述,其他實(shí)施例可使用其他技術(shù),例如與數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),或數(shù)據(jù)項(xiàng)的某種集合。在表示歷史的信息與數(shù)據(jù)同步的情況下,使用該表示歷史的信息(例如,世代計(jì)數(shù))的技術(shù)還可得到進(jìn)一步提高。在一些實(shí)施例中,在同步處理期間,可以使世代計(jì)數(shù)同步,由此保持在多個(gè)客戶機(jī)對(duì)端之間的少量的數(shù)據(jù)歷史。作為示例,假設(shè)我們正使用與各數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的世代計(jì)數(shù)使三對(duì)端系統(tǒng)同步。參照?qǐng)D5,示出了一表,其例示了使客戶機(jī)A、客戶機(jī)B和客戶機(jī)C同步的多個(gè)方面。具體來說,標(biāo)記為“步驟”的第一列用于例示性引用,使得我們可以毫無混淆地談及一行動(dòng)作;標(biāo)記為“動(dòng)作”的第二列表示使得數(shù)據(jù)項(xiàng)改變的動(dòng)作;標(biāo)記為“數(shù)據(jù)”的第三列示出了從全知(omniscient)角度出發(fā)的預(yù)期數(shù)據(jù)值;第四、第五和第六列表示從各個(gè)客戶機(jī)A、B和C的角度出發(fā)的、各所列動(dòng)作之后的數(shù)據(jù)狀態(tài)和世代計(jì)數(shù)。隨后參照?qǐng)D5,步驟0,我們看到裝置A、B和C的對(duì)應(yīng)數(shù)據(jù)項(xiàng)為空,對(duì)于該數(shù)據(jù)項(xiàng)沒有動(dòng)作。實(shí)際上,該狀態(tài)可代表空數(shù)據(jù)項(xiàng)或者暫時(shí)不存在數(shù)據(jù)項(xiàng)。參照步驟1,用戶在裝置B上創(chuàng)建數(shù)據(jù),該數(shù)據(jù)為“藍(lán)”。世代計(jì)數(shù)為1(在B狀態(tài)列中示出,并且裝置A和C保持不知曉該改變)。在步驟2,用戶將數(shù)據(jù)從“藍(lán)”編輯為“藍(lán)綠”(顯然,是在裝置B上);世代計(jì)數(shù)增加為2,并且裝置A和C同樣保持不知曉。在步驟3,裝置B與裝置C同步;數(shù)據(jù)的狀態(tài)保持為“藍(lán)綠”,并且裝置B和C兩者都知道正確的數(shù)據(jù)和正確的世代計(jì)數(shù)(2);裝置A保持不知曉。下面,在步驟4,用戶在裝置C上編輯數(shù)據(jù),使得狀態(tài)遞增為紅,正確的數(shù)據(jù)從“藍(lán)綠”變?yōu)椤凹t”。裝置A保持不知曉全部情況,裝置B保持舊數(shù)據(jù)和舊狀態(tài)(2)。接著在步驟5,裝置A和C同步,使得裝置A知曉正確的數(shù)據(jù)和世代計(jì)數(shù)(裝置B保持舊數(shù)據(jù)和舊的世代計(jì)數(shù))。在步驟6,用戶在裝置A上進(jìn)行編輯,將“紅”變?yōu)椤俺取?,并獲得新的最高狀態(tài)(4)。最后,在步驟7,裝置A、B和C全都試圖一起同步。結(jié)果是世代4和橙。然而,需要注意的是,在不攜帶世代計(jì)數(shù)的情況下,這種三向同步可能造成不必要的沖突。b.保持?jǐn)?shù)據(jù)歷史的更豐富的表示實(shí)際上,保持比簡(jiǎn)單的世代計(jì)數(shù)更豐富的歷史表示有重要的用途。例如,在本發(fā)明的很多實(shí)施例中,保持詳細(xì)的歷史數(shù)據(jù)。參照?qǐng)D6,示出了如下的表,該表例示了使用更詳細(xì)的基于每個(gè)數(shù)據(jù)項(xiàng)的歷史使客戶機(jī)A、客戶機(jī)B與客戶機(jī)C同步的多個(gè)方面。具體來說,標(biāo)記為“步驟”的第一列用于例示性引用,使得我們可以毫無混淆地談及一行動(dòng)作;標(biāo)記為“動(dòng)作”的第二列表示使得數(shù)據(jù)項(xiàng)改變的動(dòng)作;標(biāo)記為“數(shù)據(jù)”的第三列示出了從全知角度出發(fā)的預(yù)期數(shù)據(jù)值;第四、第五和第六列表示從各個(gè)客戶機(jī)A、B和C的角度出發(fā)的、各所列動(dòng)作之后的數(shù)據(jù)狀態(tài)和歷史信息。隨后參照?qǐng)D6,步驟0,我們看到裝置A、B和C的對(duì)應(yīng)數(shù)據(jù)項(xiàng)為空,對(duì)于該數(shù)據(jù)項(xiàng)沒有動(dòng)作。實(shí)際上,該狀態(tài)可代表空數(shù)據(jù)項(xiàng)或者暫時(shí)不存在數(shù)據(jù)項(xiàng)。參照步驟1,用戶在裝置B上創(chuàng)建數(shù)據(jù),該數(shù)據(jù)為“藍(lán)”。對(duì)于步驟1事務(wù)的事實(shí)被保留在裝置B上。接著,在步驟2,如所表示的,用戶在裝置B上編輯數(shù)據(jù)。將歷史記錄在裝置B上。在步驟3,裝置B和C被同步,使得該數(shù)據(jù)項(xiàng)的數(shù)據(jù)(藍(lán)綠)以及歷史事實(shí)同步。在下一步驟(4)中,用戶在裝置C上編輯數(shù)據(jù)項(xiàng),將數(shù)據(jù)變?yōu)椤凹t”。然后,當(dāng)在步驟5中裝置A和C同步時(shí),將數(shù)據(jù)項(xiàng)的整個(gè)歷史傳送到裝置A。從該示例我們看到各個(gè)裝置承載數(shù)據(jù)項(xiàng)歷史的全部或一部分。因此,該歷史可被用來進(jìn)行關(guān)于數(shù)據(jù)的智能判定。這種判定的一個(gè)示例是,在明顯沖突的情況下,裝置可確定數(shù)據(jù)項(xiàng)的一個(gè)版本是否為另一版本的祖先。這在很多情況下都是非常有用的,例如在被刪節(jié)數(shù)據(jù)的情況下。在諸如臺(tái)式計(jì)算機(jī)的大型裝置與諸如電話的小型裝置同步時(shí)可能出現(xiàn)被刪節(jié)的數(shù)據(jù)。如果電話不足以攜帶全部數(shù)據(jù)項(xiàng)(或諸如記錄的集合的全部),則對(duì)來自臺(tái)式計(jì)算機(jī)的數(shù)據(jù)進(jìn)行刪節(jié)以便包含在電話數(shù)據(jù)庫(kù)中。之后,電話可與諸如PDA的其他裝置同步并傳送被刪節(jié)的數(shù)據(jù)。如果PDA和臺(tái)式機(jī)試圖隨后同步,則它們將遇到僅特定歷史數(shù)據(jù)可解決的沖突。c.基于歷史的同步的實(shí)例平臺(tái)我們已經(jīng)總體討論了使用基于歷史的元數(shù)據(jù)來改善或提高同步技術(shù)。出于例示的目的,我們將討論將這些技術(shù)置于構(gòu)造環(huán)境中的一些發(fā)明實(shí)施例實(shí)例。這些發(fā)明實(shí)施例的一個(gè)優(yōu)點(diǎn)在于,它們?cè)谙惹巴街蟛槐匾髮?duì)數(shù)據(jù)快照的獨(dú)立保持。更具體地并如前所述,很多現(xiàn)有同步系統(tǒng)在各同步之后保留數(shù)據(jù)快照。該快照必須與用戶編輯無關(guān)地被保持,這是因?yàn)樵摽煺毡挥糜谠谙乱煌狡陂g確定添加、改變或刪除了什么數(shù)據(jù)。相比之下,本發(fā)明的很多實(shí)施例不要求對(duì)這種快照進(jìn)行持久保持。具體來說,如果系統(tǒng)動(dòng)態(tài)地更新數(shù)據(jù)項(xiàng)的歷史信息和對(duì)應(yīng)元數(shù)據(jù),則無需單獨(dú)的快照。這可能是因?yàn)闅v史數(shù)據(jù)提供了另選的且更全面的方法來確定什么數(shù)據(jù)確實(shí)是新的。另選的,本發(fā)明的一些實(shí)施例僅通過恰在同步之前生成快照并在完成同步之后除去該快照,就可避免保持持久快照。下面參照?qǐng)D7C,示出了同步客戶機(jī)裝置790。在裝置790內(nèi),示出了可用來實(shí)現(xiàn)本發(fā)明實(shí)施例的可能數(shù)據(jù)結(jié)構(gòu)的概念化。數(shù)據(jù)結(jié)構(gòu)可存儲(chǔ)在可訪問客戶機(jī)裝置的任何適當(dāng)?shù)胤健H缜八?,一些示例為SRAM、DRAM、磁或光存儲(chǔ)器。不必將數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在同一存儲(chǔ)器類型或地方中。下面參照裝置790,數(shù)據(jù)存儲(chǔ)裝置791旨在代表用于與用戶界面交互的活動(dòng)數(shù)據(jù)庫(kù)?,F(xiàn)有技術(shù)中有很多方式來實(shí)現(xiàn)這種結(jié)構(gòu)。這些實(shí)現(xiàn)可以是在單個(gè)文件或多個(gè)文件中。文件可以是平面表(flattable)、湯型(soup-type)文件或組合,或者適合的其他類型文件。例如,在PIM數(shù)據(jù)的情況下,對(duì)于由相關(guān)聯(lián)的PIM程序管理的各數(shù)據(jù)類,通常存在獨(dú)立的湯文件或平面文件。在任意這些事件中,數(shù)據(jù)存儲(chǔ)裝置791保持實(shí)際數(shù)據(jù)和一些元數(shù)據(jù)。元數(shù)據(jù)數(shù)據(jù)可如同ID碼一樣小,或者如同數(shù)據(jù)的整個(gè)歷史一樣多。使用術(shù)語“元數(shù)據(jù)”并不旨在排除使用該數(shù)據(jù)來使用戶訪問或操縱。在一些實(shí)施例中,在數(shù)據(jù)存儲(chǔ)裝置791中伴隨數(shù)據(jù)項(xiàng)的元數(shù)據(jù)是狀態(tài)標(biāo)識(shí),可選地為數(shù)據(jù)項(xiàng)ID。歷史存儲(chǔ)裝置792旨在代表用于保持關(guān)于數(shù)據(jù)存儲(chǔ)裝置791中的數(shù)據(jù)集或數(shù)據(jù)項(xiàng)的歷史信息的數(shù)據(jù)結(jié)構(gòu)。該歷史信息可為與本文的討論一致的任何形式。另外,名稱“歷史信息”并不旨在排除使用為非相關(guān)歷史的信息。歷史信息可包括在所公開技術(shù)下有用的任何元數(shù)據(jù)。此外,歷史信息可以與使用諸如ID碼的任何適當(dāng)技術(shù)的數(shù)據(jù)項(xiàng)、虛擬或物理位置,或者諸如表或數(shù)據(jù)庫(kù)的單獨(dú)存儲(chǔ)的關(guān)聯(lián)裝置相關(guān)聯(lián)。在一些實(shí)施例中,歷史存儲(chǔ)裝置中的信息與使用狀態(tài)標(biāo)識(shí)和/或數(shù)據(jù)項(xiàng)ID的數(shù)據(jù)集或數(shù)據(jù)項(xiàng)相關(guān)聯(lián)。更具體來說,在一些實(shí)施例中,數(shù)據(jù)項(xiàng)與狀態(tài)(例如,作為元數(shù)據(jù)保持在數(shù)據(jù)存儲(chǔ)裝置791中)相關(guān)聯(lián)。在這些實(shí)施例中的一些實(shí)施例中,很多數(shù)據(jù)項(xiàng)可具有相同的狀態(tài)。通過使用歷史存儲(chǔ)裝置792中的對(duì)應(yīng)狀態(tài)ID,使歷史信息與狀態(tài)0相關(guān)聯(lián)。例如,在一些實(shí)施例中,裝置A的用戶可以在其他空數(shù)據(jù)存儲(chǔ)裝置中創(chuàng)建10(或者甚至10,000)個(gè)數(shù)據(jù)項(xiàng)。所添加的數(shù)據(jù)項(xiàng)可以僅代表單個(gè)狀態(tài)——與由用戶在裝置A上所編輯的數(shù)據(jù)的歷史信息一起的狀態(tài)的ID。進(jìn)一步以此為例,如果裝置A的用戶要編輯10個(gè)所創(chuàng)建數(shù)據(jù)項(xiàng)中的三個(gè),則第二狀態(tài)將被反映在歷史存儲(chǔ)裝置792中,以反映這三個(gè)數(shù)據(jù)項(xiàng)的歷史。(它們例如處于狀態(tài),而未編輯的7項(xiàng)將處于狀態(tài)1。)下面移向快照793,其代表可用于所述全部或一部分?jǐn)?shù)據(jù)存儲(chǔ)裝置的暫時(shí)快照的數(shù)據(jù)結(jié)構(gòu)。如先前所述,一些實(shí)施例可在同步期間或同步之前采用獨(dú)立的快照。正如先前針對(duì)數(shù)據(jù)存儲(chǔ)裝置791所述,歷史存儲(chǔ)裝置792和快照793對(duì)于關(guān)于數(shù)據(jù)結(jié)構(gòu)和物理存儲(chǔ)器的實(shí)現(xiàn)都是靈活的。此外,數(shù)據(jù)存儲(chǔ)裝置791、歷史存儲(chǔ)裝置792以及快照793可按相同的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn);或者按照三個(gè)單獨(dú)數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn);或者按照一個(gè)或更多個(gè)數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn);或者按照上述的任意組合來實(shí)現(xiàn)。IV.基于狀態(tài)的同步如先前所述,本發(fā)明的許多實(shí)施例采用基于狀態(tài)的同步技術(shù),利用該技術(shù)將狀態(tài)標(biāo)識(shí)與各數(shù)據(jù)項(xiàng)或數(shù)據(jù)集相關(guān)聯(lián)。在這些實(shí)施例中,數(shù)據(jù)存儲(chǔ)裝置中表示的狀態(tài)也被表示在歷史存儲(chǔ)裝置中。在歷史存儲(chǔ)裝置內(nèi),狀態(tài)與關(guān)于數(shù)據(jù)項(xiàng)的事實(shí)(這些事實(shí)包括但并不限于關(guān)于數(shù)據(jù)項(xiàng)的歷史的事實(shí))相關(guān)聯(lián)。在多對(duì)端系統(tǒng)中,各客戶機(jī)裝置保持?jǐn)?shù)據(jù)存儲(chǔ)裝置和/或歷史存儲(chǔ)裝置。當(dāng)在特定裝置上添加或編輯(包括刪除)數(shù)據(jù)項(xiàng)時(shí),向該數(shù)據(jù)項(xiàng)分配新的狀態(tài),并在歷史空間中進(jìn)行可能的輸入以反映該項(xiàng)的狀態(tài)改變。歷史空間中的輸入僅為“可能的”的原因在于,所添加或編輯的數(shù)據(jù)項(xiàng)的新狀態(tài)可能已經(jīng)通過結(jié)合另一數(shù)據(jù)項(xiàng)的狀態(tài)改變而創(chuàng)建的敘述反映在歷史存儲(chǔ)裝置中了。因此顯然,歷史存儲(chǔ)裝置中的狀態(tài)及其一起的元數(shù)據(jù)可同時(shí)應(yīng)用于若干數(shù)據(jù)項(xiàng)。此外,在這些實(shí)施例中期望使歷史存儲(chǔ)裝置中的信息量最小化。a.通用同步示例假設(shè)對(duì)端同步客戶機(jī)如上所述進(jìn)行工作,最終可能期望使這些同步客戶機(jī)中的任意兩個(gè)同步。在一些實(shí)施例中,按照非對(duì)稱方式執(zhí)行同步。具體來說,第一裝置使其數(shù)據(jù)存儲(chǔ)裝置與第二裝置同步,接著第二裝置可能單獨(dú)地使其數(shù)據(jù)存儲(chǔ)裝置與第一裝置同步。對(duì)于很多實(shí)施例,實(shí)際同步處理包括圖7A中示出的兩個(gè)極為通用的步驟。第一步驟701是使歷史存儲(chǔ)裝置中的信息(例如,描述數(shù)據(jù)項(xiàng)的狀態(tài)改變的元數(shù)據(jù))同步。第二步驟702是使數(shù)據(jù)存儲(chǔ)裝置中的數(shù)據(jù)項(xiàng)同步。因?yàn)槭紫仁箽v史信息同步,所以可使用歷史存儲(chǔ)裝置中的新歷史信息來輔助數(shù)據(jù)存儲(chǔ)裝置的同步。通常,可按照若干不同方式來使歷史信息同步。參照?qǐng)D7B,示出了執(zhí)行從裝置704到裝置703的單向同步的一對(duì)裝置。可能使歷史項(xiàng)同步的最簡(jiǎn)單的方式是將全部歷史項(xiàng)從裝置704傳送至裝置703。可在裝置703上評(píng)估所傳送的歷史項(xiàng),來確定這些項(xiàng)中的哪些項(xiàng)要求歷史存儲(chǔ)裝置705中的表示。用于使歷史信息同步的另一技術(shù)是使裝置704和703通過任何適當(dāng)通信機(jī)制(例如,無線鏈接708)輸入對(duì)話。按照一種對(duì)話方式,裝置703可向裝置704查詢關(guān)于裝置704的歷史信息的內(nèi)容或關(guān)于該歷史信息的事實(shí)。響應(yīng)于這些查詢,裝置703接著在存儲(chǔ)器705中創(chuàng)建必要的歷史信息,或者請(qǐng)求來自裝置704的必要信息并將其置于存儲(chǔ)器705中。按照另一種對(duì)話方式,裝置704可關(guān)于存儲(chǔ)器705中的歷史信息向裝置703進(jìn)行查詢。接著裝置704可確定并發(fā)送(如果有的話)裝置703所要求的歷史信息。用于使歷史信息同步的第三種技術(shù)是對(duì)歷史信息遞歸地采用基于狀態(tài)的同步技術(shù)。參照?qǐng)D8,示出了執(zhí)行從裝置802到裝置801的單向同步的一對(duì)裝置。如圖8所示,對(duì)基于狀態(tài)的同步的遞歸使用可能要求多個(gè)歷史存儲(chǔ)裝置。裝置801具有主歷史存儲(chǔ)裝置805、次級(jí)歷史存儲(chǔ)裝置804以及三級(jí)歷史存儲(chǔ)裝置803。裝置802具有主歷史存儲(chǔ)裝置809、次級(jí)歷史存儲(chǔ)裝置808以及三級(jí)歷史存儲(chǔ)裝置807。正如針對(duì)其他數(shù)據(jù)結(jié)構(gòu)所述的,各裝置上的歷史存儲(chǔ)裝置可以任意類型的存儲(chǔ)器存在,并可實(shí)現(xiàn)為一種或若干種各種類型的數(shù)據(jù)結(jié)構(gòu)。為了執(zhí)行遞歸的基于狀態(tài)的同步,向主歷史存儲(chǔ)裝置805或809中的各元素(例如,事實(shí)敘述或事實(shí)敘述組)分配一狀態(tài);這種狀態(tài)還(在次級(jí)歷史存儲(chǔ)裝置804或808中)與關(guān)于對(duì)于主歷史存儲(chǔ)裝置805和809中的元素所發(fā)生的狀態(tài)改變的信息相關(guān)聯(lián)。這是用于保持主元數(shù)據(jù)的次級(jí)元數(shù)據(jù)。當(dāng)然,可以遞歸地多次嵌套該技術(shù),所述次數(shù)如效率所指示的。例如,三級(jí)歷史存儲(chǔ)裝置803和807可攜帶三級(jí)元數(shù)據(jù)來輔助對(duì)歷史存儲(chǔ)裝置804和808中的次級(jí)元數(shù)據(jù)的同步。當(dāng)利用被嵌套的歷史存儲(chǔ)裝置來同步一實(shí)現(xiàn)時(shí),同步的順序可能與歷史存儲(chǔ)裝置的分級(jí)相反。例如,如果采用圖8中的全部歷史存儲(chǔ)裝置,則可首先使三級(jí)對(duì)803和807同步。然后使用該同步的結(jié)果來輔助對(duì)次級(jí)歷史存儲(chǔ)裝置804和808的同步,繼而使用次級(jí)歷史存儲(chǔ)裝置804和808的同步結(jié)果輔助對(duì)主歷史存儲(chǔ)裝置805和809的同步。一旦歷史信息已被同步,就本地地知道遠(yuǎn)程數(shù)據(jù)的全部元數(shù)據(jù)狀態(tài)。這樣,數(shù)據(jù)存儲(chǔ)裝置同步可以開始于新歷史信息的可能輔助。參照?qǐng)D8和圖9,通用處理可以如下。在步驟901,一些實(shí)施例可比較來自本地裝置801和遠(yuǎn)程裝置802的對(duì)應(yīng)數(shù)據(jù)項(xiàng)。在這些實(shí)施例中,如果判定902確定數(shù)據(jù)項(xiàng)相同,則步驟903指示不必對(duì)本地?cái)?shù)據(jù)進(jìn)行動(dòng)作,并且我們準(zhǔn)備下一數(shù)據(jù)。如果在步驟902中確定數(shù)據(jù)不相同,則控制移至步驟904來比較狀態(tài)。需要注意的是,很多實(shí)施例將略去步驟901和902,因此通過對(duì)于所關(guān)注數(shù)據(jù),比較本地狀態(tài)和遠(yuǎn)程狀態(tài),來在步驟904開始該例示的處理。如果判定905確定狀態(tài)不同,則控制進(jìn)行到判定907來確定本地狀態(tài)是否為遠(yuǎn)程狀態(tài)的祖先。如果判定907為是,則這表示本地?cái)?shù)據(jù)是舊的,并且應(yīng)當(dāng)更新本地?cái)?shù)據(jù)來反映遠(yuǎn)程數(shù)據(jù)的值。如果判定907確定為否,則控制移至判定909來確定遠(yuǎn)程狀態(tài)是否為本地狀態(tài)的祖先。如果步驟909處的判定為是,則我們確認(rèn)本地狀態(tài)是最新的,并且控制進(jìn)行到對(duì)于下一數(shù)據(jù)項(xiàng)的步驟911。如果判定909為否,則控制進(jìn)行到步驟910,并且產(chǎn)生沖突。有很多可能機(jī)制來解決沖突。在一些實(shí)施例中,呈現(xiàn)用戶界面,使得用戶可以在沖突的數(shù)據(jù)項(xiàng)之間進(jìn)行選擇。不同的實(shí)施例可在此時(shí)顯示一些元數(shù)據(jù)來輔助用戶。一些可能有用的元數(shù)據(jù)可以是各數(shù)據(jù)項(xiàng)的歷史,包括數(shù)據(jù)操縱中涉及的時(shí)間、裝置以及用戶(如果可用)。該元數(shù)據(jù)可攜帶在歷史存儲(chǔ)裝置、數(shù)據(jù)存儲(chǔ)裝置中或其他地方。然而,如果在歷史存儲(chǔ)裝置中攜帶有針對(duì)特定項(xiàng)的元數(shù)據(jù),則將趨向于造成大量歷史敘述。雖然本領(lǐng)域技術(shù)人員無需提示就可理解,但是應(yīng)當(dāng)注意的是,針對(duì)圖9所描述的處理可應(yīng)用于被同步的世代計(jì)數(shù),然而可能更有可能發(fā)生沖突。b.歷史敘述的可擴(kuò)展語義語言我們?cè)敿?xì)地討論了使用歷史和歷史敘述。下面我們將討論用作歷史信息的信息示例類型。在形成歷史敘述的語義時(shí),很多實(shí)施例要求使其自身適于機(jī)器使用的語法。因此,在這些實(shí)施例中,可使用源代碼類型格式來提供計(jì)算機(jī)讀取和/或編譯。一些實(shí)施例采用以下的通用語法新狀態(tài)、功能/命令、客戶機(jī)、舊狀態(tài)“新狀態(tài)”是在本地裝置上分配的狀態(tài)標(biāo)識(shí)。“舊狀態(tài)”反映以本地狀態(tài)表示的數(shù)據(jù)的先前狀態(tài)。對(duì)于給定的歷史敘述,新狀態(tài)和舊狀態(tài)兩者都可用來跟蹤世系,如先前所述在同步期間是必要的。不必按照遞增順序來分配狀態(tài)標(biāo)識(shí)。這些標(biāo)識(shí)僅需要對(duì)其采用的環(huán)境是唯一的。例如,在很多實(shí)施例中,狀態(tài)標(biāo)識(shí)可對(duì)于每個(gè)客戶機(jī)裝置是唯一的,這是因?yàn)樵谠撗b置中僅有單個(gè)歷史存儲(chǔ)裝置。然而,就可單獨(dú)保持對(duì)于一些數(shù)據(jù)類的數(shù)據(jù)和元數(shù)據(jù)來說,狀態(tài)標(biāo)識(shí)則僅需要對(duì)于數(shù)據(jù)類/同步客戶機(jī)組合是唯一的。另外,在一些實(shí)施例中,狀態(tài)是永恒的,即一旦創(chuàng)建就不變。當(dāng)然,對(duì)這些實(shí)施例來說,避免創(chuàng)建不必要的新狀態(tài)以及清除被確定為永遠(yuǎn)無用的狀態(tài)是更為重要的。在我們的通用語法中,“客戶機(jī)”是在歷史敘述所反映的改變中所涉及的同步客戶機(jī)的標(biāo)識(shí)。在一些實(shí)施例中,客戶機(jī)標(biāo)識(shí)是必須的,以準(zhǔn)確地跟蹤世系并將沖突限定到那些真實(shí)的沖突。在我們的通用語法中,“功能/命令”僅僅是表示狀態(tài)改變的特性的詞(通常為動(dòng)詞)。在本應(yīng)用中,發(fā)明人構(gòu)想了用在各種實(shí)施例中的若干功能。這些功能如下命令“外部”可用來建立本地與遠(yuǎn)程客戶機(jī)之間的對(duì)應(yīng)。例如,敘述{12,外部,家用機(jī),34}表示本地機(jī)上的狀態(tài)12對(duì)應(yīng)于“家用機(jī)”同步客戶機(jī)上的狀態(tài)34。這在同步過程中是非常有用的,因?yàn)樵谒枋龅谋容^操作期間,如果遠(yuǎn)程的數(shù)據(jù)項(xiàng)為狀態(tài)34且本地狀態(tài)為12,則我們知道狀態(tài)是一樣的。命令“用戶編輯”可用來表示用戶改變了數(shù)據(jù)。例如,{17,用戶編輯,“客戶機(jī)B”,14}表示客戶機(jī)B的用戶將數(shù)據(jù)編輯為狀態(tài)14,而在本地裝置中,經(jīng)編輯數(shù)據(jù)的狀態(tài)為狀態(tài)17。當(dāng)然,客戶機(jī)B可以是本地客戶機(jī),在這種情況下該敘述反映本地?cái)?shù)據(jù)改變。命令“沖突解決”可用來表示沖突解決的結(jié)果。例如,{101,沖突解決,家用機(jī),37,38}表示和狀態(tài)37相關(guān)聯(lián)的數(shù)據(jù)被發(fā)現(xiàn)與和狀態(tài)38相關(guān)聯(lián)的數(shù)據(jù)沖突;并且表示在家用機(jī)上解決了該沖突;在本地狀態(tài)101中表示了該解決。沖突狀態(tài)的順序可用來表示更多信息,諸如獲贏狀態(tài)和輸?shù)魻顟B(tài)(如,獲贏狀態(tài),輸?shù)魻顟B(tài))。對(duì)于以上示例,優(yōu)選實(shí)施例按照該順序列出了獲贏狀態(tài)和輸?shù)魻顟B(tài)。正如先前所討論的,有多種技術(shù)用來解決沖突,諸如提供用戶界面以接收用戶決定。命令“已知相等”用來表示兩個(gè)對(duì)應(yīng)數(shù)據(jù)項(xiàng)被發(fā)現(xiàn)是相等的。為清晰起見,我們參照被視為數(shù)據(jù)而非該數(shù)據(jù)的元數(shù)據(jù)(諸如狀態(tài)標(biāo)識(shí))的內(nèi)容。這種類型的發(fā)現(xiàn)可出現(xiàn)在先前所述的比較操作期間。例如,{100,已知相等,家用機(jī),37,38}表示狀態(tài)為37和38的數(shù)據(jù)項(xiàng)被發(fā)現(xiàn)在同步客戶家用機(jī)上是相等的,并且創(chuàng)建了新的本地狀態(tài)100來反映該發(fā)現(xiàn)。再次說明,舊狀態(tài)的順序可以(但并非必須)用來通過提供該功能的語法(例如,指定“本地狀態(tài),遠(yuǎn)程狀態(tài)”)以傳送更多信息。命令“刪節(jié)”用來表示出于某種原因(諸如先前所述)已刪節(jié)了數(shù)據(jù)項(xiàng)。例如,{69,刪節(jié),辦公機(jī),68}表示狀態(tài)為68的遠(yuǎn)程數(shù)據(jù)項(xiàng)在狀態(tài)為68的辦公機(jī)上被刪節(jié),并與本地裝置上的狀態(tài)69相關(guān)聯(lián)。命令“刪除”表示刪除了數(shù)據(jù)項(xiàng)。例如,{27,刪除,PDA,26}表示在同步客戶PDA上刪除了狀態(tài)為26的數(shù)據(jù)項(xiàng),并且本地地創(chuàng)建了狀態(tài)27來反映該事實(shí)。命令“軟刪除”用來表示由于除用戶刪除之外的一些事情(例如,裝置的最大容量)而刪除的數(shù)據(jù)項(xiàng)。例如,{17,軟刪除,電話A,16}表示在同步客戶電話A上軟刪除了狀態(tài)為16的數(shù)據(jù)項(xiàng),并且本地狀態(tài)17用來反映該事實(shí)?!暗韧瑺顟B(tài)”命令用來記錄兩個(gè)狀態(tài)是副本的事實(shí)。盡管大部分實(shí)施例應(yīng)被設(shè)計(jì)為不允許副本狀態(tài),但是在設(shè)計(jì)較差的系統(tǒng)中或者由于訛誤(corruption)或其他未計(jì)劃的問題還是可能出現(xiàn)副本狀態(tài)。然而,當(dāng)發(fā)現(xiàn)這種狀態(tài)時(shí)可將其記錄下來。例如,{38,等同狀態(tài),家用機(jī),101,22}表示本地狀態(tài)101和22是等同的,并且表示在同步客戶家用機(jī)上發(fā)現(xiàn)了該事實(shí)。狀態(tài)38被用來記錄該事實(shí),并且可能用來稍后將其清除。命令“使用中”表示在裝置的數(shù)據(jù)存儲(chǔ)裝置中狀態(tài)處于使用中。例如,{0,使用中,家用機(jī),3,5,11,2526}表示同步客戶家用機(jī)的數(shù)據(jù)存儲(chǔ)裝置中存在的數(shù)據(jù)項(xiàng)全都對(duì)應(yīng)于狀態(tài)3,5,11,25或26中的一個(gè)。在很多實(shí)施例中,“0”用作使用中命令敘述的主題(subject)狀態(tài)。在這些實(shí)施例中,“0”僅用來保持利用其他歷史敘述的語法。在功能方面,無需新的狀態(tài)來記錄使用中的當(dāng)前狀態(tài)。此外,在一些實(shí)施例中,使用中命令主要用于被稱作無用數(shù)據(jù)收集(稍后對(duì)其進(jìn)行描述)的處理。最后,在一些實(shí)施例中,使用中命令將攜帶表示其生成日期的世代計(jì)數(shù)。在一個(gè)或更多個(gè)實(shí)施例中,所示世代計(jì)數(shù)置于緊跟在客戶機(jī)名稱之后的方括號(hào)中,如下{0,使用中,家用機(jī)[1],3,5,11,2526}。這里描述的命令并不旨在通過其名稱或功能而進(jìn)行窮舉。例如,代替“已知相等”,通過被稱為“相同數(shù)據(jù)”的命令或程序員希望的任何其他命令可實(shí)現(xiàn)相同的功能。另外,這里提供的實(shí)例命令旨在例示可能有用的命令類型。各種實(shí)施例可采用這些命令的子集或者甚至超集。具體來說,很多實(shí)施例是用于系統(tǒng)的擴(kuò)展。具體來說,一旦建立,就可(利用其他的軟件)升級(jí)系統(tǒng),以在不破壞遺傳數(shù)據(jù)或遺傳歷史信息的情況下包括其他命令。例如,可以替代可執(zhí)行態(tài)或庫(kù)或它們兩者來添加新的命令和功能。新的庫(kù)或可執(zhí)行態(tài)可能能夠解析新命令以及舊命令。這允許銷售商在不破壞數(shù)據(jù)或不必重新處理全部數(shù)據(jù)或歷史信息的情況下增強(qiáng)或增加特征集。c.實(shí)例圖10是根據(jù)編寫為用來示范和測(cè)試本發(fā)明的一些實(shí)施例的程序而創(chuàng)建的實(shí)例集。盡管程序還處于開發(fā)中,但是這些示例例示了使用先前例示的句法語言創(chuàng)建歷史敘述。為了引用以及更具體地公開,附上示范程序的源代碼作為對(duì)其的展示。參照?qǐng)D10A,示出了用于具體實(shí)施一個(gè)或更多個(gè)數(shù)據(jù)項(xiàng)的對(duì)象1001(可按照兩種方式來看該對(duì)象將其看作通過改變形狀或內(nèi)部字母來改變其值的一個(gè)數(shù)據(jù)項(xiàng);或者將其看作具體實(shí)施由形狀和內(nèi)部字母可視地表示的兩個(gè)數(shù)據(jù)項(xiàng)的數(shù)據(jù)集)。對(duì)象1001上反映的編號(hào)“1”代表數(shù)據(jù)的狀態(tài)。向創(chuàng)建的對(duì)象,諸如對(duì)象1001,分配一狀態(tài)(“1”)。將數(shù)據(jù)和狀態(tài)標(biāo)識(shí)(“1”)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)裝置中,并在歷史存儲(chǔ)裝置中創(chuàng)建歷史敘述1002。在這種情況下,歷史敘述1002表示通過用戶編輯數(shù)據(jù)項(xiàng)1001從狀態(tài)0到狀態(tài)1的轉(zhuǎn)變。顯然,一些實(shí)施例使用狀態(tài)0來表示沒有信息是已知的。下面參照?qǐng)D10B,示出了對(duì)圖10A的繼續(xù)表示。情況發(fā)生了改變,添加了四個(gè)對(duì)象(1003至1006)。注意,因?yàn)橥ㄟ^單個(gè)敘述(用戶編輯以從狀態(tài)0轉(zhuǎn)變到狀態(tài)1)來描述全部五個(gè)對(duì)象,所以無需新的歷史敘述。下面參照?qǐng)D10C,示出了對(duì)圖10B的繼續(xù)表示。情況發(fā)生了改變,其中對(duì)象1001從橢圓形變?yōu)榱司匦?。該?shù)據(jù)項(xiàng)改變反映在了歷史存儲(chǔ)裝置中的行1007中,這表明用戶編輯造成從狀態(tài)1到狀態(tài)2的轉(zhuǎn)變。所有其他對(duì)象都保持在狀態(tài)1。下面參照?qǐng)D10D,示出了對(duì)圖10C的繼續(xù)表示。情況發(fā)生了改變,其中對(duì)象1005改變了形狀并移至狀態(tài)2。這反映在歷史存儲(chǔ)裝置中的行1007中。注意,行1007現(xiàn)在反映對(duì)于兩個(gè)對(duì)象1001和1005的相同轉(zhuǎn)變。類似的,我們將編輯剩余三個(gè)對(duì)象,并且將不創(chuàng)建新的狀態(tài),這是因?yàn)閮蓚€(gè)所列狀態(tài)將描述對(duì)于全部已有對(duì)象從狀態(tài)0到狀態(tài)2的轉(zhuǎn)變。下面參照?qǐng)D11A,示出了根據(jù)前述示范程序的圖形用戶界面。UI具有兩個(gè)窗口1101和1102,表示由程序仿真的客戶裝置“未命名”和“未命名2”(裝置名稱在各窗口的頂部)。圖11A示出了裝置“未命名”1101在其數(shù)據(jù)庫(kù)中具有單個(gè)對(duì)象1103,而在其歷史存儲(chǔ)裝置中具有單個(gè)對(duì)應(yīng)的歷史敘述1110。下面參照?qǐng)D11B,示出了對(duì)圖11A的繼續(xù)表示。情況發(fā)生了改變,其中,裝置1102執(zhí)行了從裝置1101的單向同步。我們看到該同步使得裝置1102將相同的對(duì)象置于其歷史存儲(chǔ)裝置中。另外,歷史敘述1120至1122反映了先前所討論的功能。具體來說,使用中命令1120告訴我們狀態(tài)1是裝置1102的數(shù)據(jù)存儲(chǔ)裝置中的唯一使用狀態(tài)。外部命令1121反映了本地狀態(tài)1對(duì)應(yīng)于遠(yuǎn)程狀態(tài)1(其被本地地表示為狀態(tài)1)。用戶編輯命令1122反映了在裝置“未命名”1101上從狀態(tài)0來編輯對(duì)象1130。下面參照?qǐng)D11C,示出了對(duì)圖11B的繼續(xù)表示。情況發(fā)生了改變,其中裝置1101執(zhí)行了從裝置1102的單向同步。我們看到數(shù)據(jù)存儲(chǔ)裝置未改變,即,對(duì)象1103和1130保持相同,并且是它們各自裝置中的唯一對(duì)象。然而,在同步歷史存儲(chǔ)裝置時(shí),我們看到向裝置1101(其在同步的接收側(cè)上)的歷史存儲(chǔ)裝置添加了三個(gè)敘述。具體來說,行1111至1113是新的,并是根據(jù)先前的定義描述來實(shí)現(xiàn)的。行1111和1113中使用的使用中命令反映了各裝置上的數(shù)據(jù)庫(kù)中所使用的狀態(tài)。外部命令1112反映了本地狀態(tài)1等同于裝置“未命名2”1102中的狀態(tài)1。d.使歷史信息同步的更具體示例已經(jīng)總體地討論了同步歷史敘述,下面我們將提出使用該所引入的示例歷史敘述的示例性同步技術(shù)。在使歷史敘述同步時(shí),很多實(shí)施例將在每次單向同步。因此,參照?qǐng)D7B,如果我們?cè)噲D在裝置704與裝置703之間執(zhí)行對(duì)歷史信息的雙向同步,則我們可能(i)首先將裝置704的信息并入裝置703中,并且(ii)其次,將裝置703的信息并入裝置704中。當(dāng)然,也可采用逆序。然而,由于這些實(shí)施例通過多次采用單向同步技術(shù)來執(zhí)行雙向同步,所以我們將討論單向同步。參照?qǐng)D12,為了進(jìn)行例示,假設(shè)我們使名為“Alpha”和“Beta”的兩個(gè)裝置中的歷史信息同步。在該示例中,裝置Alpha為本地目標(biāo)客戶機(jī),而裝置Beta為遠(yuǎn)程資源客戶機(jī)。該示例的效果在于將Beta的歷史敘述并入Alpha中(即,在該處理期間,Beta的歷史存儲(chǔ)裝置為只讀的)。概念上,該同步僅僅是確保Beta中的全部狀態(tài)具有與Alpha中的對(duì)應(yīng)狀態(tài)的處理。這是通過在Alpha中創(chuàng)建新的狀態(tài)以與Beta(當(dāng)前對(duì)其沒有對(duì)應(yīng)狀態(tài))中的任何狀態(tài)相對(duì)應(yīng)來實(shí)現(xiàn)的。實(shí)際上,當(dāng)Beta狀態(tài)被標(biāo)識(shí)為并入Alpha時(shí),相關(guān)聯(lián)的歷史敘述(Beta中)被轉(zhuǎn)譯為本地使用并被添加到Alpha的歷史存儲(chǔ)裝置中??舍槍?duì)圖12B中的流程圖來使該通用處理概念化。參照?qǐng)D12B,第一步驟1201用來考慮Beta歷史存儲(chǔ)裝置中表示的歷史敘述。接著,在判定步驟1202,我們必須確定所查歷史敘述是否已經(jīng)反映在Alpha的歷史存儲(chǔ)裝置中。通常,該確定涉及是存在等同歷史敘述還是相同的信息以某種方式另外存在于Alpha歷史存儲(chǔ)裝置中。如果確定1202為是,則對(duì)于該狀態(tài)/歷史敘述的處理結(jié)束。如果在Alpha中沒有發(fā)現(xiàn)對(duì)應(yīng)狀態(tài),則處理移至干路1204,其中所關(guān)注的Beta敘述轉(zhuǎn)譯為Alpha中的本地使用。在步驟1205中,將本地化的敘述插入到Alpha歷史存儲(chǔ)裝置或臨時(shí)保持的映射表中。e.對(duì)歷史的五步同步用于將遠(yuǎn)程歷史存儲(chǔ)裝置中的歷史敘述同步到本地歷史存儲(chǔ)裝置中的同步處理可按照如下僅三個(gè)步驟來清楚地表示(i)創(chuàng)建新的本地狀態(tài)以響應(yīng)于全部遠(yuǎn)程狀態(tài)(使用外部或等同狀態(tài)類型命令);(ii)將全部遠(yuǎn)程歷史敘述轉(zhuǎn)譯為本地歷史敘述,并將其置于本地存儲(chǔ)器中(步驟(i)確保存在全部必要狀態(tài)),并轉(zhuǎn)換全部遠(yuǎn)程歷史敘述;以及(iii)試圖消除本地存儲(chǔ)器中的副本。然而在一些實(shí)施例中,當(dāng)與略微復(fù)雜的五步歷史敘述同步相比時(shí),該三步處理效率較低。我們將五個(gè)步驟討論為五遍(pass)通過目標(biāo)(如,Beta歷史存儲(chǔ)裝置)。每遍都被設(shè)計(jì)為提供不同類型的歷史敘述或不同的情形。因此,每遍可創(chuàng)建新的歷史敘述以并入Alpha歷史存儲(chǔ)裝置中。然而,在開始實(shí)質(zhì)工作之前,必須在工作環(huán)境下進(jìn)行后勤供應(yīng)(logisticalprovision)。例如,在公共計(jì)算環(huán)境下,可分配存儲(chǔ)器,并可創(chuàng)建映射表或類似的數(shù)據(jù)結(jié)構(gòu)。隨著這些敘述的列表的增長(zhǎng)或隨著所述五遍而發(fā)生改變,這種“映射表”可用來保持新的Alpha的新歷史敘述。另外,表或類似結(jié)構(gòu)可用來保持與Alpha的新歷史敘述相對(duì)應(yīng)的信息,例如數(shù)據(jù)、其他元數(shù)據(jù)或Beta源歷史敘述。在第一遍中,我們考察所有基于“外部”命令的歷史敘述,并將其轉(zhuǎn)譯到源(Beta)歷史存儲(chǔ)裝置中。因此,在一些實(shí)施例中,對(duì)于Beta歷史存儲(chǔ)裝置中的每個(gè)基于“外部”的歷史敘述(或其快照),我們將確保我們?cè)贏lpha中具有對(duì)應(yīng)的狀態(tài)關(guān)聯(lián)。例如,參照?qǐng)D12,行1,如果存在Beta中所反映的五個(gè)基于“外部”的狀態(tài),B1至B5,則我們進(jìn)行檢查以確保我們?cè)贏lpha中具有“外部”命令,其針對(duì)5個(gè)狀態(tài)B1至B5中的每一個(gè)在Alpha中建立了等同狀態(tài)。假設(shè)我們?cè)贏lpha歷史存儲(chǔ)裝置中僅發(fā)現(xiàn)了使用先前描述的命令術(shù)語的B1至B3,這些敘述可表現(xiàn)為A1,外部,beta,B1A2,外部,beta,B2A3,外部,beta,B3。在我們的示例中,因?yàn)槲覀儼l(fā)現(xiàn)沒有B4和B5的“外部”對(duì)應(yīng),所以我們可創(chuàng)建這些狀態(tài)的敘述,并將它們置于我們的表中。參照?qǐng)D12,實(shí)例新敘述出現(xiàn)在行1,“裝置Alpha”列中。如圖12所見,我們正在創(chuàng)建將Beta的狀態(tài)映射到Alpha的狀態(tài)的外部命令。在第一遍期間,很多實(shí)施例忽略了具有(i)命令使用中和(ii)目標(biāo)客戶機(jī)(Alpha)兩者的源(Beta)中的歷史敘述。例如,在這些實(shí)施例中,我們將忽略具有以下形式的敘述任何狀態(tài),使用中,Alfpa,任何狀態(tài)。在這些實(shí)施例中,如果執(zhí)行無用數(shù)據(jù)收集,則將在處理結(jié)束時(shí)創(chuàng)建Alpha的新狀態(tài)“使用中”。在第二遍中,我們處理源(Beta)中的可按目標(biāo)(Alpha)的現(xiàn)有狀態(tài)表示的全部歷史敘述。關(guān)于詞匯表,如果可利用當(dāng)前現(xiàn)有目標(biāo)狀態(tài)來表示源(Beta)歷史敘述,則我們說可“本地化”這種歷史敘述。對(duì)于可本地化的任何源(Beta)歷史敘述,我們可執(zhí)行本地化(使用現(xiàn)有本地狀態(tài)來表示敘述),并將新的本地化歷史敘述添加到目標(biāo)(Alpha)映射表中(或者在其他實(shí)施例中添加到歷史存儲(chǔ)裝置中)。當(dāng)然,如果Alpha的存儲(chǔ)器中已有本地化歷史敘述,則不必將其添加到映射表中。此外,根據(jù)所用的精確算法,在實(shí)現(xiàn)歷史存儲(chǔ)裝置中已有本地版本之前可不必完全使敘述“本地化”。在這種情況下,一旦達(dá)到了這種實(shí)現(xiàn),就可中止本地化處理。以下示例例示了這一處理。出于該示例的目的,假設(shè)Alpha具有現(xiàn)有狀態(tài)A1至A15,Beta具有現(xiàn)有狀態(tài)B1至B18,并且另一對(duì)端裝置Kappa具有現(xiàn)有狀態(tài)K1至K13。另外假設(shè)Alpha、Beta以及Kappa的狀態(tài)以標(biāo)號(hào)相對(duì)應(yīng)(即,A1、A2、A3分別對(duì)應(yīng)于B1、B2、B3,對(duì)應(yīng)于K1、K2、K3),并且假設(shè)Alpha、Beta以及Kappa中的每一個(gè)具有建立全部現(xiàn)有對(duì)應(yīng)的“外部”命令敘述。接著參照?qǐng)D12,行2,在“狀況”列中示出了第二遍的該示例的兩個(gè)歷史敘述。出于該示例的目的,這兩個(gè)敘述位于Beta數(shù)據(jù)存儲(chǔ)裝置中。第一敘述是用戶編輯命令,示出了B5是反映用戶已在Beta裝置上編輯了狀態(tài)B4對(duì)象的狀態(tài)。如在映射表列的行2中所見,該敘述容易地轉(zhuǎn)譯到Alpha狀態(tài)等同。這是因?yàn)锽eta狀態(tài)B4、B5和B10已在裝置Alpha上建立了對(duì)應(yīng)(如先前所述,可通過基于“外部”命令的歷史敘述來建立對(duì)應(yīng))。類似的是,圖12,行2示出了包括沖突解決命令的歷史敘述的示例。在一些實(shí)施例中,第二遍還試圖轉(zhuǎn)換如上所述未被簡(jiǎn)單地本地化的源(Beta)歷史敘述。因此,如果無法使Beta歷史敘述本地化,則該敘述變?yōu)樵撎幚淼暮蜻x。該處理用于(確定地)推導(dǎo)出源(Beta)中的歷史敘述與目標(biāo)(Alpha)中的歷史敘述之間的關(guān)系。當(dāng)然,用于進(jìn)行這些推導(dǎo)的技術(shù)隨歷史敘述中心處的命令而改變。例如,參照?qǐng)D12中的行3,(i)如果存在源(Beta)沖突解決敘述(例如,{B16,沖突解決,Kappa,B3,B5});(ii)如果存在目標(biāo)沖突解決敘述(例如,{A9,沖突解決,Kappa,A3,A5});以及(iii)如此處,存在獲贏狀態(tài)(A3和B3)與輸?shù)魻顟B(tài)(A5和B5)之間的識(shí)別對(duì)應(yīng);則(iv)我們可推導(dǎo)出主題狀態(tài)B16和B9是相同的。進(jìn)行了這種推導(dǎo),我們最終可將映射敘述添加到映射表中(或者,在其他實(shí)施例中,添加到目標(biāo)(Alpha)歷史存儲(chǔ)裝置)。具體來說,我們討論了兩種類型的映射歷史敘述“外部”命令敘述;和“等同狀態(tài)”命令敘述。在這種情況下,如果作為第一遍的結(jié)果,在映射表(回想該映射表是新的歷史敘述的臨時(shí)保存地方)中已有對(duì)應(yīng),則我們使用“外部”命令。如果在映射表中還沒有對(duì)應(yīng),則我們采用“等同狀態(tài)”命令。在完成第二遍之前,如果存在由推導(dǎo)出的關(guān)系造成的任何新映射,則重復(fù)第二遍來確定這些新映射是否提供了用于使更多源(Beta)歷史敘述本地化的信息。在第三遍中,我們處理除主題之外與現(xiàn)有目標(biāo)(Alpha)歷史存儲(chǔ)器中的歷史敘述匹配的、源(Beta)歷史存儲(chǔ)裝置中的歷史敘述。另選的,我們處理來自Beta歷史存儲(chǔ)裝置的可為其推斷主題狀態(tài)的歷史敘述。這些歷史敘述已在Alpha存儲(chǔ)裝置中有等同敘述,但是由于沒有“外部”或創(chuàng)建主題狀態(tài)之間的對(duì)應(yīng)的其他敘述,所以并不容易識(shí)別出這些等同敘述。例如,參照?qǐng)D12,行4,存在具有不同主題(結(jié)果狀態(tài)A13和B16)但具有其他等同狀態(tài)的兩個(gè)已知等同命令。因?yàn)楂@贏狀態(tài)(B3,A3)相同且輸?shù)魻顟B(tài)(B5,A5)相同,所以我們知道主題狀態(tài)A13和B16也必須是等同的。因此,我們可添加對(duì)應(yīng)的“外部”命令,如行4的映射表列中所示(對(duì)于一些實(shí)施例使用外部命令表示在映射表中未發(fā)現(xiàn)對(duì)應(yīng))。在完成第三遍之前,如果存在由第三遍的推斷關(guān)系造成的任何新映射,則重復(fù)第二遍以確定這些新映射是否提供用于使更多源(Beta)歷史敘述本地化的信息。在第四遍中,我們處理除主題外可被本地化的全部Beta歷史敘述,即,在這些Bata歷史敘述中,可按照Alpha的當(dāng)前狀態(tài)表示Beta歷史敘述中除主題外的全部狀態(tài)。在這一方面,我們知道對(duì)于任何這種Beta歷史敘述(i)其主題不能被本地化(因?yàn)檫@可能已在第二遍中發(fā)生);和(ii)Beta歷史敘述不與任何現(xiàn)有Alpha歷史敘述匹配(從任何觀點(diǎn)來說,包括推斷或推導(dǎo))。我們通過創(chuàng)建新的Alpha狀態(tài)并將其作為主題附于本地化的Beta歷史敘述來處理這些敘述。作為示例,參見圖12中的行5,其中新狀態(tài)“ANEW”附于其他匹配沖突解決歷史敘述。此外,我們創(chuàng)建新映射敘述,其建立新創(chuàng)建的狀態(tài)(ANEW)與先前無法本地化的Beta主題狀態(tài)(參見圖12中的行4)之間的對(duì)應(yīng)。我們使用“外部”或“等同狀態(tài)”命令的協(xié)定(convention)保持與先前所建議的相同(如果在映射表中還沒有關(guān)聯(lián),則使用外部命令)。另外,如前所述,如果我們?cè)诒?中創(chuàng)建了任何新映射,則我們重試遍2,這是因?yàn)樾掠成淇赡苁沟梦覀兡軌驅(qū)π翨eta歷史敘述進(jìn)行本地化。在第五遍和最后一遍中,我們?nèi)缦绿幚砀鱾€(gè)剩余源(Beta)歷史敘述(i)忽略具有主題(其為0或者已映射到映射表中)的剩余敘述;(ii)忽略剩余的“外部”命令(因?yàn)槲覀儾幌肜速M(fèi)處理時(shí)間或空間來學(xué)習(xí)不必要的狀態(tài));(iii)針對(duì)源(Beta)歷史中還未映射的各狀態(tài)創(chuàng)建新的目標(biāo)(Alpha)狀態(tài);以及(iv)創(chuàng)建類似于Beta敘述但使用新創(chuàng)建的Alpha狀態(tài)的目標(biāo)(Alpha)歷史敘述。例如,參見圖12,行6,其中示出了關(guān)于如下Beta歷史敘述的遍5轉(zhuǎn)換,{B18,沖突解決,Kappa,B17,B16}(假設(shè)Alpha對(duì)于B16、B17或B18沒有對(duì)應(yīng)狀態(tài))。如行5所示,分別對(duì)B16至B18創(chuàng)建新的Apha狀態(tài)ANEW1、ANEW2和ANEW3。另外,使用新創(chuàng)建的Alpha狀態(tài)來轉(zhuǎn)譯Beta沖突已解決的敘述。如在其他情況下,如果遍5創(chuàng)建了任何新映射,則我們重試遍2,這是因?yàn)樾掠成淇赡苁刮覀兡軌驅(qū)π翨eta歷史敘述進(jìn)行本地化。在遍5結(jié)束時(shí),應(yīng)當(dāng)已處理了所關(guān)注的全部Beta歷史敘述。f.無用數(shù)據(jù)收集如前所述,可能期望使歷史敘述數(shù)最小化來保留系統(tǒng)資源并提高性能。因此,一些實(shí)施例使用無用數(shù)據(jù)收集處理來消除不必要的歷史敘述。無用數(shù)據(jù)收集是評(píng)估歷史存儲(chǔ)裝置中的歷史敘述以確定是否可以刪除任何無用數(shù)據(jù)(因?yàn)樗鼈儗?duì)于系統(tǒng)功能來說是不必要的)的處理。通常為了實(shí)現(xiàn)無用數(shù)據(jù)收集,各客戶機(jī)在跟蹤每個(gè)其他客戶機(jī)上的使用中的狀態(tài),并且僅對(duì)已知在全部已知客戶機(jī)上都無用的狀態(tài)進(jìn)行無用數(shù)據(jù)收集。更為具體地,實(shí)例處理如下(i)跟蹤使用狀態(tài)首先,各客戶機(jī)可跟蹤其自身和各已知對(duì)端同步客戶機(jī)中的使用中的全部狀態(tài)。簡(jiǎn)要的說,如果一狀態(tài)被用來表示數(shù)據(jù)存儲(chǔ)裝置中的對(duì)象,則該狀態(tài)處于使用中。例如,參照?qǐng)D13A,在數(shù)據(jù)存儲(chǔ)裝置中有單個(gè)對(duì)象(Dog)1302。如圖形1301所示,對(duì)象Dog處于狀態(tài)5,這是因?yàn)槿缭跉v史存儲(chǔ)裝置1303中所示,創(chuàng)建對(duì)象(造成第一歷史敘述)接著用戶編輯4次(每次編輯都造成新的歷史敘述)。然而,出于無用數(shù)據(jù)收集的目的,在數(shù)據(jù)存儲(chǔ)裝置1305中僅狀態(tài)5處在使用中。假設(shè)對(duì)象Dog1302此時(shí)是我們的擴(kuò)展系統(tǒng)(全部數(shù)據(jù),全部同步客戶機(jī))中的唯一對(duì)象,則直觀的,歷史敘述1310到1313都是不必要的(如果我們從未告訴另一客戶機(jī)關(guān)于這些編輯,則我們編輯對(duì)象Dog多少次都無所謂)。因此,參照?qǐng)D13B,示出了在所假設(shè)的系統(tǒng)中在13A的同步客戶機(jī)上的無用數(shù)據(jù)收集結(jié)果。如我們?cè)趫D13B中所見,刪除了歷史敘述1310到1313,僅留下敘述1314(其具有主題5——在數(shù)據(jù)庫(kù)中使用的唯一主題狀態(tài))。此外,添加了歷史敘述1315來記錄以下事實(shí),即在客戶機(jī)“未命名”1320中狀態(tài)5處在使用中,并且對(duì)于未命名的“用戶編輯”命令處在其第一代中(“[1]”)。參照?qǐng)D13C,示出了用于例示正在使用的狀態(tài)的另一示例。具體來說,圖13C示出了數(shù)據(jù)存儲(chǔ)裝置中的兩個(gè)對(duì)象1351和1352。在這種情況下,創(chuàng)建第一對(duì)象1351,然后對(duì)其編輯七次(由此其處于狀態(tài)8)。然后,創(chuàng)建對(duì)象1352,并對(duì)其編輯兩次(由此其處于狀態(tài)3)。因此,對(duì)于客戶機(jī)“未命名”1350,狀態(tài)8和3處于使用中。最后,對(duì)于跟蹤使用中的狀態(tài),存在關(guān)于如何或可能是何時(shí)跟蹤這種信息的問題。每當(dāng)數(shù)據(jù)存儲(chǔ)裝置中發(fā)生改變時(shí),客戶機(jī)可通過重新計(jì)算信息來跟蹤其正在使用的狀態(tài)。另選的,客戶機(jī)可在其執(zhí)行無用數(shù)據(jù)收集時(shí)或在其執(zhí)行同步時(shí)計(jì)算其使用中的狀態(tài)。(ii)必要?dú)v史敘述除了跟蹤使用中的狀態(tài),還必須有如下機(jī)制在給定正在使用的狀態(tài)的特定集合情況下,明了哪些歷史敘述對(duì)其哪些客戶機(jī)是必要的。每當(dāng)在給定客戶機(jī)上有數(shù)據(jù)改變時(shí),可以計(jì)算哪些歷史敘述對(duì)于各個(gè)以及每個(gè)已知客戶機(jī)是必要的。如果歷史敘述對(duì)于任何已知客戶機(jī)都是必要的,則必須保持其。例如,參照?qǐng)D14A,示出了具有3個(gè)客戶機(jī)1410、1430和1450的同步系統(tǒng)。參照?qǐng)D14A以及圖15中的表的第一和第二行,在客戶機(jī)1410上創(chuàng)建了單個(gè)對(duì)象,并且在全部客戶機(jī)間進(jìn)行同步。然后參照?qǐng)D14B以及圖15的行3,客戶機(jī)1410編輯數(shù)據(jù)1411,并且該編輯被反映在數(shù)據(jù)存儲(chǔ)裝置和歷史存儲(chǔ)裝置兩者中(1410中的狀態(tài)2)。正如我們?cè)趫D15的注釋(行3)中所見,全部客戶機(jī)需要了解該數(shù)據(jù)編輯(至狀態(tài)2),因此必須將其保持。然而,客戶機(jī)1410不再需要狀態(tài)1歷史敘述,但是必須保持該狀態(tài)1歷史敘述,這是因?yàn)榭蛻魴C(jī)1410知道客戶機(jī)1430和1450的存在,但是不知道它們是否需要該改變。參照?qǐng)D14C和圖15,行4,我們下面再次編輯數(shù)據(jù)對(duì)象1411,將其移至狀態(tài)3并創(chuàng)建對(duì)應(yīng)歷史敘述。接著參照?qǐng)D15,行4中的注釋,全部客戶機(jī)1410、1430和1450都要求該改變(狀態(tài)3),因此將其保持。然而,客戶機(jī)1410實(shí)際上不再需要狀態(tài)2(改變到A’)但是必須保持相關(guān)歷史敘述,這是因?yàn)榭蛻魴C(jī)1430和1450可能需要該敘述。下面參照?qǐng)D14D和圖15的行5。下面我們使客戶機(jī)1410和1430同步。我們?cè)谛?的注釋中看到,1410和1430兩者不再要求狀態(tài)2或狀態(tài)1,但是由于它們知道1430存在而且可能1430需要該狀態(tài),所以必須保持該狀態(tài)。最終,我們移至圖14E和圖15的行6,下面我們使全部三個(gè)客戶機(jī)同步并進(jìn)行無用數(shù)據(jù)收集。因?yàn)槲覀儸F(xiàn)在確定排除了狀態(tài)1和2,因此可消除具有主題狀態(tài)1或2的歷史敘述。因此,我們看到,只要客戶機(jī)確定全部其他已知客戶機(jī)都不需要一狀態(tài),該客戶機(jī)就可以釋放該狀態(tài)(以該狀態(tài)為主題的任何歷史敘述)。(iii)共享/同步使用中的信息最后,我們可具有如下機(jī)制,即與其他客戶機(jī)共享該信息(特定客戶機(jī)如何了解各個(gè)其他客戶機(jī)可能需要什么)。如在圖14A至14E中所見,該機(jī)制是使用“使用中”命令的歷史敘述。如前所述,使用中歷史敘述可攜帶全部下述信息主題狀態(tài)指示符(其通常為“0”);使用中命令,世代計(jì)數(shù)(示例中的方括號(hào)中所示),因?yàn)閷?duì)于給定同步客戶機(jī)僅最新的使用中命令是相關(guān)的;以及最后,使用中的狀態(tài)的列表。通過保持這些使用中敘述并使其同步,各客戶機(jī)可以了解在上次它們連接(經(jīng)大概雙向同步及無用數(shù)據(jù)收集)的其他已知裝置上哪些狀態(tài)處在使用中。這就是客戶機(jī)1410(在上述示例中)如何知道不丟棄狀態(tài)1和2,直到其確認(rèn)裝置1430和1450兩者都確實(shí)不需要這些狀態(tài)。因此,在一些實(shí)施例中,必須使使用中歷史敘述同步到其他同步客戶機(jī)上,使得這些其他同步客戶機(jī)不設(shè)置另一客戶機(jī)上需要的狀態(tài)。因此,一般來說,對(duì)于連接到(即,了解)N個(gè)其他客戶機(jī)(可能過渡地)的給定客戶機(jī),具有反映在使用中敘述中的N組使用中的狀態(tài)。這些使用中的狀態(tài)及其后代(相反于祖先)是可能對(duì)于N個(gè)客戶機(jī)的組相關(guān)的狀態(tài)??梢詠G棄全部其他狀態(tài)。通常,當(dāng)與其他客戶機(jī)相連接時(shí),可以確定某組互不相關(guān)的祖先(例如,在圖15的行6中)——其中有可能進(jìn)行無用數(shù)據(jù)收集。除非明確說明,以上實(shí)施例旨在為例示性的而非限制性的。本領(lǐng)域技術(shù)人員可按照多種方式修改這些實(shí)施例和歷史。這種修改期望并旨在作為本文的討論的一部分。權(quán)利要求1.一種保持?jǐn)?shù)據(jù)和元數(shù)據(jù)以進(jìn)行同步的方法,該方法包括以下步驟在第一裝置上創(chuàng)建第一數(shù)據(jù),并將第一狀態(tài)與所述第一數(shù)據(jù)相關(guān)聯(lián);創(chuàng)建第一歷史敘述以反映關(guān)于所述第一數(shù)據(jù)的創(chuàng)建的元數(shù)據(jù);將所述第一歷史敘述與所述第一狀態(tài)相關(guān)聯(lián);并且在所述第一裝置上創(chuàng)建第二數(shù)據(jù),并將所述第一狀態(tài)與所述第二數(shù)據(jù)相關(guān)聯(lián)。2.根據(jù)權(quán)利要求1所述的方法,其中,所述第一數(shù)據(jù)是諸如記錄的數(shù)據(jù)集。3.根據(jù)權(quán)利要求1所述的方法,其中,所述第一數(shù)據(jù)是數(shù)據(jù)項(xiàng)。4.根據(jù)權(quán)利要求1所述的方法,其中,所述第一數(shù)據(jù)代表照片。5.根據(jù)權(quán)利要求1所述的方法,其中,所述第一數(shù)據(jù)代表聲音。6.根據(jù)權(quán)利要求1所述的方法,其中,所述第一歷史敘述包括關(guān)于所述第一裝置的識(shí)別以及創(chuàng)建所述第一數(shù)據(jù)所依據(jù)的特性的信息。7.根據(jù)權(quán)利要求1所述的方法,所述方法還包括以下步驟在所述第一裝置上編輯所述第一數(shù)據(jù);將第二狀態(tài)與所述第一數(shù)據(jù)相關(guān)聯(lián);創(chuàng)建第二歷史敘述來反映關(guān)于所述編輯的元數(shù)據(jù);將所述第二狀態(tài)與所述第二歷史敘述相關(guān)聯(lián)。8.一種保持待同步的數(shù)據(jù)的裝置,所述裝置包括用戶輸入,用于創(chuàng)建第一數(shù)據(jù)和第二數(shù)據(jù);處理器和軟件,用于創(chuàng)建第一歷史敘述來反映關(guān)于所述第一數(shù)據(jù)的創(chuàng)建和所述第二數(shù)據(jù)的創(chuàng)建的元數(shù)據(jù),并且用于將所述第一數(shù)據(jù)、所述第二數(shù)據(jù)以及所述第一歷史敘述與第一狀態(tài)相關(guān)聯(lián);第一存儲(chǔ)器,用于存儲(chǔ)第一數(shù)據(jù)結(jié)構(gòu),所述第一數(shù)據(jù)結(jié)構(gòu)用于保持所述第一數(shù)據(jù)與所述第一狀態(tài)之間的所述關(guān)聯(lián)以及所述第二數(shù)據(jù)與所述第一狀態(tài)之間的所述關(guān)聯(lián)兩者;第二存儲(chǔ)器,用于存儲(chǔ)第二數(shù)據(jù)結(jié)構(gòu),所述第二數(shù)據(jù)結(jié)構(gòu)用于保持所述第一歷史敘述與所述第一狀態(tài)之間的所述關(guān)聯(lián)。9.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一數(shù)據(jù)是數(shù)據(jù)項(xiàng)。10.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一數(shù)據(jù)代表聲音。11.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一數(shù)據(jù)代表照片。12.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一歷史敘述包括關(guān)于所述第一裝置的識(shí)別以及創(chuàng)建所述第一數(shù)據(jù)所依據(jù)的特性的信息。13.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一存儲(chǔ)器是磁的。14.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一存儲(chǔ)器是動(dòng)態(tài)存儲(chǔ)器。15.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一存儲(chǔ)器是靜態(tài)存儲(chǔ)器。16.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一存儲(chǔ)器和所述第二存儲(chǔ)器相同。17.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)被并入到單個(gè)湯型數(shù)據(jù)結(jié)構(gòu)中。18.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)被并入到單個(gè)平面數(shù)據(jù)結(jié)構(gòu)中。19.根據(jù)權(quán)利要求8所述的裝置,其中,所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)是分立的對(duì)象。20.一種使數(shù)據(jù)庫(kù)同步的方法,該方法包括以下步驟在第一數(shù)據(jù)結(jié)構(gòu)中,將第一狀態(tài)標(biāo)識(shí)與一個(gè)或更多個(gè)數(shù)據(jù)集相關(guān)聯(lián);在第二數(shù)據(jù)結(jié)構(gòu)中,將所述第一狀態(tài)標(biāo)識(shí)與關(guān)于和所述狀態(tài)標(biāo)識(shí)相關(guān)聯(lián)的所述一個(gè)或更多個(gè)數(shù)據(jù)集的信息相關(guān)聯(lián);對(duì)所述一個(gè)或更多個(gè)數(shù)據(jù)集中的第一數(shù)據(jù)集進(jìn)行改變;在所述第一數(shù)據(jù)結(jié)構(gòu)中,將第二狀態(tài)與所述一個(gè)或更多個(gè)數(shù)據(jù)集中的所述第一數(shù)據(jù)集相關(guān)聯(lián);在所述第二數(shù)據(jù)結(jié)構(gòu)中,如果在所述第二數(shù)據(jù)結(jié)構(gòu)中關(guān)于所述改變的信息尚未與所述第二狀態(tài)相關(guān)聯(lián),則將所述第二狀態(tài)與關(guān)于所述改變的所述信息相關(guān)聯(lián)。21.根據(jù)權(quán)利要求20所述的方法,其中,所述第一數(shù)據(jù)結(jié)構(gòu)是湯型數(shù)據(jù)庫(kù)。22.根據(jù)權(quán)利要求20所述的方法,其中,所述第一數(shù)據(jù)結(jié)構(gòu)是平面文件。23.根據(jù)權(quán)利要求20所述的方法,其中,所述第一數(shù)據(jù)結(jié)構(gòu)包括兩個(gè)或更多個(gè)子數(shù)據(jù)結(jié)構(gòu)。24.根據(jù)權(quán)利要求20所述的方法,其中,所述第二數(shù)據(jù)結(jié)構(gòu)是湯型數(shù)據(jù)庫(kù)。25.根據(jù)權(quán)利要求20所述的方法,其中,所述第二數(shù)據(jù)結(jié)構(gòu)是平面文件。26.根據(jù)權(quán)利要求20所述的方法,其中,所述第二數(shù)據(jù)結(jié)構(gòu)包括兩個(gè)或更多個(gè)子數(shù)據(jù)結(jié)構(gòu)。27.根據(jù)權(quán)利要求20所述的方法,其中,第三數(shù)據(jù)結(jié)構(gòu)包括所述第一數(shù)據(jù)結(jié)構(gòu)和所述第二數(shù)據(jù)結(jié)構(gòu)兩者。28.根據(jù)權(quán)利要求20所述的方法,其中,數(shù)據(jù)集是記錄。29.根據(jù)權(quán)利要求20所述的方法,其中,數(shù)據(jù)集是數(shù)據(jù)項(xiàng)。30.根據(jù)權(quán)利要求20所述的方法,其中,所述改變是編輯。31.根據(jù)權(quán)利要求20所述的方法,其中,所述改變是刪除。32.一種使信息同步的裝置,該裝置包括第一存儲(chǔ)器,用于存儲(chǔ)第一數(shù)據(jù)結(jié)構(gòu),所述第一數(shù)據(jù)結(jié)構(gòu)用于將第一狀態(tài)標(biāo)識(shí)與一個(gè)或更多個(gè)數(shù)據(jù)集相關(guān)聯(lián);第二存儲(chǔ)器,用于存儲(chǔ)第二數(shù)據(jù)結(jié)構(gòu),所述第二數(shù)據(jù)結(jié)構(gòu)用于將所述第一狀態(tài)標(biāo)識(shí)與關(guān)于和所述狀態(tài)標(biāo)識(shí)相關(guān)聯(lián)的所述一個(gè)或更多個(gè)數(shù)據(jù)集的信息相關(guān)聯(lián);用戶輸入,用于對(duì)所述一個(gè)或更多個(gè)數(shù)據(jù)集中的第一數(shù)據(jù)集進(jìn)行改變;處理器和軟件,用于在所述第一數(shù)據(jù)結(jié)構(gòu)中,將第二狀態(tài)與所述一個(gè)或更多個(gè)數(shù)據(jù)集中的所述第一數(shù)據(jù)集相關(guān)聯(lián);并且用于如果在所述第二數(shù)據(jù)結(jié)構(gòu)中關(guān)于所述改變的信息尚未與所述第二狀態(tài)相關(guān)聯(lián),則在所述第二數(shù)據(jù)結(jié)構(gòu)中將所述第二狀態(tài)與關(guān)于所述改變的所述信息相關(guān)聯(lián)。33.根據(jù)權(quán)利要求32所述的裝置,其中,所述第一存儲(chǔ)器和所述第二存儲(chǔ)器相同。34.根據(jù)權(quán)利要求32所述的裝置,其中,所述第一數(shù)據(jù)結(jié)構(gòu)是湯型數(shù)據(jù)庫(kù)。35.根據(jù)權(quán)利要求32所述的裝置,其中,所述第一數(shù)據(jù)結(jié)構(gòu)是平面文件。36.根據(jù)權(quán)利要求32所述的裝置,其中,所述第一數(shù)據(jù)結(jié)構(gòu)包括兩個(gè)或更多個(gè)子數(shù)據(jù)結(jié)構(gòu)。37.根據(jù)權(quán)利要求32所述的裝置,其中,數(shù)據(jù)集是記錄。38.根據(jù)權(quán)利要求32所述的裝置,其中,所述數(shù)據(jù)集是數(shù)據(jù)項(xiàng)。39.根據(jù)權(quán)利要求38所述的裝置,其中,所述數(shù)據(jù)項(xiàng)代表聲音。40.根據(jù)權(quán)利要求38所述的裝置,其中,所述數(shù)據(jù)項(xiàng)代表照片。41.根據(jù)權(quán)利要求20所述的裝置,其中,所述改變是編輯。42.一種使保持在第一數(shù)據(jù)結(jié)構(gòu)中的第一數(shù)據(jù)與保持在第二數(shù)據(jù)結(jié)構(gòu)中的第二數(shù)據(jù)同步的方法,該方法包括以下步驟在所述第一數(shù)據(jù)結(jié)構(gòu)中將第一數(shù)據(jù)的各數(shù)據(jù)項(xiàng)與第一狀態(tài)標(biāo)識(shí)相關(guān)聯(lián);在第三數(shù)據(jù)結(jié)構(gòu)中將各個(gè)第一狀態(tài)標(biāo)識(shí)與歷史敘述相關(guān)聯(lián);在所述第二數(shù)據(jù)結(jié)構(gòu)中將第二數(shù)據(jù)的各數(shù)據(jù)項(xiàng)與第二狀態(tài)標(biāo)識(shí)相關(guān)聯(lián);在第四數(shù)據(jù)結(jié)構(gòu)中將各第二狀態(tài)標(biāo)識(shí)與歷史敘述相關(guān)聯(lián);使來自所述第三數(shù)據(jù)結(jié)構(gòu)的歷史敘述同步到所述第四數(shù)據(jù)結(jié)構(gòu)中以創(chuàng)建同步的第四數(shù)據(jù)結(jié)構(gòu);通過使用來自所述同步的第四數(shù)據(jù)結(jié)構(gòu)的信息,使來自所述第一數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)同步到所述第二數(shù)據(jù)結(jié)構(gòu)。43.根據(jù)權(quán)利要求42所述的方法,其中,所述第一數(shù)據(jù)結(jié)構(gòu)和所述第三數(shù)據(jù)結(jié)構(gòu)相同。44.根據(jù)權(quán)利要求42所述的方法,其中,所述第一數(shù)據(jù)結(jié)構(gòu)和所述第三數(shù)據(jù)結(jié)構(gòu)駐留在一個(gè)裝置中,而所述第二數(shù)據(jù)結(jié)構(gòu)和所述第四數(shù)據(jù)結(jié)構(gòu)駐留在另一裝置中。45.根據(jù)權(quán)利要求42所述的方法,其中,在第三數(shù)據(jù)結(jié)構(gòu)和第四數(shù)據(jù)結(jié)構(gòu)的每一個(gè)中的一個(gè)或更多個(gè)所述歷史敘述包括第一狀態(tài)標(biāo)識(shí)與第二狀態(tài)標(biāo)識(shí)之間的互相關(guān)。46.根據(jù)權(quán)利要求42所述的方法,其中,第一數(shù)據(jù)包括N個(gè)數(shù)據(jù)項(xiàng),并且這N個(gè)數(shù)據(jù)項(xiàng)與M個(gè)狀態(tài)相關(guān)聯(lián),并且M<N。47.一種與遠(yuǎn)程裝置同步的本地裝置,所述本地裝置包括第一本地?cái)?shù)據(jù)存儲(chǔ)裝置,用于存儲(chǔ)本地?cái)?shù)據(jù)項(xiàng)和相關(guān)聯(lián)的本地?cái)?shù)據(jù)狀態(tài),多個(gè)所述本地?cái)?shù)據(jù)項(xiàng)與存儲(chǔ)在所述遠(yuǎn)程裝置中的遠(yuǎn)程數(shù)據(jù)項(xiàng)互相關(guān),所述遠(yuǎn)程數(shù)據(jù)項(xiàng)與遠(yuǎn)程狀態(tài)相關(guān)聯(lián);第二本地?cái)?shù)據(jù)存儲(chǔ)裝置,用于存儲(chǔ)歷史敘述,所述歷史敘述包括將本地?cái)?shù)據(jù)狀態(tài)與遠(yuǎn)程數(shù)據(jù)狀態(tài)相關(guān)聯(lián)的敘述以及關(guān)于對(duì)一個(gè)或更多個(gè)本地?cái)?shù)據(jù)項(xiàng)和一個(gè)或更多個(gè)遠(yuǎn)程數(shù)據(jù)項(xiàng)的編輯的敘述。48.根據(jù)權(quán)利要求47所述的裝置,其中,編輯是創(chuàng)建。49.根據(jù)權(quán)利要求47所述的裝置,其中,編輯是刪除。50.根據(jù)權(quán)利要求47所述的裝置,其中,編輯是刪節(jié)。51.根據(jù)權(quán)利要求47所述的裝置,其中,存在N個(gè)本地?cái)?shù)據(jù)項(xiàng),并且這N個(gè)本地?cái)?shù)據(jù)項(xiàng)與M個(gè)本地狀態(tài)相關(guān)聯(lián),并且M<N。52.一種跟蹤數(shù)據(jù)改變的方法,其中數(shù)據(jù)包括多個(gè)數(shù)據(jù)項(xiàng),所述方法包括以下步驟將第一狀態(tài)與第一多個(gè)數(shù)據(jù)項(xiàng)相關(guān)聯(lián),所有所述第一多個(gè)數(shù)據(jù)項(xiàng)都具有第一共同歷史;將所述第一狀態(tài)與描述所述第一共同歷史的第一歷史敘述相關(guān)聯(lián)。53.根據(jù)權(quán)利要求52所述的方法,其中,所述第一共同歷史是所述數(shù)據(jù)項(xiàng)的創(chuàng)建。54.根據(jù)權(quán)利要求53所述的方法,其中,所述第一歷史敘述表示創(chuàng)建了數(shù)據(jù)以及數(shù)據(jù)如何創(chuàng)建的。55.根據(jù)權(quán)利要求53所述的方法,其中,所述第一歷史敘述表示創(chuàng)建了數(shù)據(jù)以及使用了什么裝置來創(chuàng)建數(shù)據(jù)。56.根據(jù)權(quán)利要求53所述的方法,其中,所述第一歷史敘述表示創(chuàng)建了數(shù)據(jù)以及與所述數(shù)據(jù)創(chuàng)建相關(guān)聯(lián)的同步客戶機(jī)。57.根據(jù)權(quán)利要求52所述的方法,其中,所述第一共同歷史是數(shù)據(jù)的編輯,所述編輯與特定同步客戶機(jī)相關(guān)聯(lián)。58.根據(jù)權(quán)利要求52所述的方法,其中,所述第一多個(gè)項(xiàng)包括地址和電話號(hào)碼。59.根據(jù)權(quán)利要求52所述的方法,其中,所述第一多個(gè)項(xiàng)包括兩個(gè)地址。60.根據(jù)權(quán)利要求52所述的方法,該方法還包括以下步驟對(duì)第一數(shù)據(jù)項(xiàng)子集進(jìn)行第一改變,所述第一數(shù)據(jù)項(xiàng)子集包括所述第一多個(gè)數(shù)據(jù)項(xiàng)中的一個(gè)或更多個(gè);將第二狀態(tài)與所述第一數(shù)據(jù)項(xiàng)子集相關(guān)聯(lián);以及將第二歷史敘述與所述第一改變相關(guān)聯(lián)。61.根據(jù)權(quán)利要求60所述的方法,其中,將第二歷史敘述與所述第一改變相關(guān)聯(lián)的所述步驟包括創(chuàng)建所述第二歷史敘述。62.根據(jù)權(quán)利要求60所述的方法,其中,所述第一改變是刪除所述第一數(shù)據(jù)項(xiàng)子集。63.根據(jù)權(quán)利要求60所述的方法,其中,所述第一改變是獨(dú)立地編輯所述第一數(shù)據(jù)項(xiàng)子集中的各所述數(shù)據(jù)項(xiàng)。64.根據(jù)權(quán)利要求60所述的方法,其中,所述多個(gè)數(shù)據(jù)項(xiàng)和所有相關(guān)聯(lián)的歷史敘述被保持在第一共同數(shù)據(jù)結(jié)構(gòu)中。65.根據(jù)權(quán)利要求64所述的方法,該方法還包括以下步驟將來自第二共同數(shù)據(jù)結(jié)構(gòu)的歷史敘述同步到所述第一共同數(shù)據(jù)結(jié)構(gòu)。66.根據(jù)權(quán)利要求65所述的方法,其中,所述第一共同數(shù)據(jù)結(jié)構(gòu)駐留在第一裝置中,而所述第二共同數(shù)據(jù)結(jié)構(gòu)駐留在第二裝置中。67.根據(jù)權(quán)利要求64所述的方法,該方法還包括以下步驟從同步的第一共同數(shù)據(jù)結(jié)構(gòu)中減除不必要的歷史敘述。68.根據(jù)權(quán)利要求67所述的方法,其中,所述減除步驟包括保持歷史敘述具有以下主題狀態(tài),該主題狀態(tài)是使用中的狀態(tài)的后代。69.根據(jù)權(quán)利要求66所述的方法,該方法還包括以下步驟從同步的第一共同數(shù)據(jù)結(jié)構(gòu)中減除不必要的歷史敘述。70.根據(jù)權(quán)利要求69所述的方法,其中,所述減除步驟包括保持歷史敘述具有以下主題狀態(tài),該主題狀態(tài)是在所述第一裝置或所述第二裝置上的使用中的狀態(tài)的后代。71.一種計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)具有用于執(zhí)行在權(quán)利要求1、20、42、50、62或67中的任一項(xiàng)中所述的方法的計(jì)算機(jī)可執(zhí)行指令。全文摘要一種用于同步的系統(tǒng),通過該系統(tǒng)元數(shù)據(jù)庫(kù)保持關(guān)于數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)的歷史和狀態(tài)的信息。數(shù)據(jù)項(xiàng)響應(yīng)于對(duì)其的改變而與狀態(tài)和這種狀態(tài)改變(例如,遞增)相關(guān)聯(lián)。與相同狀態(tài)相關(guān)聯(lián)的歷史敘述描述了按照使多個(gè)數(shù)據(jù)項(xiàng)可與單個(gè)狀態(tài)相關(guān)聯(lián)的足夠通配的方式描述這種改變(例如,如果多個(gè)數(shù)據(jù)項(xiàng)共享一共同歷史,例如它們都由同一裝置上的用戶進(jìn)行了編輯)。該歷史存儲(chǔ)裝置與其他歷史存儲(chǔ)裝置同步以在多個(gè)裝置上反映數(shù)據(jù)項(xiàng)的狀態(tài)。在同步期間采用同步的歷史存儲(chǔ)裝置來識(shí)別并解決數(shù)據(jù)項(xiàng)歷史世系中的數(shù)據(jù)沖突。文檔編號(hào)G06F11/14GK1977265SQ200580021793公開日2007年6月6日申請(qǐng)日期2005年6月27日優(yōu)先權(quán)日2004年7月1日發(fā)明者波特蘭·塞爾萊特申請(qǐng)人:蘋果電腦有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1