專(zhuān)利名稱(chēng)::用于在本地裝置和遠(yuǎn)程裝置間更新對(duì)象的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般涉及用有限帶寬經(jīng)網(wǎng)絡(luò)更新數(shù)據(jù)對(duì)象,尤其涉及使用遠(yuǎn)程差分壓縮(RDC)方法來(lái)進(jìn)行對(duì)象數(shù)據(jù)的差分傳輸?shù)南到y(tǒng)和方法??墒褂肦DC方法的遞歸應(yīng)用來(lái)進(jìn)一步地使大型對(duì)象傳送所使用的帶寬最小。
背景技術(shù):
:諸如內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)以及互聯(lián)網(wǎng)的網(wǎng)絡(luò)盛行已導(dǎo)致共享跨越廣泛網(wǎng)絡(luò)的信息的用戶(hù)數(shù)量有了很大的增長(zhǎng)?;谂c傳輸介質(zhì)以及其它基礎(chǔ)設(shè)施相關(guān)限制相關(guān)聯(lián)的帶寬,最大數(shù)據(jù)傳輸速率關(guān)聯(lián)于每個(gè)物理網(wǎng)絡(luò)。作為有限網(wǎng)絡(luò)帶寬的結(jié)果,用戶(hù)在網(wǎng)絡(luò)上取得和傳送大量數(shù)據(jù)時(shí)會(huì)經(jīng)歷長(zhǎng)時(shí)間的滯后。數(shù)據(jù)壓縮技術(shù)已經(jīng)變成在具有有限帶寬的網(wǎng)絡(luò)上傳送大量數(shù)據(jù)的普遍方法。通常數(shù)據(jù)壓縮可為無(wú)損的或有損的。無(wú)損壓縮涉及這樣的數(shù)據(jù)集轉(zhuǎn)換,即通過(guò)應(yīng)用解壓轉(zhuǎn)換可取得該數(shù)據(jù)集的精確副本。當(dāng)需要精確副本時(shí),最常使用無(wú)損壓縮來(lái)壓縮數(shù)據(jù)。在數(shù)據(jù)對(duì)象的接收者已經(jīng)具有對(duì)象先前的或較舊的版本情形下,可使用一種稱(chēng)為遠(yuǎn)程差分壓縮(RDC)的無(wú)損壓縮方法來(lái)確定并僅傳送該對(duì)象新舊版本間的差異。由于RDC傳送僅涉及傳送觀察到的新舊版本之間的差異(比如,對(duì)于文件情形,文件更改或上次訪問(wèn)日期、文件屬性、或?qū)ξ募?nèi)容的較小改變),所傳送的數(shù)據(jù)總量可大大減少。RDC可與另一無(wú)損壓縮算法組合,以進(jìn)一步減少網(wǎng)絡(luò)通信量。當(dāng)大對(duì)象需要在計(jì)算裝置之間頻繁地往返傳送,并且難以或不能維持這些對(duì)象的舊副本從而不能使用本地差分算法時(shí),RDC的優(yōu)點(diǎn)最為顯著。
發(fā)明內(nèi)容簡(jiǎn)言之,本發(fā)明涉及用于經(jīng)有限帶寬網(wǎng)絡(luò)更新對(duì)象的方法和系統(tǒng)。使用遠(yuǎn)程差分壓縮(RDC)技術(shù)在兩個(gè)或多個(gè)計(jì)算裝置間更新對(duì)象,使得所需要的數(shù)據(jù)傳送最少。在一方面中,通過(guò)把RDC算法迭遞歸地應(yīng)用到對(duì)象自己的元數(shù)據(jù)中可完成大對(duì)象的有效傳送;在此情形中可使用單個(gè)或多個(gè)遞歸步驟以減少由RDC算法經(jīng)網(wǎng)絡(luò)發(fā)送的元數(shù)據(jù)量。通過(guò)把邊界置于經(jīng)動(dòng)態(tài)確定的位置上,對(duì)象和/或簽名以及信息塊長(zhǎng)度列表可得以拆分(chunk)。一數(shù)學(xué)函數(shù)可估算相對(duì)于可能的信息塊邊界的與水平窗口相關(guān)聯(lián)的散列值。所述方法和系統(tǒng)在各種網(wǎng)絡(luò)化應(yīng)用中有用,諸如點(diǎn)對(duì)點(diǎn)重復(fù)符、電子郵件客戶(hù)機(jī)和服務(wù)器、客戶(hù)機(jī)側(cè)高速緩存系統(tǒng)、通用復(fù)制實(shí)用程序、數(shù)據(jù)庫(kù)重復(fù)符、入口、軟件更新服務(wù)、文件/數(shù)據(jù)同步、以及其它。可參照在下面簡(jiǎn)要?dú)w納的附圖、以下詳述的本發(fā)明說(shuō)明性實(shí)施例以及所附權(quán)利要求來(lái)獲得本發(fā)明及其改進(jìn)的更完整理解。本發(fā)明的非限制和非窮舉實(shí)施例參照以下附圖進(jìn)行描述。圖1是示出操作環(huán)境的示圖;圖2是示出示例計(jì)算裝置的示圖;圖3A和;3B是示出示例RDC過(guò)程的示圖;圖4A和4B是示出在示例RDC過(guò)程期間用于本地裝置和遠(yuǎn)程裝置之間交互的過(guò)程流的示圖;圖5A和5B是示出在RDC過(guò)程期間用于示例交互中簽名和信息塊長(zhǎng)度列表的遞歸遠(yuǎn)程差分壓縮的過(guò)程流的示圖;圖6是圖形地示出示例RDC序列中遞歸壓縮示例的示圖;圖7是示出使用示例RDC過(guò)程進(jìn)行客戶(hù)機(jī)和服務(wù)器應(yīng)用的交互的示圖;圖8是示出用于示例拆分過(guò)程的過(guò)程流的示圖;圖9是示出用于示例拆分過(guò)程的示例指令代碼的示圖;圖10和11是根據(jù)本發(fā)明的至少一方面安排的,示出用于另一示例拆分過(guò)程的另一示例指令代碼的示圖。具體實(shí)施例方式本發(fā)明的各種實(shí)施例參照附圖進(jìn)行詳細(xì)描述,其中相同標(biāo)號(hào)在附圖中代表相同的部件和裝配件。對(duì)各種實(shí)施例的應(yīng)用并不限制本發(fā)明的范圍,它僅受所附權(quán)利要求范圍限制。另外,在本說(shuō)明書(shū)中陳述的任何示例并非旨在限制本發(fā)明,且僅陳述許多可能實(shí)施例中的若干實(shí)施例。本發(fā)明在具有一個(gè)或多個(gè)存儲(chǔ)在其上的共同相關(guān)聯(lián)對(duì)象的本地和遠(yuǎn)程計(jì)算裝置(或“裝置”,為簡(jiǎn)化起見(jiàn))的環(huán)境中進(jìn)行描述。術(shù)語(yǔ)“本地”和“遠(yuǎn)程”指的是方法的一個(gè)情況。然而,同一裝置在不同情況中可扮演“本地”和“遠(yuǎn)程”兩種角色??墒褂眠h(yuǎn)程差分壓縮(RDC)方法以經(jīng)網(wǎng)絡(luò)用有限帶寬來(lái)有效更新共同相關(guān)聯(lián)的對(duì)象。當(dāng)具有對(duì)象新副本的裝置需要更新具有該對(duì)象或相似對(duì)象舊副本的裝置時(shí),采用RDC方法來(lái)經(jīng)網(wǎng)絡(luò)僅僅傳送對(duì)象之間的差異。描述RDC方法的示例使用(1)用來(lái)傳送RDC元數(shù)據(jù)的遞歸方法,以減少為大對(duì)象傳送的元數(shù)據(jù)量;以及(本地的基于最大值的拆分方法,以增加關(guān)聯(lián)于對(duì)象差異的精度從而使帶寬利用最少。獲益于所述RDC方法的某些示例應(yīng)用包括點(diǎn)對(duì)點(diǎn)復(fù)制服務(wù)、諸如SMB的文件傳輸協(xié)議、傳送大圖像的虛擬服務(wù)器、電子郵件服務(wù)器、蜂窩電話及PDA同步、數(shù)據(jù)庫(kù)服務(wù)器復(fù)制,僅在此列舉若干。操作環(huán)境圖1是示出本發(fā)明示例操作環(huán)境的示圖。如圖所示,安排裝置經(jīng)網(wǎng)絡(luò)進(jìn)行通信。這些裝置可以是連接于網(wǎng)絡(luò)的通用計(jì)算裝置、專(zhuān)用計(jì)算裝置、或任何其它適當(dāng)?shù)难b置。網(wǎng)絡(luò)102可對(duì)應(yīng)于任何鏈接技術(shù),包括,但不限于直接接線鏈接(例如并行端口、串行端口、USB、IEEE1394等等)、無(wú)線鏈接(例如頂端口、藍(lán)牙端口等等)、有線網(wǎng)絡(luò)、無(wú)線網(wǎng)絡(luò)、局域網(wǎng)、廣域網(wǎng)、超廣域網(wǎng)、互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)以及外聯(lián)網(wǎng)。在裝置A(100)和裝置B(101)之間的示例交互中,對(duì)象的不同版本本地地存儲(chǔ)在兩個(gè)裝置中對(duì)象Oa在100上,以及對(duì)象Ob在101上。在某點(diǎn),裝置A(IOO)決定要用存儲(chǔ)在裝置B(IOl)上的副本(對(duì)象Ob)來(lái)更新對(duì)象Oa的副本,并向裝置B(IOl)發(fā)送啟用RDC方法的請(qǐng)求。在另一可選實(shí)施例中,RDC方法可由裝置B(IOl)啟用。裝置A(IOO)和裝置B(IOl)都處理其本地存儲(chǔ)對(duì)象,并將相關(guān)聯(lián)數(shù)據(jù)以數(shù)據(jù)依賴(lài)方式拆分成可變數(shù)量塊(例如塊1-n、塊Ι-k分別是對(duì)象0A、Ob的)。諸如信息塊強(qiáng)散列(SHA)的簽名集由兩個(gè)裝置本地計(jì)算。兩個(gè)裝置都編譯簽名的單獨(dú)列表。在RDC方法的下一步驟期間,裝置B(IOl)經(jīng)網(wǎng)絡(luò)102向裝置A(IOO)傳送經(jīng)計(jì)算的簽名列表和信息塊長(zhǎng)度1-n。裝置A(IOO)通過(guò)把每個(gè)收到的簽名與其自己生成的簽名列表l_k相比較,裝置A(IOO)估算簽名的這個(gè)列表。簽名列表中的不匹配指示對(duì)象中需要修正的一個(gè)或多個(gè)差異。裝置A(IOO)傳送對(duì)裝置B(IOl)發(fā)送已由簽名列表中的不匹配所標(biāo)識(shí)的信息塊的請(qǐng)求。裝置B(IOl)隨后壓縮并傳送被請(qǐng)求的信息塊,然后該信息塊在接收和解壓縮完成后由裝置A(IOO)進(jìn)行重組。裝置A(IOO)把收到的信息塊與其自己的匹配信息塊進(jìn)行重組,以獲取對(duì)象%的本地副本。示例計(jì)算裝置圖2是根據(jù)本發(fā)明安排的示例計(jì)算裝置的框圖。在基本配置中,計(jì)算裝置200通常包括至少一個(gè)處理單元(202)和系統(tǒng)存儲(chǔ)器(204)。取決于計(jì)算裝置的準(zhǔn)確配置和類(lèi)型,系統(tǒng)存儲(chǔ)器204可以是易失性的(諸如RAM)、非易失性的(諸如ROM、閃存等等)、或兩者的某些組合。系統(tǒng)存儲(chǔ)器204通常包括操作系統(tǒng)Q05);—個(gè)或多個(gè)程序模塊O06);也可包括程序數(shù)據(jù)(207)?;九渲糜商摼€208內(nèi)那些組件如圖2所示。計(jì)算裝置200還可具有附加特征或功能。例如,計(jì)算裝置200還可包括附加數(shù)據(jù)存儲(chǔ)裝置(可移動(dòng)的和/或不可移動(dòng)的)諸如磁盤(pán)、光盤(pán)或磁帶。這種附加存儲(chǔ)由可移動(dòng)存儲(chǔ)209以及不可移動(dòng)存儲(chǔ)210如圖2所示。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用來(lái)存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性的和非易失性的、可移動(dòng)的和不可移動(dòng)的介質(zhì)。系統(tǒng)存儲(chǔ)器204、可移動(dòng)存儲(chǔ)器209和不可移動(dòng)存儲(chǔ)器210都是計(jì)算機(jī)存儲(chǔ)介質(zhì)的示例。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于RAM、R0M、EEPR0M、閃存或其它存儲(chǔ)器技術(shù),CD-ROM、數(shù)字式多用盤(pán)(DVD)或其它光學(xué)存儲(chǔ)器,磁盒、磁帶、磁盤(pán)存儲(chǔ)器或其它磁性存儲(chǔ)裝置,或任何可用于存儲(chǔ)所需信息并可由計(jì)算裝置200訪問(wèn)的其它介質(zhì)。任何這種計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是裝置200的一部分。計(jì)算裝置200也可具有諸如鍵盤(pán)、鼠標(biāo)、筆、語(yǔ)音輸入裝置、觸摸輸入裝置等等的輸入裝置212。還可包括諸如顯示器、揚(yáng)聲器、打印機(jī)等等的輸出裝置214。這些裝置都是本領(lǐng)域技術(shù)人員眾所周知的,在此無(wú)需贅述。計(jì)算裝置200還可包含使裝置能與其它計(jì)算裝置218諸如經(jīng)網(wǎng)絡(luò)進(jìn)行通信的通信連接216。通信連接216是通信介質(zhì)的一個(gè)示例。通信介質(zhì)通常體現(xiàn)為計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中的數(shù)據(jù),并包括任何信息傳遞介質(zhì)。術(shù)語(yǔ)“已調(diào)數(shù)據(jù)信號(hào)”意指用將信息編碼成信號(hào)的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例,而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接有線連接的有線介質(zhì),以及諸如聲學(xué)、RF、微波、衛(wèi)星、紅外和其它無(wú)線介質(zhì)的無(wú)線介質(zhì)。在此所用的術(shù)語(yǔ)計(jì)算機(jī)可讀介質(zhì)包括存儲(chǔ)介質(zhì)和通信介質(zhì)。各種過(guò)程和接口在駐留于系統(tǒng)存儲(chǔ)器204中的一個(gè)或多個(gè)應(yīng)用程序中實(shí)現(xiàn)。在一示例中,應(yīng)用程序是在計(jì)算裝置(例如客戶(hù)機(jī))和另一位于遠(yuǎn)程的計(jì)算裝置(例如服務(wù)器)之間安排文件同步的遠(yuǎn)程差分壓縮算法。在另一示例中,應(yīng)用程序是在系統(tǒng)存儲(chǔ)器204中提供的用來(lái)壓縮和解壓縮數(shù)據(jù)的壓縮/解壓縮過(guò)程。在又一示例中,應(yīng)用程序是客戶(hù)機(jī)裝置的系統(tǒng)存儲(chǔ)器204中提供的解密過(guò)程。遠(yuǎn)程差分壓縮(RDC)圖3A和;3B是根據(jù)本發(fā)明的至少一方面示出示例RDC過(guò)程的示圖。取決于實(shí)際對(duì)象Oa和A特定信息塊的數(shù)量可根據(jù)每個(gè)實(shí)例變化。參照?qǐng)D3A,基本RDC協(xié)議在兩個(gè)計(jì)算裝置之間(裝置A和裝置B)達(dá)成。RDC協(xié)議隱含地假設(shè)裝置A和B具有相同對(duì)象或資源的兩個(gè)不同實(shí)例(或版本),分別由對(duì)象實(shí)例(或版本)Oa和%標(biāo)識(shí)。作為本圖中示出的實(shí)例,裝置A具有資源Oa的舊版本,而裝置B具有關(guān)聯(lián)于該資源的在內(nèi)容(或數(shù)據(jù))上稍有(或增加)不同的版本0B。用來(lái)從裝置B把經(jīng)更新對(duì)象%傳送到裝置A的協(xié)議如下所述??墒褂妙?lèi)似的協(xié)議把對(duì)象從裝置A傳送到裝置B,且無(wú)需對(duì)以下所述的協(xié)議作重大更改就可在裝置A或裝置B的要求下開(kāi)始該傳送。1.裝置A使用RDC協(xié)議向裝置B發(fā)送傳送對(duì)象Ob的請(qǐng)求。在一可選實(shí)施例中,裝置B開(kāi)始傳送;在此情形中,協(xié)議跳過(guò)步驟1并從下面的步驟2開(kāi)始。2.裝置A將對(duì)象Oa拆分成信息塊l_k,且對(duì)對(duì)象Oa的每個(gè)信息塊1……k分別計(jì)算簽名和長(zhǎng)度(或字節(jié)字節(jié)數(shù)的大小)LenAi。將在下面詳細(xì)描述拆分成信息塊。裝置A存儲(chǔ)簽名和信息塊長(zhǎng)度的列表((SkA1,LenA1)……(SigAk,LenJ)。3.裝置B將對(duì)象%拆分成信息塊1-n,且對(duì)對(duì)象%的每個(gè)信息塊1……η分別計(jì)算簽名SigBi和長(zhǎng)度字節(jié)LenBi。在步驟3中使用的拆分算法必須匹配在以上步驟2中的算法。4.裝置B向裝置A發(fā)送關(guān)聯(lián)于對(duì)象%的經(jīng)計(jì)算的信息塊簽名和信息塊長(zhǎng)度列表((SigB1,Lenm)……(SigBn,Lerv))。隨后可由裝置A使用信息塊長(zhǎng)度信息以通過(guò)用其開(kāi)始偏移及長(zhǎng)度對(duì)它們的標(biāo)識(shí)來(lái)請(qǐng)求信息塊的特定組。由于列表的固有序列,通過(guò)合計(jì)列表中所有前面信息塊的長(zhǎng)度,在每個(gè)信息塊的字節(jié)數(shù)Bi中計(jì)算起始偏移是可能的。在另一實(shí)施例中,在發(fā)送給裝置A之前,可使用無(wú)損壓縮算法對(duì)信息塊簽名和信息塊長(zhǎng)度的列表進(jìn)行緊密編碼,并作進(jìn)一步壓縮。5.收到該數(shù)據(jù)后,裝置A根據(jù)在步驟2中為對(duì)象Oa計(jì)算的關(guān)聯(lián)于內(nèi)容舊版本的簽名SigA1……SigAk來(lái)比較收到的簽名列表。6.裝置A向裝置B發(fā)送對(duì)所有在步驟4接收的其簽名與在步驟2由裝置A計(jì)算的任何簽名都不匹配的信息塊的請(qǐng)求。對(duì)于每個(gè)被請(qǐng)求的信息塊Bi,該請(qǐng)求包括在步驟4中由裝置A計(jì)算的信息塊起始偏移和信息塊長(zhǎng)度。7.裝置B向裝置A發(fā)送關(guān)聯(lián)于所有被請(qǐng)求信息塊的內(nèi)容。由裝置B發(fā)送的內(nèi)容在發(fā)送給裝置A之前可使用無(wú)損壓縮算法進(jìn)行進(jìn)一步的壓縮。8.通過(guò)使用在步驟7中從裝置B接收的信息塊,以及匹配步驟4中由裝置B發(fā)送的簽名的對(duì)象Oa自己的信息塊,裝置A重建了對(duì)象Ob的本地副本。在裝置A上重新排列的本地和遠(yuǎn)程信息塊的順序由在步驟4中裝置A接收的信息塊簽名列表來(lái)確定。拆分步驟2和3以使用在相關(guān)聯(lián)對(duì)象(分別為Oa和Ob)的每個(gè)字節(jié)位置上計(jì)算的指紋函數(shù)的數(shù)據(jù)依賴(lài)方式出現(xiàn)。對(duì)于一給定位置,使用包圍對(duì)象中位置的小數(shù)據(jù)窗口來(lái)計(jì)算指紋函數(shù);指紋函數(shù)的值取決于包括在該窗口的對(duì)象的所有字節(jié)數(shù)。指紋函數(shù)可以是任何適當(dāng)函數(shù),諸如散列函數(shù)或Rabin多項(xiàng)式。在指紋函數(shù)算出滿(mǎn)足選定條件的值的對(duì)象位置上確定信息塊邊界??墒褂妹艽a學(xué)安全散列函數(shù)(SHA)或諸如抗沖突(collision-resistant)散列函數(shù)的某些其它散列函數(shù)來(lái)計(jì)算信息塊簽名。步驟4中發(fā)送的簽名和信息塊長(zhǎng)度列表提供了使用原始信息塊和經(jīng)標(biāo)識(shí)更新的或新的信息塊來(lái)重建對(duì)象的基礎(chǔ)。步驟6中請(qǐng)求的信息塊由其偏移和長(zhǎng)度標(biāo)識(shí)。通過(guò)以相同順序使用其簽名匹配步驟4中由裝置A所接收簽名的本地和遠(yuǎn)程信息塊,在裝置A上重建對(duì)象。當(dāng)重建步驟由裝置A完成后,可刪除對(duì)象Oa并以在裝置A上重建的對(duì)象%的副本替換之。在其它實(shí)施例中,裝置A可保留對(duì)象Oa用于未來(lái)RDC傳送期間信息塊可能的“重新使用”。對(duì)于大對(duì)象,即使對(duì)象Oa和對(duì)象%非常接近或相同,圖3A中示出的基本RDC協(xié)議實(shí)例在步驟4仍然導(dǎo)致了大量固定的額外開(kāi)銷(xiāo)(overhead)。給定一平均信息塊尺寸C,步驟4中經(jīng)網(wǎng)絡(luò)傳送的信息量與對(duì)象%的尺寸成比例,尤其與對(duì)象%的尺寸除以C,即對(duì)象B的信息塊數(shù)量成比例,且因此與在步驟4中傳送的(信息塊簽名,信息塊長(zhǎng)度)對(duì)成比例。例如,參照?qǐng)D6,大圖像(由諸如微軟虛擬服務(wù)器的虛擬機(jī)器監(jiān)視器使用的虛擬硬盤(pán)圖像)可導(dǎo)致尺寸為9.IGB的對(duì)象(Ob)。對(duì)于平均信息塊尺寸C為3KB而言,9GB的對(duì)象可導(dǎo)致為對(duì)象%產(chǎn)生的三百萬(wàn)個(gè)信息塊,帶有在步驟4需要經(jīng)網(wǎng)絡(luò)傳送的42MB的相關(guān)聯(lián)簽名和信息塊長(zhǎng)度信息。由于即使當(dāng)對(duì)象Oa和%的差異(且因此需要在步驟7傳送的數(shù)據(jù)量)非常小時(shí)仍需經(jīng)網(wǎng)絡(luò)傳送42MB的簽名信息,協(xié)議的固定額外開(kāi)銷(xiāo)成本非常高。通過(guò)使用RDC協(xié)議的遞歸應(yīng)用而不是步驟4中的簽名信息傳送,可大大減少固定額外開(kāi)銷(xiāo)成本。參照?qǐng)D3B,替換基本RDC算法步驟4的附加步驟4.2-4.8描述如下。步驟4.2-4.8對(duì)應(yīng)于如上所述的基本RDC協(xié)議的步驟2-8的遞歸應(yīng)用。遞歸應(yīng)用還可進(jìn)一步地應(yīng)用于以下的步驟4.4等等,直至任意所需遞歸深度。4.2裝置A執(zhí)行其簽名和信息塊長(zhǎng)度列表((SigA1,LenA1)……(SigAk,LenAk))的遞歸拆分,形成遞歸式簽名信息塊,從而獲得遞歸式簽名和遞歸式信息塊長(zhǎng)度的另一列表((RSigA1,RLenA1)......(RSigAs,RLenJ),其中s<<k。4.3裝置B遞歸地把簽名和信息塊長(zhǎng)度列表((SigB1,Lenm)……(SigBk,Lenek))拆分成塊,從而產(chǎn)生遞歸式簽名和遞歸式信息塊長(zhǎng)度的另一列表((RSkB1,RLenm)……(RSigBr,RLenBr)),其中r<<η。4.4裝置B向裝置A發(fā)送遞歸式簽名和遞歸式信息塊長(zhǎng)度的按序列表((RSkB1,RLenm)……(RSkBr,RLenJ)。在發(fā)送給裝置A之前,可使用無(wú)損壓縮算法對(duì)遞歸式信息塊簽名和遞歸式信息塊長(zhǎng)度的列表進(jìn)行緊密編碼,并作進(jìn)一步壓縮。4.5裝置A把在步驟4.2中計(jì)算的遞歸式簽名的自己的列表與從裝置B收到的遞歸式簽名進(jìn)行比較。4.6裝置A向裝置B發(fā)送對(duì)在其集(RSi^u……RSi^J中沒(méi)有匹配的遞歸式簽名的每個(gè)單個(gè)遞歸式簽名信息塊(帶有遞歸式簽名RsigBk)的請(qǐng)求。4.7裝置B向裝置A發(fā)送被請(qǐng)求遞歸式簽名信息塊。在發(fā)送給裝置A之前可使用無(wú)損壓縮算法對(duì)該被請(qǐng)求遞歸式簽名信息塊進(jìn)行進(jìn)一步的壓縮。4.8通過(guò)使用局部匹配的遞歸式簽名信息塊,以及在步驟4.7中從裝置B接收的遞歸式信息塊,裝置A重建了簽名和信息塊信息列表((SkB1,Lenm)……(SigBn,LenBn))。當(dāng)完成以上的步驟4.8后,執(zhí)行在如上所述基本RDC協(xié)議的步驟5上繼續(xù),如圖3A所示。作為遞歸式拆分操作的結(jié)果,關(guān)聯(lián)于對(duì)象的遞歸式簽名的數(shù)量按等于平均信息塊尺寸C的系數(shù)減少,產(chǎn)生極少的遞歸式簽名量(分別是對(duì)于對(duì)象0A,r<<η;對(duì)于對(duì)象0Β,s<<k)。在一實(shí)施例中,可使用與拆分原始對(duì)象Oa和Ob相同的拆分參數(shù)來(lái)拆分簽名。在一可選實(shí)施例中,可將其它拆分參數(shù)用于遞歸步驟。對(duì)于非常大的對(duì)象,可應(yīng)用以上的遞歸步驟k次,其中k彡1。對(duì)于平均信息塊尺寸C,遞歸式拆分可導(dǎo)致網(wǎng)絡(luò)上的簽名通信量的尺寸(步驟4.2到4.8)按約對(duì)應(yīng)于Ck的系數(shù)減少。由于C相對(duì)較大,一般對(duì)于極大的對(duì)象才會(huì)需要大于1的遞歸深度。在一實(shí)施例中,通過(guò)考慮包括一個(gè)或多個(gè)以下參數(shù)可動(dòng)態(tài)地確定的遞歸步驟數(shù)期望平均信息塊尺寸、對(duì)象Oa和/或%的尺寸、對(duì)象Oa和/或%的數(shù)據(jù)格式、鏈接裝置A和裝置B的網(wǎng)絡(luò)的等待時(shí)間和帶寬特征。在步驟2使用的指紋函數(shù)與步驟3中使用的指紋函數(shù)相匹配。類(lèi)似地,在步驟4.2使用的指紋函數(shù)與步驟4.3中使用的指紋函數(shù)相匹配。步驟2-3的指紋函數(shù)與步驟4.2-4.3的指紋函數(shù)可有選擇地匹配。如前所述,每個(gè)指紋函數(shù)都使用包圍對(duì)象中位置的小數(shù)據(jù)窗口;其中關(guān)聯(lián)于指紋函數(shù)的值取決于包括在數(shù)據(jù)窗口內(nèi)的對(duì)象的所有字節(jié)數(shù)。數(shù)據(jù)窗口的尺寸可基于一個(gè)或多個(gè)標(biāo)準(zhǔn)進(jìn)行動(dòng)態(tài)地調(diào)整。此外,拆分過(guò)程使用指紋函數(shù)的值以及一個(gè)或多個(gè)附加拆分參數(shù),以確定以上步驟2-3和4.2-4.3中的信息塊邊界。通過(guò)動(dòng)態(tài)地改變窗口尺寸和拆分參數(shù),信息塊邊界得以調(diào)整從而任何必須的數(shù)據(jù)傳送都可使用最少的可用帶寬來(lái)完成。用于調(diào)整窗口尺寸和拆分參數(shù)的示例標(biāo)準(zhǔn)包括關(guān)聯(lián)于對(duì)象的數(shù)據(jù)類(lèi)型、環(huán)境限制、使用模型、連接裝置A和裝置B的網(wǎng)絡(luò)的等待時(shí)間和帶寬特征、以及用來(lái)確定平均數(shù)據(jù)傳送塊尺寸的任何其它適當(dāng)模型。示例數(shù)據(jù)類(lèi)型包括字處理文件、數(shù)據(jù)庫(kù)圖像、電子制表軟件表格、展示放映幻燈片以及圖像。示例使用模型可在典型數(shù)據(jù)傳送所需的平均字節(jié)數(shù)受到監(jiān)測(cè)之處。對(duì)應(yīng)用程序中單個(gè)元素的改變可導(dǎo)致對(duì)相關(guān)聯(lián)數(shù)據(jù)和/或文件的一些改變。因?yàn)榇蠖鄶?shù)應(yīng)用程序具有相關(guān)聯(lián)文件類(lèi)型,該文件類(lèi)型是值得在調(diào)整窗口尺寸和拆分參數(shù)中考慮的一個(gè)可能標(biāo)準(zhǔn)。在一示例中,字處理文件中單個(gè)字符的更改導(dǎo)致了相關(guān)聯(lián)文件中約100個(gè)字節(jié)的改變。在另一示例中,數(shù)據(jù)庫(kù)應(yīng)用程序中單個(gè)元素的更改導(dǎo)致了數(shù)據(jù)庫(kù)索引文件中1000個(gè)字節(jié)的改變。對(duì)于每個(gè)示例,適當(dāng)?shù)拇翱诔叽绾筒鸱謪?shù)可能是不同的,從而使拆分過(guò)程具有適當(dāng)?shù)幕谔囟☉?yīng)用而最優(yōu)化的粒度。示例過(guò)程流圖4A和4B是示出根據(jù)本發(fā)明的至少一方面安排的用于在示例RDC過(guò)程期間本地裝置(例如裝置A)和遠(yuǎn)程裝置(例如裝置B)之間交互的過(guò)程流。圖4A的左側(cè)示出了在本地裝置A上操作的步驟400-413,而圖4A的右側(cè)示出了在遠(yuǎn)程裝置B上操作的步驟450-456。如圖4A所示,交互由裝置A在步驟400請(qǐng)求對(duì)對(duì)象%的RDC傳送開(kāi)始,而裝置B在步驟450接收該請(qǐng)求。隨后,本地裝置A和遠(yuǎn)程裝置B分別在步驟401和451獨(dú)立地計(jì)算指紋、在步驟402和452將其各自的對(duì)象拆分成信息塊、并在步驟403和453計(jì)算每個(gè)信息塊的簽名(例如SHA)。在步驟454,裝置B向裝置A發(fā)送在步驟452和453中計(jì)算的簽名和信息塊長(zhǎng)度列表,而裝置A在步驟404接收該信息。在步驟405,本地裝置A把被請(qǐng)求信息塊的列表初始化為空列表,并把遠(yuǎn)程信息塊的跟蹤偏移初始化為零。在步驟406,基于對(duì)步驟404中接收的列表的考慮,選擇下一(簽名,信息塊長(zhǎng)度)對(duì)(SigByLenBi)。在步驟407,裝置A檢查在步驟406中選定的簽名SigBi是否匹配在步驟403期間計(jì)算的任一簽名。如果匹配,執(zhí)行在步驟409繼續(xù)。如果不匹配,跟蹤遠(yuǎn)程信息塊偏移和字節(jié)長(zhǎng)度LenBi在步驟408被添加到請(qǐng)求列表中。在步驟409,跟蹤偏移增加一個(gè)當(dāng)前信息塊長(zhǎng)度LenBitl在步驟410,本地裝置A測(cè)試是否已處理了在步驟404中接收的所有(簽名,信息塊長(zhǎng)度)對(duì)。如果沒(méi)有,執(zhí)行在步驟406繼續(xù)。否則,在步驟411對(duì)信息塊請(qǐng)求列表以緊密方式進(jìn)行適當(dāng)?shù)鼐幋a、壓縮、并發(fā)送給遠(yuǎn)程裝置B。遠(yuǎn)程裝置B在步驟455接收信息塊的經(jīng)壓縮列表,并在步驟456對(duì)其解壓縮,然后壓縮并送回信息塊數(shù)據(jù)。本地裝置在步驟412接收并解壓縮被請(qǐng)求的信息塊。使用對(duì)象Oa的本地副本和收到的信息塊數(shù)據(jù),本地裝置在步驟413重組%的本地副本。圖4B示出圖4A步驟413的具體示例。過(guò)程在步驟414繼續(xù),其中本地裝置A把重建對(duì)象初始化為空。在步驟415,基于對(duì)步驟404接收的列表考慮,選擇下一(簽名,信息塊長(zhǎng)度)對(duì)(SigBi5LenBi)。在步驟416,裝置A檢查在步驟417選擇的簽名SigBi是否匹配在步驟403期間計(jì)算的任一簽名。如果匹配,執(zhí)行在步驟417繼續(xù),其中對(duì)應(yīng)的本地信息塊被附加到重建對(duì)象中。如果不匹配,則被接收及解壓縮的遠(yuǎn)程信息塊在步驟418附加于重建對(duì)象上。在步驟419,本地裝置A測(cè)試是否已處理了在步驟404接收的所有(簽名,信息塊長(zhǎng)度)對(duì)。如果沒(méi)有,執(zhí)行在步驟415繼續(xù)。否則,在步驟420使用重建對(duì)象來(lái)替代裝置A上對(duì)象Oa的舊副本。示例遞歸式簽名傳送過(guò)程流圖5A和5B是示出根據(jù)本發(fā)明的至少一方面安排的用于在示例RDC過(guò)程中簽名和信息塊長(zhǎng)度列表的遞歸傳送的過(guò)程流的示圖。可把以下所述的過(guò)程應(yīng)用于嘗試更新共同關(guān)聯(lián)對(duì)象的本地和遠(yuǎn)程裝置。圖5A的左側(cè)示出了在本地裝置A上操作的步驟501-513,而圖5A的右側(cè)示出了在遠(yuǎn)程裝置B上操作的步驟551-556。步驟501-513替換圖4A中的步驟404,而步驟551-556替換圖4A中的步驟454。在步驟501和551中,本地裝置A和遠(yuǎn)程裝置B分別獨(dú)立地計(jì)算在步驟402/403和452/453已分別計(jì)算的其簽名和信息塊長(zhǎng)度列表((SigA1,LenA1)……(SigAk,LenAk))和((SigB1,Lenm)……(SK))的遞歸式指紋。在步驟502和552裝置把其相應(yīng)的簽名和信息塊長(zhǎng)度列表拆分成遞歸式信息塊,且在步驟503和553為每個(gè)遞歸式信息塊分別計(jì)算遞歸式簽名(例如SHA)。在步驟554,裝置B向裝置A發(fā)送在步驟552和553中計(jì)算的遞歸式簽名和信息塊長(zhǎng)度列表,而裝置A在步驟504接收該信息。在步驟505,本地裝置A把被請(qǐng)求的遞歸式信息塊的列表初始化為空列表,并把遠(yuǎn)程遞歸式信息塊的跟蹤遠(yuǎn)程遞歸式偏移初始化為零。在步驟506,基于對(duì)步驟504收到列表的考慮,選擇下一(遞歸式簽名,遞歸式信息塊長(zhǎng)度)對(duì)(RSkBi,RLenBi)。在步驟507,裝置A檢查在步驟506選定的遞歸式簽名RSkBi是否與其在步驟503期間計(jì)算的任一遞歸式簽名匹配。如果匹配,執(zhí)行在步驟509繼續(xù)。如果不匹配,追蹤遠(yuǎn)程遞歸式信息塊偏移,且字節(jié)長(zhǎng)度RLenBi在步驟508添加到請(qǐng)求列表。在步驟509,追蹤遠(yuǎn)程遞歸式偏移增加當(dāng)前遞歸式信息塊的長(zhǎng)度RLenBi。在步驟510,本地裝置A測(cè)試是否已處理了在步驟504收到的所有(遞歸式簽名,遞歸式信息塊長(zhǎng)度)對(duì)。如果沒(méi)有,執(zhí)行在步驟506繼續(xù)。否則,遞歸式信息塊請(qǐng)求列表在步驟511被緊密編碼、壓縮、并發(fā)送到遠(yuǎn)程裝置B。遠(yuǎn)程裝置B在步驟555接收遞歸式信息塊的經(jīng)壓縮列表、解壓縮該列表,然后在步驟556壓縮并送回遞歸式信息塊數(shù)據(jù)。本地裝置在步驟512接收并解壓縮被請(qǐng)求的遞歸式信息塊數(shù)據(jù)。使用簽名和信息塊長(zhǎng)度列表((SkA1,LenA1)……(SkAk,LenAk))的本地副本和收到的遞歸式信息塊數(shù)據(jù),本地裝置在步驟513重組簽名和信息塊長(zhǎng)度列表((SkB1,LenB1)……(SigBn,LenBn))的本地副本。然后執(zhí)行在圖4A中的步驟405上繼續(xù)。圖5B示出了圖5A步驟513的詳細(xì)示例。過(guò)程在步驟514繼續(xù),其中本地裝置A把遠(yuǎn)程簽名和信息塊長(zhǎng)度列表SIGCL初始化為空列表。在步驟515,基于對(duì)在步驟504收到列表的考慮選擇下一(遞歸式簽名,遞歸式信息塊長(zhǎng)度)對(duì)(RSkBi,RLenm)0在步驟516,裝置A檢查在步驟515選定的遞歸式簽名RSigei是否與步驟503期間其計(jì)算的任一遞歸式簽名匹配。如果匹配,執(zhí)行在步驟517繼續(xù),其中裝置A將對(duì)應(yīng)的本地遞歸式信息塊附加到SIGCL0如果不匹配,在步驟518把遠(yuǎn)程接收的遞歸式信息塊附加到SIGCL。在步驟519,本地裝置A測(cè)試是否已處理在步驟504收到的所有(遞歸式簽名,遞歸式信息塊長(zhǎng)度)對(duì)。如果沒(méi)有,執(zhí)行在步驟515繼續(xù)。否則,簽名和信息塊信號(hào)列表((SigB1,LenB1)……(SigBn,LenBn))的本地副本在步驟520被設(shè)定為SIGCL的值。然后執(zhí)行回到圖4A中的步驟405繼續(xù)。可任選地估算遞歸式簽名和信息塊長(zhǎng)度列表以確定是否必需附加的遞歸式遠(yuǎn)程差分壓縮以使帶寬利用最少,如前所述。通過(guò)用RDC過(guò)程的另一實(shí)例替換步驟504和5M來(lái)使用所述拆分過(guò)程等等,直到達(dá)到所需的壓縮級(jí)別,遞歸式簽名和信息塊長(zhǎng)度列表可遞歸地加以壓縮。當(dāng)遞歸式簽名列表充分壓縮之后,為了如前在所述遠(yuǎn)程和本地裝置之間的傳送返回遞歸式簽名列表。圖6是圖形地示出根據(jù)實(shí)例實(shí)施例安排的示例RDC序列中遞歸壓縮示例的示圖。如圖6所示的示例,原始對(duì)象是9.IGB的數(shù)據(jù)。使用拆分過(guò)程編譯簽名和信息塊長(zhǎng)度列表,其中簽名和信息塊長(zhǎng)度列表導(dǎo)致三百萬(wàn)個(gè)信息塊(或42MB的尺寸)。在第一次遞歸步驟后,簽名列表被拆分成三萬(wàn)三千個(gè)信息塊,并減少為尺寸為33KB的遞歸式簽名和遞歸式信息塊長(zhǎng)度列表。通過(guò)遞歸地壓縮簽名列表,可顯著地減少用來(lái)傳送簽名列表的帶寬利用,從42MB下降到約395KB。示例對(duì)象更新圖7是示出根據(jù)本發(fā)明的至少一方面安排的使用示例RDC過(guò)程進(jìn)行客戶(hù)機(jī)和服務(wù)器應(yīng)用的交互的示圖。在服務(wù)器和客戶(hù)機(jī)兩者上的原始文件都包含有文本“Thequickfoxjumpedoverthelazybrowndog.Thedogwassolazythathedidn'tnoticethefoxjumpingoverhim.,,。隨后,服務(wù)器上的文件被更新為“Thequickfoxjumpedoverthelazybrowndog.Thebrowndogwassolazythathedidn'tnoticethefoxjumpingoverhim.,,。如前所述,客戶(hù)機(jī)周期性地請(qǐng)求文件作更新。客戶(hù)機(jī)和服務(wù)器都把對(duì)象(文本)拆分成如圖所示的信息塊。在客戶(hù)機(jī)上,信息塊為“!"hequickfoxjumped","overthelazybrowndog.,,、“Thedogwassolazythathedidn'tnotice,,、以及"thefoxjumpingoverhim.”;生成的客戶(hù)機(jī)簽名列表為SHAn、SHA12、SHA13、以及SHA14。在服務(wù)器上,信息塊為"Thequickfoxjumped,,、"overthelazybrowndog.,,、"Thebrowndogwas,,、‘‘solazythathedidn,tnotice,,、以及‘‘thefoxjumpingoverhim.”;生成的服務(wù)器簽名列表為SHA21、SHA22,SHA23>SHA24,以及SHA25。服務(wù)器使用如前所述的遞歸式壓縮技術(shù)傳送簽名列表(SHA21-SHA25)。客戶(hù)機(jī)確認(rèn)本地存儲(chǔ)的簽名列表(SHA11-SHA14)與收到的簽名列表(SHA21-SHA25)不匹配,并向服務(wù)器請(qǐng)求遺漏的信息塊3和4。服務(wù)器壓縮并傳送信息塊3和4(“Thebrowndogwas”、和“solazythathedidn'tnotice”)??蛻?hù)機(jī)接收經(jīng)壓縮信息塊、解壓縮它們、并更新文件,如圖7所示。拆分信息塊分析通過(guò)優(yōu)化用于拆分對(duì)象數(shù)據(jù)和/或拆分簽名和信息塊長(zhǎng)度列表的拆分信息塊過(guò)程,可提高以上所述的基本RDC過(guò)程的效率。基本RDC過(guò)程具有由以下諸項(xiàng)之和標(biāo)識(shí)的網(wǎng)絡(luò)通信額外開(kāi)銷(xiāo)成本(Sl)I來(lái)自B的簽名和信息塊長(zhǎng)度I=I0BMSigLenI/C,其中|0B|是對(duì)象Ob的字節(jié)長(zhǎng)度,SigLen是(簽名,信息塊長(zhǎng)度)對(duì)的字節(jié)長(zhǎng)度、以及C是期望平均信息塊的字節(jié)長(zhǎng)度;以及(S2)Σchunk_length(信息塊長(zhǎng)度),其中(簽名,信息塊長(zhǎng)度)e來(lái)自B的簽名,且簽名來(lái)自A的簽名因此通信成本獲益于平均的大信息塊尺寸、以及遠(yuǎn)程和本地信息塊之間的大交集。選擇如何把對(duì)象拆分成信息塊確定了協(xié)議的質(zhì)量。本地和遠(yuǎn)程裝置必需無(wú)預(yù)先通信地同意在何處拆分對(duì)象。以下描述并分析用來(lái)找出拆分點(diǎn)的各種方法。假設(shè)拆分算法已知以下特征1.松弛字節(jié)(slack)用于調(diào)和文件差異所需要的信息塊字節(jié)數(shù)。假設(shè)有序列si、s2和s3,并通過(guò)連接形成兩個(gè)序列sls3、s2s3。這兩個(gè)序列生成信息塊Chunksl和Chunks2。如果Chunksl’和Chunks2’分別是從Chunksl和Chunks2直到抵達(dá)第一個(gè)共同后綴的信息塊長(zhǎng)度的和,松弛字節(jié)由以下公式給出slack=Chunks/-1S1=Chunks2'-1S22.平均信息塊尺寸C:當(dāng)對(duì)象OA和OB有S段都共同具有平均尺寸K,可在客戶(hù)機(jī)上本地獲得的信息塊數(shù)量由以下給出S*L(K-slack)/C」且以上的(S2)改寫(xiě)為|0A|-S*L(K-slack)/C」因而,使松弛字節(jié)最少的拆分信息塊算法將使經(jīng)網(wǎng)絡(luò)傳送的字節(jié)數(shù)最少。因此使用使預(yù)計(jì)的松弛字節(jié)最少的拆分信息塊算法是有利的。指紋函數(shù)所有的拆分信息塊算法都使用取決于小窗口(即有限字節(jié)序列)的指紋函數(shù)或散列(hash)。當(dāng)那些算法適合有限差分(強(qiáng)度縮減)優(yōu)化時(shí),用于拆分信息塊的散列算法的執(zhí)行時(shí)間不依賴(lài)散列窗口尺寸。因而,對(duì)于尺寸為k的散列窗口,僅使用Ivbk、以及#[bQ,b1;...,bkJ來(lái)計(jì)算散列#[b1;...,bk_1bk]應(yīng)當(dāng)是容易的(僅需一定數(shù)量的步驟)??刹捎酶鞣N散列函數(shù),諸如使用Rabin多項(xiàng)式的散列函數(shù)、以及基于預(yù)先計(jì)算的隨機(jī)數(shù)表格(table)顯得計(jì)算更為有效的其它散列函數(shù)。在一示例中,可使用基于滾動(dòng)求校驗(yàn)和的32位Adler散列作為指紋的散列函數(shù)。該過(guò)程通過(guò)使用帶有256個(gè)條目的固定表格提供相當(dāng)好的隨機(jī)散列函數(shù),其中表格的每個(gè)條目是預(yù)先計(jì)算的16位隨機(jī)數(shù)。使用該表格把指紋字節(jié)轉(zhuǎn)換成16位隨機(jī)數(shù)。32位散列被拆分成兩個(gè)16位數(shù)suml和sum2,它們由以下過(guò)程更新suml+=table[bk]-table[b0]sum2+=suml_k*table[b0]在另一示例中,可使用具有循環(huán)位移的64位隨機(jī)散列作為指紋的散列函數(shù)。循環(huán)位移的周期由散列值的尺寸進(jìn)行限制。因而,使用64位散列值來(lái)設(shè)定散列周期為64。更新散列的過(guò)程如下給出hash=hash"((table[b0]<<1)|(table[b0]>>u))"table[bk];hash=(hash<<1)|(hash>>63);wherel=64并且u=64-1在又一示例中,可采用其它位移方法來(lái)提供指紋。直接循環(huán)位移產(chǎn)生有限長(zhǎng)度的周期,并受散列值尺寸的限制。其它置換有更長(zhǎng)的周期。例如,由循環(huán)(1230)(5678910111213144)(16171819202115)(2324252622)(282927)(3130)給出的置換具有長(zhǎng)度為4*3*5*7*11=4620的周期。使用右位移以及隨后的修補(bǔ)每個(gè)間隔開(kāi)始位置的操作,可計(jì)算該示例置換的單個(gè)應(yīng)用。分析用于以預(yù)定模式拆分信息塊的現(xiàn)有技術(shù)通過(guò)用預(yù)定窗口尺寸k(=48)計(jì)算指紋散列,并基于散列字節(jié)的子集是否匹配預(yù)定模式來(lái)標(biāo)識(shí)拆分點(diǎn),可確定初步的拆分信息塊方法。有了隨機(jī)散列值,該模式也可以為0,且相關(guān)子集也可以是散列的前綴。在基本指令中,這翻譯成以下形式的謂詞CutPoint(hash)=0==(hash&((l<<c)_l))其中c是要相匹配的字節(jié)數(shù)。由于給定隨機(jī)散列函數(shù)匹配的概率為2、導(dǎo)致平均信息塊尺寸C=然而,最小和最大的信息塊尺寸都不由該過(guò)程確定。如果給予的最小信息塊長(zhǎng)度為m,則平均信息塊尺寸為C=m+2c期望松弛字節(jié)的粗略估算通過(guò)考慮流S^3和&&獲取。S1和S2中的拆分點(diǎn)可出現(xiàn)在任意位置。由于平均信息塊長(zhǎng)度是C=m+2%S1和&中最后拆分點(diǎn)的約07C)2部分將在距離m之外。它們將作為在約為2^的松弛。剩下的1_(27C)2作為長(zhǎng)度約為C的松弛。期望松弛將約為(27C)3+(1-(2c/C)2MC/C)=⑵/…+卜⑵/^尸,它具有對(duì)于?。。≈暗目傮w最小值,其值約為23/27=0.85。更精確的分析將對(duì)剩下的U27C)2部分給出較低的估算,但仍需要對(duì)&中距離m內(nèi)的拆分點(diǎn)作補(bǔ)償,這些出發(fā)點(diǎn)用于更高的估算。因而,現(xiàn)有技術(shù)的期望松弛約為0.85*C。過(guò)濾器上拆分信息塊(新技術(shù))過(guò)濾器上拆分信息塊基于固定一過(guò)濾器(長(zhǎng)度為m的模式序列),并根據(jù)該過(guò)濾器匹配指紋散列序列。當(dāng)過(guò)濾器不允許散列序列匹配過(guò)濾器的前綴和后綴時(shí),可推斷任何兩個(gè)匹配之間的最小距離必須至少為m。可從現(xiàn)有技術(shù)中使用的CutPoint(拆分點(diǎn))謂詞中獲取示例過(guò)濾器,通過(guò)把第一個(gè)m-1模式設(shè)定為0!=(hash&((l<<c)_l))并將最后的模式設(shè)定為0==(hash&((1<<c)_1))匹配該過(guò)濾器的概率由(I-P)nrlP給出,其中ρ為2、可計(jì)算期望信息塊長(zhǎng)度由匹配過(guò)濾器概率的倒數(shù)給出(要求過(guò)濾器不允許序列匹配前綴和后綴兩者),因而示例過(guò)濾器的期望長(zhǎng)度為(I-P)I+1PA當(dāng)設(shè)定P:=l/m時(shí)該長(zhǎng)度最小化,且它變?yōu)榧s(e*m)。如本領(lǐng)域技術(shù)人員可查證的,平均松弛在0.8左右徘徊。該方法的可選實(shí)施例使用直接用原始輸入工作的模式,而不使用滾動(dòng)散列。本地最大極限上的信息塊拆分(新技術(shù))本地最大極限上的信息塊拆分基于選擇限制界限(horizon)內(nèi)最大的拆分點(diǎn)位置。以后,我們將使用h作為界限的值。如果在偏移offset-h,...,offset-Ι,以及offset+1,...,offset+h的散列值比offset上的散列值都小,我們說(shuō)在位置offset上的散列是h-本地最大極限。換言之,從h向左和向右的所有位置都具有較小的散列值。本領(lǐng)域技術(shù)人員將理解本地最大極限可由本地最小極限或任何其它基于米制的比照進(jìn)行替換(諸如“與散列中值最接近”)。對(duì)于尺寸為η的對(duì)象的本地最大極限集可在由2·η次操作限制的時(shí)間內(nèi)進(jìn)行計(jì)算,從而計(jì)算本地最大極限集的成本接近于基于獨(dú)立拆分信息塊計(jì)算拆分點(diǎn)的成本,或者與其相同。使用本地最大極限生成的信息塊總是具有對(duì)應(yīng)于h的最小尺寸,其平均尺寸約為2h+l。CutPoint(拆分點(diǎn))過(guò)程如圖8和9所示,并如下所述1.分配長(zhǎng)度為h的陣列M,其中陣列的條目用記錄UsMax=false,hash=0,offset=0}({isMax=假,散列=0,偏移=0})進(jìn)行初始化。每個(gè)域的第一條目(isMax)指示候選對(duì)象是否是本地最大極限。第二個(gè)域條目(hash)指示關(guān)聯(lián)于該條目的散列值,并初始化為零(或可選地,初始化為最大的可能散列值)。條目中最后的域(offset)字節(jié)中指示向候選對(duì)象的絕對(duì)偏移進(jìn)入指紋對(duì)象。2.把陣列M的最小和最大偏移初始化為零。這些變量指向當(dāng)前正在使用的陣列的第一個(gè)和最后的元素。3.Cutpoint(hash,offset)在圖8中的步驟800上開(kāi)始,并在對(duì)象的每次偏移中調(diào)用以更新M并返回指示特定偏移是否是拆分點(diǎn)的結(jié)果。過(guò)程通過(guò)在步驟801設(shè)定結(jié)果=假開(kāi)始。在步驟803,過(guò)程檢查是否M[max].offse計(jì)h+1=offset。如果該條件為真,執(zhí)行在步驟804繼續(xù),其中執(zhí)行以下分配結(jié)果設(shè)定為M[max].isMax,,且max設(shè)定為(max-Ι)%h。然后執(zhí)行在步驟805繼續(xù)。如果步驟803上的條件為假,執(zhí)行在步驟805繼續(xù)。在步驟805,過(guò)程檢查是否M[min].hash>hash。如果該條件為真,執(zhí)行在步驟806上繼續(xù),其中min設(shè)定為min-1%h。執(zhí)行繼續(xù)到步驟807,其中M[min]設(shè)定為{isMax=false,hash=hash,offset=offset}({isMax=假,散列=散列,偏移=偏移}),且到步驟811,返回經(jīng)計(jì)算結(jié)果。如果步驟805上的條件為假,執(zhí)行在步驟808上繼續(xù),其中過(guò)程檢查是否M[min].hash=hash。如果該條件為真,執(zhí)行在步驟807繼續(xù)。如果步驟808上的條件為假,執(zhí)行在步驟809上繼續(xù),其中過(guò)程檢查是否min=max。如果該條件為真,執(zhí)行在步驟810繼續(xù),其中M[min]設(shè)定為{isMax=true,hash=hash,offset=offset}({isMax=真,散列=散列,偏移=偏移})。然后執(zhí)行在步驟811上繼續(xù),返回經(jīng)計(jì)算結(jié)果。如果步驟809上的條件為假,執(zhí)行在步驟811上繼續(xù),其中min設(shè)定為(min+Ι)%h。然后執(zhí)行回到步驟805上繼續(xù)。4.當(dāng)CutPoint(散列,偏移)返回為真時(shí),情形將為在位置offset-h-l上的偏移是新的拆分點(diǎn)。本地最大極限過(guò)程的分析帶有η個(gè)字節(jié)的對(duì)象通過(guò)調(diào)用CutPointη次進(jìn)行處理,從而最多有η個(gè)條目插入給定對(duì)象中。每重復(fù)一次在步驟805開(kāi)始的循環(huán)去除一個(gè)條目,從而不會(huì)有超過(guò)η個(gè)條目刪除。因而,對(duì)于每個(gè)條目可進(jìn)入處理循環(huán)一次,且重復(fù)的組合次數(shù)最多可為η次。這隱含了對(duì)CutPoint的每次調(diào)用循環(huán)中的平均步驟數(shù)比2略小,且計(jì)算拆分點(diǎn)的步驟數(shù)不依賴(lài)h。由于來(lái)自元素的散列值形成min和max之間的遞減鏈,我們將看到min和max之間的平均距離(Imin-max|%h)由h的自然對(duì)數(shù)給出。未包括在M中兩個(gè)相鄰條目之間的偏移具有小于等于兩個(gè)條目的散列值。這種鏈的平均長(zhǎng)度由遞歸等式f(η)=1+1/η*Σk<nf(k)給出。長(zhǎng)度η間隔上的最長(zhǎng)遞減鏈的平均長(zhǎng)度比從最大元素位置開(kāi)始的最長(zhǎng)遞減鏈的平均長(zhǎng)度大1,其中最大元素可以1/η的概率在任意位置找到。遞歸關(guān)系具有對(duì)應(yīng)于調(diào)和數(shù)Hn=1+72+1/3+74+....+1/η的解答,這可通過(guò)把Hn代入等式并執(zhí)行η的歸納來(lái)驗(yàn)證。扎與11的自然對(duì)數(shù)成比例。因而,盡管陣列M被分配以尺寸h,在任一次中只會(huì)使用尺寸的一小部分In(h)。只要數(shù)間的距離保持在h之內(nèi),用模數(shù)h計(jì)算min和max允許M的使用間距的任眉、i曾bvοM初始值額的選擇隱含了拆分點(diǎn)可在前h個(gè)偏移中產(chǎn)生??筛膶?xiě)算法以避免這些前h個(gè)偏移上的拆分點(diǎn)。由該過(guò)程生成的信息塊的期望尺寸約為池+1。我們從給定位置是拆分點(diǎn)的概率獲取該數(shù)字。假設(shè)散列具有m個(gè)不同的可能值。然后概率可由以下公式確定Σ0^k<ml/m(k/m)2h近似地使用積分f^x<ml/m(x/m)2hdx=l/(2h+l)指示當(dāng)m足夠大時(shí)的概率。概率可進(jìn)行更精確地計(jì)算,首先把和簡(jiǎn)化為(l/m)2h+1Σο^k<mk2h它使用Bernoulli數(shù)4擴(kuò)展為(l/m)2h+1l/(2h+l)Σ0^k<2h(2h+l)!/k!(2h+l-k)!Bkm2h+1"k非零的僅有的Bernoulli奇數(shù)是B1,具有_72的對(duì)應(yīng)值。Bernoulli偶數(shù)滿(mǎn)足等式H^(2n)=(-1)"^22^1312nB2n/(2n)!等式左邊代表無(wú)限和1+(1/2)2η+(1/3)2η+.··,對(duì)η的偶數(shù)中值它非常接近于1。當(dāng)m比h大得多時(shí)可忽略除第一項(xiàng)的所有項(xiàng),如通過(guò)積分可見(jiàn)。它們可由0與1之間的常數(shù)乘以與hk_7mk成比例的項(xiàng)給出。第一項(xiàng)(其中Btl=1)簡(jiǎn)化為l/Qh+l)。(第二項(xiàng)為-Λ2πι,第三項(xiàng)為h/(6m2))。)對(duì)于期望松弛的粗略估算考慮流S^3和S1和&中的最后拆分點(diǎn)可出現(xiàn)在任意位置。由于平均信息塊長(zhǎng)度約為池+1,最后拆分點(diǎn)的約1/4在S1和&中都將在距離h之內(nèi)。它們將作為約7/上的拆分點(diǎn)。在另一1/2的情形中,一個(gè)拆分點(diǎn)將在距離h之內(nèi),而另一個(gè)則落于距離h之外。這些作為約3/4h上的拆分點(diǎn)。S1和&中的最后拆分點(diǎn)剩下的1/4部分將在大于h的距離上。因此期望松弛約為74*7/8+72*74+74*74=0.66。因此,我們獨(dú)立拆分信息塊方法的期望松弛是0.66*C,它是對(duì)現(xiàn)有技術(shù)的(0.85*C)的改進(jìn)。有標(biāo)識(shí)拆分點(diǎn)的可選方法,該方法需要執(zhí)行平均較少的指令,而使用最多與h成比例的、或平均為Inh的空間。以上過(guò)程在長(zhǎng)度為η的流中的每個(gè)位置Ο..η-l插入條目??蛇x過(guò)程中的基本思路是僅當(dāng)在長(zhǎng)度為h的間隔中遭遇遞增鏈元素時(shí)進(jìn)行更新。我們觀察到每個(gè)間隔上平均僅有Inh個(gè)這種更新。此外,通過(guò)比較兩個(gè)長(zhǎng)度為h的連續(xù)間隔中的本地最大極限,可確定兩個(gè)本地最大極限中的每一個(gè)是否也是h本地最大極限。在可選過(guò)程中有一特征;它需要通過(guò)以尺寸為h的塊來(lái)遍歷該流來(lái)計(jì)算遞增鏈,其中每個(gè)塊沿反方向遍歷。在該可選過(guò)程中(見(jiàn)圖10、11),為了簡(jiǎn)便我們假設(shè)散列流作為序列給出。子例程CutPoint在長(zhǎng)度為h(在圖中擴(kuò)展為“horizon”)的每個(gè)子序列中得到調(diào)用。它返回零個(gè)或被確定為拆分點(diǎn)的一個(gè)偏移。僅有對(duì)插入的調(diào)用的ln(h)將通過(guò)第一次測(cè)試。通過(guò)根據(jù)A中最大條目來(lái)測(cè)試偏移上的散列值,可完成對(duì)A的插入??勺顑?yōu)化更新A[k]和BDO.isMax兩者的循環(huán),使得在循環(huán)體中僅執(zhí)行一次測(cè)試。B[1],hash<=ADO.hash和B[l].isMax的情形在兩個(gè)循環(huán)中處理,第一個(gè)循環(huán)根據(jù)B[1].hash檢查散列值直到它不小于,第二個(gè)循環(huán)更新A[k]。其它情形可使用僅更新A[k]隨后更新B[l].isMax的循環(huán)來(lái)處理。每次對(duì)CutPoint的調(diào)用需要對(duì)A的平均Inh次存儲(chǔ)器寫(xiě)入,以及關(guān)于找出最大極限的循環(huán)提升h+lnh比較。通過(guò)平均最多有Inh個(gè)步驟的二進(jìn)制檢索或從索引O開(kāi)始對(duì)B的遍歷,可執(zhí)行對(duì)ADO.isMax的最后更新。每次對(duì)CutPoint的調(diào)用還需要在更新窗口中的last(最后)位置上重新計(jì)算滾動(dòng)散列。這需要像滾動(dòng)散列窗口的尺寸一樣多的步馬聚ο經(jīng)改進(jìn)拆分信息塊算法的觀察優(yōu)點(diǎn)最小的信息塊尺寸在如上所述的本地最大極限和過(guò)濾器方法中建立。常規(guī)實(shí)現(xiàn)需要最小信息塊尺寸單獨(dú)用額外參數(shù)提供?;诒镜刈畲笾?或數(shù)學(xué))方法產(chǎn)生可測(cè)量的更佳松弛估算,其翻譯成經(jīng)網(wǎng)絡(luò)的進(jìn)一步壓縮。過(guò)濾器方法還產(chǎn)生比常規(guī)方法更佳的松弛性能。兩種新方法都有拆分點(diǎn)的位置屬性。在S3中界限之外的所有拆分點(diǎn)將是流S^3的拆分點(diǎn)。(換言之,考慮流S1S3,如果P是彡ISlI+界限的位置且P是S1^中的拆分點(diǎn),則它也是4的拆分點(diǎn)。相同的屬性反向保持(對(duì)稱(chēng)),如果P是&&中的拆分點(diǎn),則它也是S^3的拆分點(diǎn)。)對(duì)于常規(guī)方法情形則不同,其中拆分點(diǎn)在某些最小信息塊尺寸之外的要求會(huì)有不利的干擾??蛇x數(shù)學(xué)函數(shù)盡管上述的拆分信息塊過(guò)程描述了使用本地最大極限計(jì)算定位拆分點(diǎn)的裝置,本發(fā)明不受限制。可安排任何數(shù)學(xué)函數(shù)來(lái)檢查可能的拆分點(diǎn)。通過(guò)估算位于界限窗口內(nèi)假想拆分點(diǎn)附近的散列值,可估算每個(gè)可能的拆分點(diǎn)。散列值的估算由數(shù)學(xué)函數(shù)完成,該數(shù)學(xué)函數(shù)可包括定位界限內(nèi)最大值、定位界限內(nèi)最小值、估算散列值之間的差值、估算散列值的差值、以及根據(jù)隨機(jī)常數(shù)比較結(jié)果的至少之一,以及某些其它數(shù)學(xué)或統(tǒng)計(jì)函數(shù)。如前所述的用于本地最大極限的特定數(shù)學(xué)函數(shù)是二進(jìn)制謂詞“_>_”。當(dāng)ρ是對(duì)象中的偏移時(shí),如果對(duì)于所有的k,hashp>hashk,,其中p-horizon彡k<p,或者ρp^ioriZon,p被選為拆分點(diǎn)。然而,二進(jìn)制謂詞>可用任何數(shù)學(xué)函數(shù)替換,不背離本發(fā)明精神。以上說(shuō)明書(shū)、示例和數(shù)據(jù)提供了對(duì)本發(fā)明組成的制造和使用的完整描述。由于可作成本發(fā)明的許多實(shí)施例而不背離本發(fā)明的精神和范圍,本發(fā)明駐留于所附權(quán)利要求書(shū)。權(quán)利要求1.一種用于將對(duì)象拆分成信息塊的方法,包括計(jì)算在所述對(duì)象中的每個(gè)位置處的指紋值;估算與每個(gè)可能的拆分點(diǎn)位置相關(guān)聯(lián)的偏移;估算位于所述對(duì)象的每個(gè)位置周?chē)慕缦迌?nèi)的指紋值;響應(yīng)于所估算的指紋值來(lái)標(biāo)識(shí)拆分點(diǎn)位置;以及基于所標(biāo)識(shí)的拆分點(diǎn)位置將對(duì)象拆分成信息塊。2.如權(quán)利要求1所述的方法,其特征在于,計(jì)算在所述對(duì)象中的每個(gè)位置處的指紋值還包括將指紋函數(shù)應(yīng)用于包含在每個(gè)位置周?chē)男〈翱谥械膶?duì)象數(shù)據(jù)。3.如權(quán)利要求2所述的方法,其特征在于,應(yīng)用所述指紋函數(shù)還包括使用下述項(xiàng)中的至少一項(xiàng)=Rabin多項(xiàng)式、Adler散列以及具有循環(huán)位移的隨機(jī)散列。4.如權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括基于下述項(xiàng)中的至少一項(xiàng)來(lái)調(diào)整界限的尺寸與所述對(duì)象相關(guān)聯(lián)的數(shù)據(jù)類(lèi)型、所述對(duì)象的大小、環(huán)境約束以及與所述對(duì)象相關(guān)聯(lián)的使用模型。5.如權(quán)利要求2所述的方法,其特征在于,進(jìn)一步包括基于下述項(xiàng)中的至少一項(xiàng)來(lái)調(diào)整小窗口的尺寸與所述對(duì)象相關(guān)聯(lián)的數(shù)據(jù)類(lèi)型、所述對(duì)象的大小、環(huán)境約束以及與所述對(duì)象相關(guān)聯(lián)的使用模型。6.如權(quán)利要求1所述的方法,其特征在于,估計(jì)位于界限內(nèi)的指紋值還包括將數(shù)學(xué)函數(shù)應(yīng)用于所述指紋值,并且當(dāng)滿(mǎn)足所述數(shù)學(xué)函數(shù)時(shí)標(biāo)識(shí)拆分點(diǎn)位置。7.如權(quán)利要求6所述的方法,其特征在于,應(yīng)用數(shù)學(xué)函數(shù)還包括使用謂詞將指紋值映射到布爾值,把指紋值分成小范圍,確定界限的最大值,確定界限的最小值,估算界限內(nèi)的指紋值之間的差值,以及對(duì)界限內(nèi)的指紋值求和。8.如權(quán)利要求2所述的方法,其特征在于,估算位于界限內(nèi)的指紋值還包括在指紋值上應(yīng)用數(shù)學(xué)函數(shù),以及當(dāng)數(shù)學(xué)函數(shù)在給定偏移達(dá)到預(yù)定值,并且在預(yù)定數(shù)目的先前偏移達(dá)到其他預(yù)定值時(shí),在給定偏移處標(biāo)識(shí)拆分點(diǎn)位置。9.如權(quán)利要求8所述的方法,其特征在于,所述數(shù)學(xué)函數(shù)包括下述項(xiàng)中的至少一項(xiàng)謂詞以及將指紋值分成適當(dāng)小范圍的函數(shù)。10.如權(quán)利要求2所述的方法,其特征在于,應(yīng)用所述數(shù)學(xué)函數(shù)還包括確定界限中的本地最大的指紋值。11.如權(quán)利要求10所述的方法,其特征在于,進(jìn)一步包括分配長(zhǎng)度等于界限的第一標(biāo)志陣列和第二標(biāo)志陣列,并且初始化標(biāo)志陣列為布爾假;分配長(zhǎng)度等于界限的第一指紋陣列和第二指紋陣列,并且初始化指紋陣列為零;分配長(zhǎng)度等于界限的第一偏移陣列和第二偏移陣列,并且初始化偏移陣列為零;初始化索引1為零,初始化索引k為零,并初始化到對(duì)象中的當(dāng)前偏移為零。12.如權(quán)利要求11所述的方法,其特征在于,進(jìn)一步包括以尺寸為h的間隔組遍歷對(duì)象,在每個(gè)間隔中設(shè)置到第一標(biāo)志陣列的第一索引的值為真,設(shè)置到第一偏移陣列的第一索引的值為當(dāng)前間隔組的最后的偏移,設(shè)置到指紋陣列的第一索引的值為當(dāng)前間隔的最后的偏移處的指紋,并確定所述偏移為當(dāng)前間隔的最后的位置。13.如權(quán)利要求12所述的方法,其特征在于,進(jìn)一步包括只要當(dāng)前間隔的最后的偏移的當(dāng)前值大于在索引1處的第二偏移陣列的值加上h的值,則將位置k處的第一標(biāo)志陣列的值更新為假,在最后的偏移的當(dāng)前值處提供的指紋值等于位置k處的第一指紋陣列的值,如果最后的偏移的當(dāng)前值處的指紋值大于位置k處的第一指紋陣列的值,那么,遞增k并將索引k處的第一偏移陣列的值設(shè)置為當(dāng)前的最后的偏移的值,將索引k處的第一標(biāo)志陣列的值設(shè)置為真,并將索引k處的第一散列陣列的值設(shè)置為最后的偏移的當(dāng)前值,并確定所述偏移為當(dāng)前間隔的最后位置。14.如權(quán)利要求12所述的方法,其特征在于,進(jìn)一步包括只要偏移的當(dāng)前值不小于到當(dāng)前間隔的開(kāi)始處的偏移,則將位置k處的第一標(biāo)志陣列的值更新為假,在最后的偏移的當(dāng)前值處提供的指紋值等于位置k處的第一指紋陣列的值,如果最后的偏移的當(dāng)前值處的指紋值大于位置k處的第一指紋陣列的值,那么,遞增k并將索引k處的第一偏移陣列的值設(shè)置為當(dāng)前的最后的偏移的值,將索引k處的第一標(biāo)志陣列的值設(shè)置為真,并將索引k處的第一散列陣列的值設(shè)置為最后的偏移的當(dāng)前值,如果索引1處的第二指紋陣列的值不大于最后的偏移的當(dāng)前值處的指紋值,則將索引1處的第二標(biāo)志陣列的值設(shè)置為假,并遞減到當(dāng)前間隔的最后位置的偏移。15.如權(quán)利要求14所述的方法,其特征在于,進(jìn)一步包括如果索引k處的第一標(biāo)志陣列的值已經(jīng)為假或當(dāng)存在0到1之間的索引j時(shí),包括索引j處的第二偏移陣列的值加上值h至少與索引k處的第一偏移陣列的值一樣大并且索引j處的第二指紋陣列的值至少為索引k處的第一指紋陣列的值,則將索引k處的第一標(biāo)志陣列的值設(shè)置為假。16.如權(quán)利要求15所述的方法,其特征在于,進(jìn)一步包括如果在位置1處的第二標(biāo)志陣列的值為真,則將索引1處的第二偏移陣列的值設(shè)置為拆分點(diǎn)。17.如權(quán)利要求16所述的方法,其特征在于,進(jìn)一步包括在進(jìn)行下一個(gè)間隔之前,交換到第一和第二偏移、指紋陣列和標(biāo)志陣列的引用。18.如權(quán)利要求10所述的方法,其特征在于,進(jìn)一步包括分配長(zhǎng)度等于界限的標(biāo)志陣列并將標(biāo)志陣列初始化為布爾假,分配長(zhǎng)度等于界限的指紋陣列并將指紋陣列初始化為零,分配長(zhǎng)度等于界限的偏移陣列并將偏移陣列初始化為零,初始化最小索引為零,初始化最大索引為零,并將到對(duì)象內(nèi)的當(dāng)前偏移初始化為零。19.如權(quán)利要求18所述的方法,其特征在于,進(jìn)一步包括當(dāng)當(dāng)前偏移值被標(biāo)識(shí)為等于在最大索引處的偏移陣列條目的值加上界限加上1時(shí)如果在最大索引處的標(biāo)志陣列條目的值是布爾真,查找在最大索引處的偏移陣列的值所給定的偏移處的本地最大值;并且將最大索引設(shè)置為遞減1的最大值模界限確定的值。20.如權(quán)利要求19所述的方法,其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值小于在最小索引處的指紋陣列條目的值時(shí)遞減最小索引模界限,設(shè)置最小索引處的標(biāo)志陣列的值為布爾假,設(shè)置最小索引處的指紋陣列條目的值為與當(dāng)前偏移相關(guān)聯(lián)的指紋值,并將最小索引處的偏移陣列條目的值設(shè)置為當(dāng)前偏移。21.如權(quán)利要求20所述的方法,其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值等于在最小索引處的指紋陣列條目的值時(shí)將最小索引處的標(biāo)志陣列條目的值設(shè)置為布爾假,將最小索引處的指紋陣列條目的值設(shè)置為與當(dāng)前偏移相關(guān)聯(lián)的指紋值,并將最小索引處的偏移陣列條目的值設(shè)置為當(dāng)前偏移。22.如權(quán)利要求21所述的方法,其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值等于在最小索引處的指紋陣列條目的值,并且當(dāng)所述最小索引不同于所述最大索引時(shí)遞增最小索引加1模界限。23.如權(quán)利要求22所述的方法,其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值大于在最小索引處的指紋陣列條目的值,并且當(dāng)所述最小索引等于所述最大索引時(shí)將最小索引處的標(biāo)志陣列條目設(shè)置為布爾真,將最小索引處的指紋陣列條目設(shè)置為與當(dāng)前偏移相關(guān)聯(lián)的指紋值,并且將最小索引處的偏移陣列條目設(shè)置為當(dāng)前偏移。24.如權(quán)利要求23所述的方法,其特征在于,進(jìn)一步包括當(dāng)完成先前的確定時(shí),遞增當(dāng)前偏移。25.一種具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令用于將對(duì)象拆分成信息塊,包括計(jì)算在所述對(duì)象中的每個(gè)位置處的指紋值;估算與每個(gè)可能的拆分點(diǎn)位置相關(guān)聯(lián)的偏移;估算位于所述對(duì)象的每個(gè)位置周?chē)慕缦迌?nèi)的指紋值;響應(yīng)于所估算的指紋值來(lái)標(biāo)識(shí)拆分點(diǎn)位置;以及基于所標(biāo)識(shí)的拆分點(diǎn)位置將對(duì)象拆分成信息塊。26.如權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,計(jì)算在所述對(duì)象中的每個(gè)位置處的指紋值還包括將指紋函數(shù)應(yīng)用于包含在每個(gè)位置周?chē)男〈翱谥械膶?duì)象數(shù)據(jù)。27.如權(quán)利要求沈所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,應(yīng)用所述指紋函數(shù)還包括使用下述項(xiàng)中的至少一項(xiàng)=Rabin多項(xiàng)式、Adler散列以及具有循環(huán)位移的隨機(jī)散列。28.如權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括基于下述項(xiàng)中的至少一項(xiàng)來(lái)調(diào)整界限的尺寸與所述對(duì)象相關(guān)聯(lián)的數(shù)據(jù)類(lèi)型、所述對(duì)象的大小、環(huán)境約束以及與所述對(duì)象相關(guān)聯(lián)的使用模型。29.如權(quán)利要求沈所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括基于下述項(xiàng)中的至少一項(xiàng)來(lái)調(diào)整小窗口的尺寸與所述對(duì)象相關(guān)聯(lián)的數(shù)據(jù)類(lèi)型、所述對(duì)象的大小、環(huán)境約束以及與所述對(duì)象相關(guān)聯(lián)的使用模型。30.如權(quán)利要求25所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,估計(jì)位于界限內(nèi)的指紋值還包括將數(shù)學(xué)函數(shù)應(yīng)用于所述指紋值,并且當(dāng)滿(mǎn)足所述數(shù)學(xué)函數(shù)時(shí)標(biāo)識(shí)拆分點(diǎn)位置。31.如權(quán)利要求30所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,應(yīng)用數(shù)學(xué)函數(shù)還包括使用謂詞將指紋值映射到布爾值,把指紋值分成小范圍,確定界限的最大值,確定界限的最小值,估算界限內(nèi)的指紋值之間的差值,以及對(duì)界限內(nèi)的指紋值求和。32.如權(quán)利要求沈所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,估算位于界限內(nèi)的指紋值還包括在指紋值上應(yīng)用數(shù)學(xué)函數(shù),以及當(dāng)數(shù)學(xué)函數(shù)在給定偏移達(dá)到預(yù)定值,并且在預(yù)定數(shù)目的先前偏移達(dá)到其他預(yù)定值時(shí),在給定偏移處標(biāo)識(shí)拆分點(diǎn)位置。33.如權(quán)利要求32所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述數(shù)學(xué)函數(shù)包括下述項(xiàng)中的至少一項(xiàng)謂詞以及將指紋值分成適當(dāng)小范圍的函數(shù)。34.如權(quán)利要求沈所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,應(yīng)用所述數(shù)學(xué)函數(shù)還包括確定界限中的本地最大的指紋值。35.如權(quán)利要求34所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括分配長(zhǎng)度等于界限的第一標(biāo)志陣列和第二標(biāo)志陣列,并且初始化標(biāo)志陣列為布爾假;分配長(zhǎng)度等于界限的第一指紋陣列和第二指紋陣列,并且初始化指紋陣列為零;分配長(zhǎng)度等于界限的第一偏移陣列和第二偏移陣列,并且初始化偏移陣列為零;初始化索引1為零,初始化索引k為零,并初始化到對(duì)象中的當(dāng)前偏移為零。36.如權(quán)利要求35所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括以尺寸為h的間隔組遍歷對(duì)象,在每個(gè)間隔中設(shè)置到第一標(biāo)志陣列的第一索引的值為真,設(shè)置到第一偏移陣列的第一索引的值為當(dāng)前間隔組的最后的偏移,設(shè)置到指紋陣列的第一索引的值為當(dāng)前間隔的最后的偏移處的指紋,并確定所述偏移為當(dāng)前間隔的最后的位置。37.如權(quán)利要求36所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括只要當(dāng)前間隔的最后的偏移的當(dāng)前值大于在索引1處的第二偏移陣列的值加上h的值,則將位置k處的第一標(biāo)志陣列的值更新為假,在最后的偏移的當(dāng)前值處提供的指紋值等于位置k處的第一指紋陣列的值,如果最后的偏移的當(dāng)前值處的指紋值大于位置k處的第一指紋陣列的值,那么,遞增k并將索引k處的第一偏移陣列的值設(shè)置為當(dāng)前的最后的偏移的值,將索引k處的第一標(biāo)志陣列的值設(shè)置為真,并將索引k處的第一散列陣列的值設(shè)置為最后的偏移的當(dāng)前值,并確定所述偏移為當(dāng)前間隔的最后位置。38.如權(quán)利要求36所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括只要偏移的當(dāng)前值不小于到當(dāng)前間隔的開(kāi)始處的偏移,則將位置k處的第一標(biāo)志陣列的值更新為假,在最后的偏移的當(dāng)前值處提供的指紋值等于位置k處的第一指紋陣列的值,如果最后的偏移的當(dāng)前值處的指紋值大于位置k處的第一指紋陣列的值,那么,遞增k并將索引k處的第一偏移陣列的值設(shè)置為當(dāng)前的最后的偏移的值,將索引k處的第一標(biāo)志陣列的值設(shè)置為真,并將索引k處的第一散列陣列的值設(shè)置為最后的偏移的當(dāng)前值,如果索引1處的第二指紋陣列的值不大于最后的偏移的當(dāng)前值處的指紋值,則將索引1處的第二標(biāo)志陣列的值設(shè)置為假,并遞減到當(dāng)前間隔的最后位置的偏移。39.如權(quán)利要求36所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括如果索引k處的第一標(biāo)志陣列的值已經(jīng)為假或當(dāng)存在0到1之間的索引j時(shí),包括索引j處的第二偏移陣列的值加上值h至少與索引k處的第一偏移陣列的值一樣大并且索引j處的第二指紋陣列的值至少為索引k處的第一指紋陣列的值,則將索引k處的第一標(biāo)志陣列的值設(shè)置為假。40.如權(quán)利要求39所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括如果在位置1處的第二標(biāo)志陣列的值為真,則將索引1處的第二偏移陣列的值設(shè)置為拆分點(diǎn)。41.如權(quán)利要求40所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括在進(jìn)行下一個(gè)間隔之前,交換到第一和第二偏移、指紋陣列和標(biāo)志陣列的引用。42.如權(quán)利要求34所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括分配長(zhǎng)度等于界限的標(biāo)志陣列并將標(biāo)志陣列初始化為布爾假,分配長(zhǎng)度等于界限的指紋陣列并將指紋陣列初始化為零,分配長(zhǎng)度等于界限的偏移陣列并將偏移陣列初始化為零,初始化最小索引為零,初始化最大索引為零,并將到對(duì)象內(nèi)的當(dāng)前偏移初始化為零。43.如權(quán)利要求42所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)當(dāng)前偏移值被標(biāo)識(shí)為等于在最大索引處的偏移陣列條目的值加上界限加上1時(shí)如果在最大索引處的標(biāo)志陣列條目的值是布爾真,查找在最大索引處的偏移陣列的值所給定的偏移處的本地最大值;并且將最大索引設(shè)置為遞減1的最大值模界限確定的值。44.如權(quán)利要求43所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值小于在最小索引處的指紋陣列條目的值時(shí)遞減最小索引模界限,設(shè)置最小索引處的標(biāo)志陣列的值為布爾假,設(shè)置最小索引處的指紋陣列條目的值為與當(dāng)前偏移相關(guān)聯(lián)的指紋值,并將最小索引處的偏移陣列條目的值設(shè)置為當(dāng)前偏移。45.如權(quán)利要求44所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值等于在最小索引處的指紋陣列條目的值時(shí)將最小索引處的標(biāo)志陣列條目的值設(shè)置為布爾假,將最小索引處的指紋陣列條目的值設(shè)置為與當(dāng)前偏移相關(guān)聯(lián)的指紋值,并將最小索引處的偏移陣列條目的值設(shè)置為當(dāng)前偏移。46.如權(quán)利要求45所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值等于在最小索引處的指紋陣列條目的值,并且當(dāng)所述最小索引不同于所述最大索引時(shí)遞增最小索引加1模界限。47.如權(quán)利要求46所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)與當(dāng)前偏移相關(guān)聯(lián)的指紋值大于在最小索引處的指紋陣列條目的值,并且當(dāng)所述最小索引等于所述最大索引時(shí)將最小索引處的標(biāo)志陣列條目設(shè)置為布爾真,將最小索引處的指紋陣列條目設(shè)置為與當(dāng)前偏移相關(guān)聯(lián)的指紋值,并且將最小索引處的偏移陣列條目設(shè)置為當(dāng)前偏移。48.如權(quán)利要求47所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,進(jìn)一步包括當(dāng)完成先前的確定時(shí),遞增當(dāng)前偏移。全文摘要用于在本地裝置和遠(yuǎn)程裝置間更新對(duì)象的方法和系統(tǒng)。本方法和系統(tǒng)涉及經(jīng)有限帶寬網(wǎng)絡(luò)更新對(duì)象。使用遠(yuǎn)程差分壓縮(RDC)技術(shù)在兩個(gè)或多個(gè)計(jì)算裝置間更新對(duì)象,使得所需要的數(shù)據(jù)傳送最少。在一方面中,通過(guò)把RDC算法遞歸地應(yīng)用到對(duì)象自己的元數(shù)據(jù)中可完成大對(duì)象的有效傳送;在此情形中可使用單個(gè)或多個(gè)遞歸步驟以減少由RDC算法經(jīng)網(wǎng)絡(luò)發(fā)送的元數(shù)據(jù)量。通過(guò)把邊界置于經(jīng)動(dòng)態(tài)確定的位置上,對(duì)象和/或簽名以及信息塊長(zhǎng)度列表可得以拆分。一數(shù)學(xué)函數(shù)可估算相對(duì)于可能拆分邊界的與水平窗口相關(guān)聯(lián)的散列值。所述方法和系統(tǒng)在各種網(wǎng)絡(luò)化應(yīng)用中有用,諸如點(diǎn)對(duì)點(diǎn)重復(fù)符、電子郵件客戶(hù)機(jī)和服務(wù)器、客戶(hù)機(jī)側(cè)高速緩存系統(tǒng)、通用復(fù)制實(shí)用程序、數(shù)據(jù)庫(kù)重復(fù)符、入口、軟件更新服務(wù)、文件/數(shù)據(jù)同步、以及其它。文檔編號(hào)G06F12/00GK102170455SQ201110150768公開(kāi)日2011年8月31日申請(qǐng)日期2005年3月15日優(yōu)先權(quán)日2004年4月15日發(fā)明者D·特奧多蘇,N·S·比恩納,P·E·博滋曼,Y·谷列維奇申請(qǐng)人:微軟公司