專利名稱::用于快速且有效數據管理和/或處理的方法和系統(tǒng)的制作方法
技術領域:
:本發(fā)明涉及數據處理與數據管理的領域,且更具體而言,涉及與針對諸如數據散列(hashing)和/或數據冗余消除的應用有效處理有關的方法與系統(tǒng)。
背景技術:
:每天,在全世界,越來越多的信息被創(chuàng)建且被保持和傳輸的信息量以驚人速率(rate)合成,這引起了對數據處理和管理的密切關注。這些信息中的大部分被電子地創(chuàng)建、處理、維持、傳輸并存儲。令人吃驚的是僅有很少的嘗試去管理所有這些數據和相關數據流以及存儲。因此,發(fā)展了多種系統(tǒng)與方法來通過消除盡可能多的重復(duplicate)數據來更有效地處理數據和存儲和傳輸更少的數據。舉例而言,已發(fā)展了各種系統(tǒng)與方法來幫助減小對來自諸如計算機、計算機網絡(例如,LAN、內部網、因特網等)、諸如手機的移動裝置、PDA、磁盤驅動器、存儲芯片等各種電子裝置的重復數據進行存儲、傳輸等操作的需要。這種技術可為或包括數據壓縮、數據加密和/或數據存儲。另外,需要使用密碼術來對數據進行加密,特別是(例如)數據傳輸期間。舉例而言,已發(fā)展了一些提供強(即,加密)散列的系6統(tǒng)與方法,且這些方法可相當自然地被結合到使用數據散列來在不安全通信通道上達成數據冗余消除的應用內。也發(fā)展了在安全系統(tǒng)上提供數據散列和/或數據冗余消除的系統(tǒng)和方法。檔案流中的重復數據識別與數據冗余消除是節(jié)省存儲空間的一種技術。在各種電子數據管理方法與系統(tǒng)中,發(fā)展了多種方法來用于數據散列和/或從(例如)數據存儲(例如,電子郵件或主目錄的存檔、備份數據)與數據傳輸中消除冗余數據。這些技術包括各種數據壓縮(例如,zip技術)、數據散列和密》馬術方法。某些特定類型的散列可包括內容分塊(chunking),內容分塊可包括全文件散列、固定大小分塊(分區(qū)塊)和內容限定(content-defined)的分塊。數據流管理和數據處理的某些示范性技術公開于各種文章中,包括C.Policroniades和I.Pratt,AlternativesforDetectingRedundancyinStorageSystemsData,inUSENIX_04:ProceedingsoftheUSENIXAnnualTechnicalConference(2004),pp.1-14;R.Jain,AComparisonofHashingSchemesforAddressLookupinComputerNetworks,IEEETransactionsonCommunications40,1570(1992),pp.1-5;N.Jain,M.Dahlin,和R.Tewari,TAPER:TieredApproachforEliminatingRedundancyinReplicaSynchronization,Tech.Rep.,TechnicalReportTR畫05畫42,Dept.ofComp.Sc,Univ.ofTexasatAustin(2005),pp.1-14;A.Chowdhury,O.Frieder,D.Grossman,和M.C.McCabe,CollectionStatisticsforFastDuplicateDocumentDetection,ACMTrans.Inf.Syst.20,(2002),ISSN1046-8188,pp.171-191;F.Douglis和A.Iyengar,Application-SpecificDelta-encodingviaresemblanceDetection,ProceedingsoftheUSENIXAnnualTechnicalConference(2003),pp.l畫23;P.Kulkarni,F.Douglis,J.LaVoie,和J.Tracey,RedundancyEliminationWithinLargeCollectionsofFiles,ProceedingsoftheUSENIXAnnualTechnicalConference(2004),pp.1-14;J.Barreto和P.Ferreira,AReplicatedFileSystemforResourceConstrainedMobileDevices,ProceedingsofIADISInternationalConferenceonAppliedComputing,(2004),pp.1-9;T.Denehy和W.Hsu,DuplicateManagementforReferenceData,TechnicalreportRJ10305,IBMResearch(2003),pp.1-14;G.Forman,K.Eshghi,和S.Chiocchetti,FindingSimilarFilesinLargeDocumentRepositories,KDD'05:ProceedingoftheeleventhACMSIGKDDinternationalconferenceonKnowledgediscoveryindatamining,ACMPress,NewYork,NY,USA,(2005),pp.394-400;L.You,K.T.Pollack,和D.D.E.Long,DeepStore:AnArchivalStorageSystemArchitecture,ICDE'05:Proceedingsofthe21stInternationalConferenceonDataEngineering,IEEEComputerSociety,Washington,DC,USA,(2005),pp.1-12;K.Eshghi和H.K.Tang,AFrameworkforAnalyzingandImprovingContent-BasedChunkingAlgorithms,TechnicalreportHPL-2005-30R1,HPLaboratories(2005),pp.卜10;P.L'Ecuyer,"TablesofLinearCongruentialGeneratorsofDifferentSizesandGoodLatticeStructure,inMath.Comput.68,249(1999),ISSN0025-5718,pp.249-260";A.Tridgell和P.MacKerras,"TechnicalreportTRCS-96-05-TheRsyncAlgorithm",AustralianNationalUniversity,DepartmentofComputerScience,FEIT,ANU(1996),pp.1-6";以及,L,You和C.Karamanolis,"EvaluationofEfficientArchivalStorageTechniques",inProceedingsof21stIEEE/NASAGoddardMSS(2004),pp.1-6。也存在公開了各種相關示范性技術的許多美國專利和專利公開,包括美國專利公開第2006/0112264號、第2006/0047855號以及第2005/0131939號和美國專利第6,658,423號和第6,810,398號。這些參考文獻表示與更有效地進行數據處理和數據管理有關的各種示范性技術。上文的各個參考提供一些選項的介紹,諸如gzip、增量編碼(delta-encoding),固定大小分區(qū)塊(blocking)、可變大小分塊、分塊與增量編碼的比較(增量編碼可能是用于如日志文件和電子郵件這樣的資料的良好技術,這些資料的特征在于頻繁的小變化)以及對于實際數據而言固定大小分塊與可變大小分塊的比較。但是,已知的技術缺少某些有用的能力。通常,高度通用的數據壓縮或散列技術傾向于對某些數據類型比對其它數據類型(例如,短數據塊相對于長數據塊)更好地起作用,對于特定應用比對其它應用(例如,對壓縮而不是對數據存儲或備份)更好地起作用,以及就待處理的數據大小而言以不同的數據處理速度和不同的縮放性(scalingproperty)更好地起作用。另外,各種硬件與應用軟件對數據處理或數據管理技術可以工作得多好有影響。舉例而言,如上文所述,存在對短數據區(qū)塊(block)(例如,32k大小區(qū)塊)或可能中等大小數據區(qū)塊非常好地起作用的某些數據壓縮或冗余消除技術,但它們對于大(例如,Gb大小區(qū)塊)數據區(qū)塊不能良好地起作用。令人遺憾的是,已知技術通常并未充分考慮到對于特定用途、應用或硬件的數據模式,它們也未能在識別數據集或數據流中高度的實際數據冗余的同時在處理期間有效地管理數據段的大小。重復消除的已知方法難以增加所存儲或傳輸的數據段的平均大小而不嚴重影響所實現的重復消除度、所需要的時間和/或該方法的可縮放性(scalability)。因此,需要一種數據處理與管理技術,其具有合理的性能且當與檔案數據、備份數據和/或以大區(qū)塊或塊更有效地傳輸或存儲的數據一起使用時特別有效,同時實現高度的冗余消除。重復消除的性能目標可包括速度、大的平均塊(chunk)大小與大量重復消除的組合,和/或對極大數據集的可縮放性。
發(fā)明內容本發(fā)明大體而言是針對于提供用于數據管理與數據處理的系統(tǒng)與方法。舉例而言,各種實施例可包括與以可比較的或更好的執(zhí)行選擇結果(例如,高數據冗余消除)來選擇的相對較大數據組相關的系統(tǒng)與方法。在各種實施例中,系統(tǒng)與方法可包括(例如)數據組、區(qū)塊或塊組合技術和/或數據組、區(qū)塊或塊拆分技術。各種實施例可包括第一標準或典型數據分組、分區(qū)塊、或分塊技術和/或數據組、區(qū)塊或塊組合技術或/或數據組、區(qū)塊或塊拆分技術。實施例可包括先行緩沖器并基于基礎(underlying)數據的特性和/或本發(fā)明的特定應用(例如,為了備份)來確定是發(fā)出(emit)小塊還是大塊。另外,示范性系統(tǒng)和方法可涉及用于數據集或數據串的數據散列和/或數據冗余識別和消除技術。本發(fā)明可為計算機實施的發(fā)明,其包括用于有效改進數據處理而不顯著降低數據處理結果品質的軟件與硬件。在至少一個實施例中,可提供優(yōu)化內容限定的分塊技術、函數或9方法的各種裝置(means)來用于存檔或備份數據流或數據集。各種所描述)來加速分塊處理的裝置。各種實施例還可包括使用備份切割點(cutpoint)、斷點或塊點(chunkpoint)和切割水平(cuttinglevel)、斷開水平(breaklevel)或塊水平以在給定最小和最大允許的輸出數據組、區(qū)塊或塊長度的情況下最大化產生可再現的切割點、區(qū)塊點或塊點的可能性的方法。各種實施例可基于某些類型的存檔或備份數據中重復模式的直觀模型。各種實施例可包括數據組、區(qū)塊或塊的合并(amalgamation)以便重新分布數據組、區(qū)塊或塊來根據不同的參數和/或長度確定改進的切割點、區(qū)塊點或塊點。這些實施例也許能增加重復消除率(duplicateeliminationratio,DER)且通過明智啟發(fā)式方法,并不嚴重地減小平均塊大小。在各種實施例中,可提供實時系統(tǒng)與方法,其也許能在不嚴重減小重復消除率(DER)的情況下增加平均塊大小。這些系統(tǒng)與方法可包括拆分或斷開數據組且可能涉及按照大的平均塊大小最有利地對"新"數據的長序列進行分塊,以及將較小塊用于充分靠近可能為重復數據的"新"數據。以此方式,某些類型的備份數據可更容易地括含(bracket)可能對應于局部變化的插入或刪除區(qū)域。為此,可能需要很有限的先行查看(look-ahead),使用先行緩沖器,和/或每單位輸入的所限定查詢次數來確定是否在先前已發(fā)出預期的塊??上蚝蠖舜鎯卧?或維持于諸如布隆過濾器(Bloomfilter)這樣的實際或虛擬存儲器中的有限大小的局部歷史(localhistory)來確切地或直接地進行查詢。本發(fā)明的各種實施例展示了增加平均數據組、區(qū)塊或塊大小和重復消除率的能力。另外,各種實施例已能使用為先前所能獲得的大約2至4倍大小的數據組、數據區(qū)塊或數據塊來實現等效重復消除率。這些更大的數據組、區(qū)塊或塊可提供存儲數據的元數據成本(metadatacost)的減小且當傳輸數據和/或讀取或寫入到例如備份工具(appliance)(例如,磁盤或網絡存儲系統(tǒng))的另一裝置時可造成吞吐量增加?;趯ο挛牡墓_內容和其附圖的學習,各種實施例所包括的其它方面對于本領域技術人員顯而易見。當結合附圖來理解時,通過考慮下文本發(fā)明實施例的詳細描述,本發(fā)明的效用、目的、特征和優(yōu)點將會易于了解和理解,在附圖中圖1是根據至少一個實施例的數據管理系統(tǒng)的示范性概略圖,該數據管理系統(tǒng)識別輸入流中的信息且有時可在產生輸出之前修改該信息;圖2是根據至少一個實施例的數據識別過程的示范性概略圖,其利用第一選擇函數且然后利用第二修改選擇函數,第二修改選擇函數包括內容限定的分塊策略,該內容限定的分塊策略可合并和/或分開某些現有塊;圖3a和圖3b是根據至少一個實施例示出示范性內容限定的分塊技術或策略的數據流,其可將小塊加在一起或將小塊合并成長段(stretch)的非重復數據內的大塊和/或可不合并在非重復數據邊緣處的小塊以更好地識別在這樣的過渡區(qū)域內的潛在重復;圖4a和圖4b是根據至少一個實施例的數據流,其示出示范性內容限定的分塊技術或策略,該技術或策略可在非重復數據的邊緣處將較大塊分開或拆分成較小塊以更好地識別在這樣的區(qū)域內的潛在重復;圖5a和圖5b是根據至少一個實施例的示范性內容限定的分塊技術或策略的流程圖,該技術或策略可將小塊合并成大塊和/或使非重復數據的邊緣與小塊毗鄰和/或將小塊留在非重復數據的短區(qū)域內;圖6a、圖6b和圖6c是根據至少一個實施例,用于數據集或數據輸入流的內容限定的分塊合并技術或策略的示范性應用的時序圖;圖7a和圖7b是根據至少一個實施例的示范性內容限定的分塊技術或策略的流程圖,其可包括隨著將小塊合并成大塊的再同步(resynchronization);圖8是根據至少一個實施例的示范性的內容限定的分塊技術或策略的流程圖,其可將大塊拆分成小塊;圖9a、9b和圖9c是根據至少一個實施例,用于數據集或數據輸入流的內容限定的分塊拆分技術或策略的示范性應用的時序圖;圖10是根據至少一個實施例可對其應用數據合并和/或數據拆分技術或策略的備份系統(tǒng)的示范性應用;圖11示出根據至少一個實施例的各種分塊技術的壓縮系數與塊大小關系的實驗結果;圖12示出根據至少一個實施例的各種分塊技術的壓縮系數與塊大小關系的實驗結果;圖13示出根據至少一個實施例,對于各種分塊技術,斷開重復刪除率(de-duplicationratio)與塊大小關系的實驗結果;圖14示出根據至少一個實施例,對于理論塊大小限制,DER與塊大小關系的實驗結果;圖15是根據至少一個實施例的計算裝置的示范性功能框圖;以及圖16是根據至少一個實施例的說明了網絡的示范性功能框圖。具體實施方式法。舉例而言,本發(fā)明的各種實施例可包括與被選擇的相對較大數據組相關的、具有可接受的、可比較的和/或更好的執(zhí)行選擇和/或冗余消除結果(例如,高數據冗余消除)的系統(tǒng)與方法。在各種實施例中,系統(tǒng)與方法可包括(例如)數據組、區(qū)塊或塊組合技術和/或數據組、區(qū)塊或塊拆分技術。本發(fā)明可應用于各種類型的數據處理、數據傳輸和/或數據存儲,且本發(fā)明特別適用的應用可包括,例如,幾種類型的網絡文件系統(tǒng),空間優(yōu)化存檔的參考文件集以及文件同步、備份數據存儲等。下文的各種實施例將提供用于與備份數據存儲一起使用本發(fā)明的實例作為一個特定示范性應用。本發(fā)明可為計算機實施的發(fā)明,其包括用于更有效地改進數據處理或數據維護的軟件和硬件,且可不顯著降低數據處理結果的性能。計算機實施可包括各種電子裝置(例如,PDA、蜂窩電話、GPS等)、計算機(例如,PC)、存儲裝置或系統(tǒng)和/或計算機網絡(LAN、內部網、因特網等),如將在下文中更詳細地描述。通常,壓縮算法適應短數據區(qū)塊的特性。舉例而言,當被看作是字節(jié)或英語單詞時,上下文無關語法通常發(fā)現越來越少的涉及較長長度的序列的產生??赏ㄟ^涉及局部數據模型或基于詞典的查找技術的12機制來實現合理壓縮。舉例而言,gzip對短(例如,32k)區(qū)塊進行操作,用形式指針(pointerofform)(距離,長度)替換重復的串。在此情況下,gzip在局部范圍實現冗余消除,且使用其長度可能相當小的冗余串來進行這個操作。在檔案數據中,這種情形可能會大不相同。在實際文件系統(tǒng)上,大多數文件的訪問是只讀的,文件傾向于為主讀的(read-mostly)或主寫的,且小文件集產生大多數區(qū)塊重寫。整個文件可被復制,且甚至當變化時,這些變化可被局部化(localize)到相對較小的編輯區(qū)域。此處,壓縮方案必須有效地處理較長的重復數據段。更具約束性地,數據在其期間重新出現的'未來,可能是前千兆字節(jié)(gigabytesahead)(即,下一備份運行)。在此情況下,可以以在大得多的輸入數據區(qū)域上全局范圍的重復識別與冗余消除作為目標。由于與存儲這些冗余串的"位置"相關聯的額外開銷,感興趣的塊遠比(例如)成了如gzip的數據壓縮技術的目標的那些更大。由于檔案數據的基本假設如此不同,基于詞典的壓縮技術可使用被稱作重復消除(DE)的程序。在重復消除中,只是以可再現的方式斷開輸入數據流,且然后僅存儲(或傳輸)與先前所發(fā)出的塊重復的任何塊的一個副本。重復消除可不同于做大量額外工作來改進可壓縮性的更激進的技術。在更激進的壓縮方案中常用的技術是調用相似性檢測和某種形式的增量編碼。令人遺憾的是,在較大(千兆字節(jié))集中找到最長重復或找到類似(或相同)文件是非常復雜困難的任務,其通常包括專門算法(參看,例如,美國專利第6,658,423號)。各個實施例可包括數據分組、分區(qū)塊或分塊技術和/或數據組、區(qū)塊或塊組合技術,和/或數據組、區(qū)塊或塊拆分技術。在各種實施例中,數據分組、分區(qū)塊或分塊技術可利用標準或典型數據分組、分區(qū)塊或分塊方法。實施例可包括先行緩沖器且基于基礎數據的特性和/或本發(fā)明的特定應用(例如,用于備份)來決定發(fā)出大塊還是小塊。另外,示范性系統(tǒng)與方法可涉及用于數據集或數據串的數據散列和/或數據冗余識別和消除技術。在某些示范性實施例中,本發(fā)明將被描述為應用于數據存檔和/或數據備份且將被配置成在該應用中特別好地執(zhí)行。在至少一個實施例中,對于存檔或備份數據流或數據集,可提供各種裝置以優(yōu)化內容限定的分塊技術、函數或方法。各種實施例可包括使用多個選擇準則(例如,如在上文所提到的相關專利申請中所描述)來加速分塊過程的裝置。各種實施例還可包括在給定最小和最大允許的輸出數據組、區(qū)塊或塊長度的情況下,使用備份切割點、斷點、或塊點和切割水平、斷開水平或塊水平來最大化產生可再現的切割點、區(qū)塊點或塊點的可能性的方法。這種切割、區(qū)塊或塊點可以以預期具有良好重復檢測能力的方式產生。各種實施例可基于在某種類型的存檔或備份數據中可能會出現的重復模式的直覺的、測量的和/或動態(tài)模型。在各種實施例中,可提供實時數據處理和/或數據管理系統(tǒng)與方法,其能增加平均塊大小而不會嚴重地降低重復消除率(DER)。當考慮到將本發(fā)明應用于存檔或備份數據時,對于新鮮或新數據的一個假設可以是其在未來備份運行中具有較高的重新出現的可能性。在那種情況下,使用大數據組、區(qū)塊或塊可證明是最有效的。因此,本發(fā)明的系統(tǒng)與方法可涉及按照大的平均塊最有利地對新鮮的或"新"數據的長序列進行分塊。這可與針對充分靠近可能為重復數據的區(qū)域的"新,,數據而使用較小的塊相組合。以此方式,某些類型的備份數據可更容易地括含可對應于局部變化的插入或刪除區(qū)。這樣做可需要非常有限的先行查看和使用先行緩沖器,和每單位輸入的所限定查詢次數來確定先前是否已發(fā)出預期的塊。可對后端存儲單元或對實際或維持于例如布隆過濾器這樣的實際或虛擬存儲器中的有限大小的局部歷史確切地或立刻進行查詢。本發(fā)明的各種實施例展示了增加平均數據組、區(qū)塊或塊大小和維持可接受的(或甚至改進的)重復消除率的能力。另外,各種實施例已能使用為先前所能獲得的大約2至4倍大小的數據組、數據區(qū)塊或數據塊來實現近似等效的重復消除率。這些較大的數據組、區(qū)塊或塊可提供存儲數據的元數據成本的減小且當傳輸數據和/或向例如備份工具(例如,磁盤存儲系統(tǒng))的另一裝置讀取或寫入時可導致增加的吞吐量。本發(fā)明可為計算機實施的發(fā)明,其包括有效地改進數據處理而不顯著降低數據處理結果品質的軟件與硬件。在至少一個實施例中,在本發(fā)明中所提供的系統(tǒng)和方法可使用計算裝置來實施,且可操作于網絡內一個或多個計算機上。示范性計算裝置和網絡的細節(jié)參看圖19和圖20在下文中在一定詳細程度上描述。這些實例的先前參考可證明有助于更好地理解本發(fā)明的各種細節(jié)。在任何情況下,為便于理解,將更詳細地解釋本發(fā)明以便與散列函數和/或數據冗余識別和/或數據重復消除一起使用。但是,本領域技術人員將了解到本發(fā)明可適用于其它數據管理與處理系統(tǒng)與方法,包括具有要處理或存儲的數據串的計算機,具有要傳輸的數據的無線通信、因特網和內部網應用、數據加密技術等。特別地,在本文中用于解釋本發(fā)明的示范性實施例主要關于數據散列和數據重復消除。在全文件散列的情況下,可通過向整個文件的所有數據應用散列函數來執(zhí)行散列。舉例而言,可向整個數據文件使用和應用SHA-1散列函數。SHA-1散列函數在計算上較為復雜且相對于某些其它散列函數可能較慢。無論如何,在此情況下,出于識別與排除重復的目的,找到極少量的數據重復并將其消除,因為當數據的單個位在文件中變化時,所得到的散列值(hashvalue)將不同于先前所保存的散列值,且與所修訂的文件相關聯的全部數量的數據將需要被傳輸或保存(例如,當在文本文件中的一個字母變化時,文本文件的整個數據表示和其散列值將改變以使得其將不是相同文本文件的先前版本的重復)。另一方面,散列是快速的,因為對于整個數據文件,散列函數僅需操作一次。固定大小的數據區(qū)塊散列函數可對在整個文件中找到的所有數據的部分或區(qū)塊執(zhí)行散列(例如,單個文本文件可被分成10個相同大小的10k比特數據區(qū)塊),且可以以非重疊(non-overlapping)固定大小設置數據區(qū)塊。出于各種目的,分區(qū)塊或分塊的速度是有吸引力的。最簡單且最快的方法是將輸入流分成固定大小的塊。這個方法可用某些rsync文件同步技術進行。但是當使用固定大小分塊時存在潛在的再同步問題;考慮當在文件開始附近進行入或刪除編輯時發(fā)生什么在單個塊改變后,整個后面的分塊將會改變。文件的新版本可能具有很少的重復塊。同樣,對于固定大小區(qū)塊,SHA-1散列函數可應用于構成全文件(例如,100K比特)的固定大小的一組區(qū)塊(例如,10K比特)中的每一個。在此情況下,可找到更多的重復,因為每次被散列的數據區(qū)塊更小,且在全文件中某處的單個位變化將僅造成構成全文件的多個區(qū)塊中一個區(qū)塊的變化(例如,10個IOK比特區(qū)塊中的9個將是重復的)。區(qū)塊越小,冗余檢測就越好,但過程可能會略微更慢,因為對于在整個數據文件中找到的相同量的數據,散列函數(例如SHA-1)必須多次運行。避開再同步問題的一種方法是使用內容限定的分塊(CDC)的技術,其中可以使用局部窗(localwindow)(例如,12至48字節(jié)長)來將數據流可再現地分成可變大小的塊。這種分塊在下面的意義上是有概率性的在給定隨機數據輸入的情況下,對平均輸出塊大小或者塊產生的平均速率具有某些控制。CDC產生可變大小的塊,其能更好地將變化從局部編輯限制(restrain)為有限數目塊。CDC的應用可包括幾種類型的網絡文件系統(tǒng),空間優(yōu)化存檔的參考文件集,以及文件同步。低帶寬文件系統(tǒng)(LBFS)作為廣泛使用的技術在建立CDC上有影響。一般情況下,基本分塊算法通常僅增加有對最小與最大的塊大小的限制。在某些情況下,如果達到最大塊大小或者如果在輸入數據流內找到輔助特殊數據序列,可作出更復雜的決定。內容限定的數據塊散列可通過應用相當慢且略微更好執(zhí)行的(例如,更準確且更能區(qū)別的)運算來執(zhí)行以識別并產生由它們內容限定的各種數據塊的值。一種這樣的散列函數可包括拉賓指紋識別(Rabinfingerprinting)與SHA-1散列函數的組合。拉賓指紋識別可多次應用于數據文件中的數據的重疊數據窗(例如,滑動窗)以基于預定邊界點準則(例如,在為0的指紋中的預定比特集)確定塊邊界應設置于數據文件中何處,然后,SHA-1散列函數可應用于所確定的數據區(qū)塊(其大小基于被分析的基礎數據而改變)中的每一個。同樣,每個字節(jié)的輸入可被錄入到某些SHA-1散列運算內,如上文所述。但是,當與固定大小分塊比較時,拉賓指紋識別具有額外的運算負擔(例如,處理時間)。雖然這種方法很好地識別更多數據冗余,但是這些函數可能都是耗時的且組合起來可使得散列和/或數據冗余識別和消除非常耗時。實際上,拉賓指紋識別函數可能對于識別而言特別耗時,其中特別是各種數據區(qū)塊切割或散列點應試圖優(yōu)化冗余數據識別和/或數據消除。在與數據存檔或備份有關的各種實施例中,當通過使用基本分塊大小時,可使用備份切割點、塊點或斷點的經區(qū)分優(yōu)先順序的層次(prioritizedhierarchy)。這種技術可能會受到增加使包含局部編輯的輸入流再同步的可能性的愿望的激勵。這種技術還增加塊組合或合并技術或者塊拆分或斷開技術。在本文中說明了通過考慮使隨機數據輸入分塊的統(tǒng)計,可有效地使用這樣的方法,并有著優(yōu)于先前系統(tǒng)與方法的顯著改進。基本分塊技術可使用由最小與最大塊長度參數化的內容限定的分塊方案來操作,且可能包括備份切割點、塊點或斷點的理念,且在本文中可被稱作"基線(baseline)"重復消除技術或函數。重復消除(DE)的一個益處在于對于許多類似文件系統(tǒng)的輸入,可識別大部分再現的內容。與在某種壓縮相關的意義上最佳的重復區(qū)域的主動搜尋相比,重復消除的效率低下主要出現于跨越新舊數據之間邊界的數據組、區(qū)塊或塊。因此隨著數據組、區(qū)塊或者塊大小減小,通常,重復消除效率增加。但是,這可導致每塊(組或區(qū)塊)的儲存成本增加(更多的元數據,更長的檢索與重組時間等)。重復消除率(DER)可被定為輸入字節(jié)/存儲字節(jié)的比(即,使用字節(jié)作為數據單位的輸入數據/存儲數據)??紤]數據存檔應用,當前的數椐檔案系統(tǒng)可獲得大約5至20的DER。一個考慮是出于DE目的,每塊的元數據可能會如何影響所希望的數據組、區(qū)塊或塊大小。例如,假如每個數據組、區(qū)塊或塊具有100字節(jié)的開銷來表示數據組、區(qū)塊或塊可能存儲于何處和如何存儲。如果這種系統(tǒng)支持例如50的最大DER,那么平均數據組、區(qū)塊或塊大小應為至少50*100=5000字節(jié)(以這個數據組、區(qū)塊或塊大小,添加一個重復將花費100個字節(jié))。如果每塊的成本較高,那么可能會有產生更大數據組、區(qū)塊或塊大小的動;f幾。由于這個原因,典型的重復消除方法^使用例如2k至16k范圍的數據組、區(qū)塊或塊大小且明確地并不試圖以短串水平(short-stringlevel)去除冗余??赏ㄟ^對個別塊4吏用快速"局部"壓縮方案來將這些冗余去除到有限程度。同樣,如果可使用更大平均大小的數據組、區(qū)塊或塊,可提高每個塊(組或區(qū)塊)壓縮的效率。但值得注意的是,與由重復消除所節(jié)省的數據存儲空間的量相比,這個特定益處仍略微較小,因為對于每個存儲塊,其僅發(fā)生一次,而每次碰到(encounter)塊時發(fā)生由于重復消除而引起的收益(gain),其17至20倍。本發(fā)明的一個目的在于找到改進的重復消除方案,相對于傳統(tǒng)("基線")重復消除方法,其可增加DER和/或平均數據組、區(qū)塊或塊大小。本發(fā)明的各種類型的應用可需要根據該應用的數據集或數據流的獨特方面或特性來發(fā)展本發(fā)明的特定功能。舉例而言,可應用兩個基本原理來對存檔或備份數據流的處理與管理作出改進原理1_一可假設長段的新的或先前未見到的數據為隨后出現(例如,在下一備份運行期間)的良好候選;以及,原理2——可由更短的塊來使在跨重復與新(先前未見到)數據之間邊界的"改變區(qū)域(changeregion)"附近發(fā)生的低效率最小化。在此情況下,原理l可由以下事實證實對于"典型"檔案或備份數據(例如,主目錄,電子郵件等),檔案或備份數據的DER通常位于5-20的范圍內。另一方面,對于具有高度翻轉的內容的系統(tǒng)或具有所插入的頻繁非重復標記的內容數據流(forsystemswithahighrolloverofcontent,orcontentdatastreamswithfrequentnon-duplicatemarkersinserted),原理1實際上可能是未被證明的。原理1支持使用數據分組、分區(qū)塊或分塊技術或程序,其可產生具有較大平均大小的數據組、區(qū)塊或塊,特別是當處于新的或先前未見的數據的延伸區(qū)域中時。從原理2可出現基線技術或程序的許多變型變型的主要區(qū)別在于如何識別改變區(qū)域和在改變區(qū)域內多少新的或先前未見到過的數據以更精細的粒度被分組、分區(qū)塊或分塊。一個方法可從初始技術開始,這個技術可首先將每個資料分組、分區(qū)塊或分塊成平均包含大量數據的數據組、區(qū)塊或塊。隨后,可識別包含重復和非重復數據的區(qū)塊,并選擇這些區(qū)塊的子集。然后這個選定的子集可使用分開或拆開技術來以更精細水平對所識別的數據區(qū)域重新分塊。這個方法的一個優(yōu)點在于可能需要對重復塊的很少查詢。但是,在這種方法中,小的插入/修改可能會使整個大塊無效。如果重復消除率(DER)性能比最小化查詢次數更重要,那么在下面的段落中所討論的合并程序可能是更好的選擇。通過在大塊可能在的位置中提供更多的靈活性,可獲得略微更好的DER。在可能略微更靈活的方法中,可優(yōu)選初始以一種精細水平(finelevel)分塊并將小塊組合成大塊的數據建立(building-up)或合并^支術或程序。通過允許對如何形成大塊的增加可能性,可使這種方法更靈活。建立或合并分組、分區(qū)塊或分塊技術可更精細地括含單個插入/修改塊且隨后再利用這個單個插入/修改塊。但是,如上文所述,對于如何構造大數據組、區(qū)塊或塊而言提供更多變型或可能性可能要花費更多的查詢次數來確定不同的預期大小較大的組、區(qū)塊或塊是重復的還是非重復的。一些變型的不同可能在于在作出數據分組、分區(qū)塊或分塊決定之前對所需的查詢次數進行限制。一般而言,可用于創(chuàng)建更大數據組、區(qū)塊或塊(例如,每個數據組、區(qū)塊或塊的更大的數據量)的、以及在括含改變區(qū)域上的靈活性越高,在同時增加DER與數據組、區(qū)塊或塊大小方面技術或程序的性能就越好。這些技術在例如數據存檔設置方面的確切行為(behavior)可取決于頻率分布、重復區(qū)域的長度和從一個備份序列或會話(session)到下一備份序列或會話的插入或修改"編輯(edits)"的平均大小。本發(fā)明的各種實施例可為快速且可縮放的,特別是關于涉及要存儲的數據量或文件數目的實施例。如果這些要求寬松,本發(fā)明的各種數據分區(qū)塊技術可與更復雜的方法耦合。舉例而言,各種實施例也可包括存儲關于大的塊包含什么特定子塊(sub-chunk)的信息以及產生更復雜的壓縮型方法來存儲并重組數據流。另外,本發(fā)明的數據分組、分區(qū)塊和分塊技術或函數可與更有雄心(ambitious)的技術耦合,諸如相似性檢測和增量壓縮(deltacompression),但是,基于主動找到"類似"文件或塊的各種方法的通用性可能較差,因為它們傾向于隨著存儲塊的數目而線性縮方文(scalelinearly)或更差。更好的方法可使用略微"被動(passive)"的技術,主要受到上文所提到的簡單原理1和原理2支配,其可能以常數時間操作,因為它們可能僅需要有限次數的數據組、區(qū)塊或塊存在查詢來作出最終的數據分組、分區(qū)塊或分塊決定。為了與數據存檔和備份應用一起使用,本發(fā)明可使用(例如)32k的平均數據組、區(qū)塊或塊大小的目標。這個目標可適用于獲得所希望水平的讀/寫速度要求與元數據存儲成本的組合(更大的塊有助于這個目的)。但也可能希望實現與通常使用平均僅4k-8k的塊大小的現有重復消除方案相當的DE水平。本發(fā)明可包括多個用于滾動窗(rollingwindow)切割點、斷點或塊點選擇的選擇準則技術。一般而言,通過選擇預定位置集來分開輸入流而進行內容限定的分塊操作。如果分塊決定(切割點確定)是基于包含于局部窗內的數據,那么分塊是內容限定的。典型目的如下如果產生切割點的窗集是充分隨機的,那么對于實際數據輸入而言,塊大小分布將仍類似隨機輸入的統(tǒng)計期望。為了實現快速的切割點確定和合理地良好執(zhí)行的切割點(如在與本發(fā)明同一天提交的CezaryDubnicki、ErikKruus、CristianUngureanu和KrzysztofLichota的名稱為"METHODSANDSYSTEMSFORDATAMANAGEMENTUSINGMULTIPLESELECTIONCRITERIA"的相關專利申請中所提到的,通過引用合并于此),第一快速選擇函數(例如,方脈沖求和(boxcarsum))以及第二較慢的選擇過程(例如,CRC32c或SHA-l)可用于確定切割點的初始集??蛇x擇兩階段(two-stage)切割點、斷點或區(qū)塊點選擇過程來對方脈沖求和的速度進行杠桿作用(leverage)。首先,可使用快速方脈沖求和來作出較為寬容(permissive)的選擇以產生潛在的切割點、斷點或區(qū)塊點集。根據這個集,第二(較慢)散列函數可用于選擇最終切割點、斷點或區(qū)塊點。這些"組合的"分塊函數對于大多數輸入窗而言以方脈沖散列的速度操作(通常受到存儲器帶寬限制),且只是偶爾需要利用較慢的散列函數來進行評估。由于第二散列函數不需要滾動,可使用任何散列函數,對速度具有很小的影響。在各種實施例中,可有益地將用于初始選擇的較快的方脈沖函數(例如,散列函數)與其之后用于最終選擇的較慢的CRC32c或SHA-l函數(例如,散列函數)進行組合??赏ㄟ^參考散列值的最低有效零位(leastsignificantzerobit)的數目來確定可能的分塊切割、區(qū)塊、散列或斷點。如果這個零位的數目為f,那么我們就說這個窗以水平f產生切割點。各種示范性切割、斷開、散列、區(qū)塊點函數的表在表I中說明,其示出了在模擬期間實現的各種速度。名稱代碼速度MB/sbt腦arhash+=b360hash=ROL(ha我N)Ab280.,,,(J^Cj^hash=shas:h:*A+b270Rabinhash=((teh<<8)lb》AAfhash>>N195hashA=A|>rol沐'xorOhash=ROL(hash,N)AA[b175xAdl就si+=i^s2+=sl;liash=slAs2^haslsA=Msh>>6;160表I在上面的表I中提供了某些簡單的散列函數。散列被分配有常數初始值。對于窗中的每個字節(jié),通過添加下一字節(jié)值b來修改散列。此處所列出的散列函數具有快速滾動版本。此處A和N是特定于散列的常數(hash-specificconstant),而ROL是循環(huán)左移操作(rotate-leftoperation)。xAdler散列是Adler(/FIetcher)散列的簡化版本。速度值表示具有最大量的編譯時間常數的相當優(yōu)化(fairlyoptimized)的代碼,且可提供散列函數速度的合理表示。速度測試測量滾動散列并檢查存儲器中隨機數據的數百兆字節(jié)上的終端零位。在各種實施例中,系統(tǒng)與方法可包括產生和維持多個備份切割、區(qū)塊、散列或斷點。對于任何滾動散列算法共同設置的參數可以為最小塊大小,m;最大塊大小,分塊'水平,和備份切割點的數目b。對于隨機輸入數據,以水平^進行切割的任何窗檢查和(checksum)應產生r二2,的平均塊大小。預期平均數據塊大小是當提供包含隨機輸入數據的輸入流時選擇分塊邊界的統(tǒng)計上預期的速率。塊大小s的統(tǒng)計預期應遵循平均值r的指數分布在S輸入字節(jié)的任何序列中,確切看到k切割點的概率應遵循泊松(Poisson)分布,、一)、_當5=1時,在區(qū)域S內確切地具有一個切割點(k-l)的概率被最大化。對于最小塊大小m,平均塊大小應該約為m+丄。對于最大塊21大小,一般水平(plainlevelK的塊識別器(chunker)將以概率e—、M,命中該最大值。指數分布具有相當長的尾部(tail)。如果該函數在(Z三2f)(51三M-m)的狀況(reghne)下操作,那么其可產生時間的大小最大的塊137%。這是相當大的一部分塊且在此情況下可選擇替代切割點。一種可容易維持的替代方案為可能以水平《-l(等等)碰到的任何切割點。在這個第一備份水平,以m+^-'m+^^的平均塊大小,不太可能(《10%)具有零切割點。如果在這個水平存在切割點,那么其將清楚地提供更好的機會來(例如)使兩個輸入流再同步而不是在第M個數據字節(jié)的任意切割。通過維持切割點較少的幾個備份水平,可能會降低無獨特切割點的概率。在本文所述的各種實驗中常常使用3個備份切割點且3個備份切割點可為實際選擇。在一個水平具有幾個備份切割、區(qū)塊、散列、斷點可允許選擇在最早的或最遲的這種點進行切割。出于重復消除的目的,在最早切割點進行切割通常提供了最好的再同步。在較遲切割點進行切割可以以增加松弛(slack)為代價提供最大的塊大小增加(參看,例如,美國專利公開第2006/0047855號),在本文所提出的各種實驗數據中,可選擇備份切割、區(qū)塊或散列點來得到最長與最大的區(qū)塊或塊。將參看附圖來提供本發(fā)明的各種實施例的更詳細的討論。圖1提供根據本發(fā)明的至少一個實施例的數據管理系統(tǒng)100的示范性概略圖,數據管理系統(tǒng)100可識別輸入流中的信息且有時可在產生輸出之前修改該信息??商峁┹斎霐祿?10。輸入數據流110可為數據流或數據集且可包括(例如)一個或多個電子位和/或字節(jié)的數據。數據流110可來自任何數目或種類的設備或來源中的一個或多個(例如,在PC上運行的計算機程序、LAN、因特網、存儲盤、無線手持裝置、微處理器輸出、存儲芯片、存儲棒、所接收到的傳輸等)。數據識別系統(tǒng)120可識別各個位和/或字節(jié)的電子信息且可將它們存儲于各種存儲器、緩沖器等以供使用(其可包括于一個或多個電子裝置中)。數據識別系統(tǒng)還可包括各種斷開、區(qū)塊、塊或散列點確定函數。該數據和信息可由數據操縱系統(tǒng)130使用。在各種實施例中,數據操縱系統(tǒng)130可包括數據散列函數、重復消除函數、散列表、壓縮函數等且可包括于電子和/或計算機系統(tǒng)或網絡中。但基于數據的類型和特性以及數據操縱系統(tǒng)130應用的目的,有時可操縱來自數據流110的數據或有時不操作來自數據流110的數據。在任何情況下,一旦數據通過數據識別系統(tǒng)120和數據操縱系統(tǒng)130,其中的某些或全部可作為輸出數據流140而輸出。隨后,這個輸出數據流可以電子數據通常經歷的任何方式被進一步處理、傳輸、存儲等。在本發(fā)明的各種實施例中,輸出數據流可作為備份數據在多個存儲介質中的任一個上存檔或存儲?,F參看圖2,提供數據識別過程200的示范性概略圖。數據識別過程200可利用(例如)第一選擇函數220(可包括上文所述的快/慢多個選擇準則)且然后可利用第二修改選擇函數,第二修改選擇函數可包括內容限定的分塊策略,內容限定的分塊策略合并230和/或斷開240某些現有塊。該過程可始于步驟210,其中輸入數據流被輸入到數據識別系統(tǒng)(例如,系統(tǒng)120)內。之后,在步驟220,可將內容限定的分塊程序(procedure)(函數、算法等)應用到數據流來獲得所提出的數據切割、區(qū)塊、斷開或塊點。內容限定的分塊程序可包括第一快散列和第二慢散列函數或程序(例如,在前述相關專利申請中所公開的技術)。之后,可執(zhí)行步驟230或240中的一個或兩個。在步驟230,可;并現有塊而修改;斤提出的數據切割:區(qū)丄、斷開i塊點。在步驟240,可通過應用區(qū)塊或塊拆分或斷開程序來基于將在下文中更細描述的特定規(guī)則將現有塊拆分成更小塊來修改所提出的數據切割、區(qū)塊、斷開或塊點。在步驟240,來自這些程序的輸出數據可確定切割、區(qū)塊、斷開或塊點或者所發(fā)出的待發(fā)送到數據操縱系統(tǒng)130的塊。圖3a和圖3b是可在例如圖2的步驟230使用的示范性內容限定的分塊策略的數據流。這個實例策略可(i)將小塊合并到長段的非重復數據內的大塊內,同時(ii)通過不合并它們而使鄰近重復數據的非重復數據區(qū)域的邊緣與小塊毗鄰,和/或(iii)再次發(fā)出被發(fā)現是重復的大塊。在這種示范性情況下,原理1與原理2可應用于設置數據切割、斷開、區(qū)塊或塊點,特別是在大串數據流有可能隨時間而被重復的情形下,例如當處理存檔或備份數據時。在圖3a和圖3b中,數據流300與350分別說明了數據分塊程序,其可包括改變或修改對于其數據流所提出的分塊的過程。在圖3a中,在第一個早些時候的分塊時間(例如第一星期時)初始提出的數據流切割、斷開、區(qū)塊或塊點可包括此處示為330的數據的一段摘錄(excerpt)。在此情況下,可存在例如30個數據組、區(qū)塊或塊的長序列,其可由內容限定的分塊的程序(例如,圖2中的220)產生,在其中未發(fā)現重復數據。由名稱"n"來表示非重復狀態(tài)的分配。數據分塊程序330可(如所表示的那樣)確定出30個個別塊中每一個塊是非重復的以及確定出五個鄰接塊301至326的所有合并是非重復的。在此情況下,可選取在程序330中所說明的塊合并策略230來通過合并五個小塊的連續(xù)組形成大塊,得到包括(例如)六個大塊341至346的輸出流340。在可對應于例如第二個隨后時間的圖3b中,所提出的輸入流351的摘錄的分塊同樣包含30個塊。如圖所示,數據流351可包括多個重復數據區(qū)塊或塊,例如,被認為在一起的前五個塊352,和被認為在一起的后五個塊357,可為重復的(標示為'd,且被稱作大重復)。由于保留重復大塊是有利的,包括352與357的小塊可選擇為合并到輸出流380內,產生大塊390與391。重復352與357的這兩個組可界定(bound)被分配為(例如)非重復狀態(tài)的二十個數據區(qū)塊或塊353-356的串。在區(qū)塊353-356內,"n"標示無論作為個別塊還是作為任何五個連續(xù)塊的組均未能發(fā)現重復。原理1表明可使用塊組合或合并程序來將塊點360與370之間的這個大量非重復數據分組一起。但是,基于原理2(未產生跨或者足夠靠近在被認為是重復的數據與被認為是非重復的數據之間邊界的大塊),最好可能是隔開(partition)非重復區(qū)域360-370以包括小塊的初始與最終緩沖區(qū)。如果改變區(qū)域360-370足夠小(例如,少數連續(xù)數據組或非重復數據的"短洞(shorthole)"),該程序可選擇發(fā)出鄰接塊的整個區(qū)域而不執(zhí)行任何合并。可替代地,如示范性輸出流380中所呈現的情形,組合或合并程序可選擇將來自360-370的區(qū)域發(fā)出為三個大塊395、396、和397,前面是兩個小塊381與382,后面為三個小塊383、384和385。因此,輸出流380可在從被認為重復的區(qū)域到被認為非重復的區(qū)域的過渡之后和/或在從非重復區(qū)域到重復區(qū)域的過渡之前包含未合并的小塊的過渡區(qū)域。用于結合程序300與350以產生輸出流320與380所示效果的過程通過維持可接受量的重復檢測和/或增加存儲或傳輸數據段的平均大小,使例如歸檔應用、因特網通信等典型的數據流的性能改進。參看圖4a和圖4b,提供根據本發(fā)明的至少一個實施例的數據流24內容限定的分塊策略可將在毗鄰重復數據的相鄰非重復數據的開始與結尾處附近的較大塊斷開或拆開來更好地識別在這些區(qū)域內的潛在重復。數據流400與500說明了數據分塊程序,其可包括用于改變或修改所提出的分塊410與460的過程(對應于例如圖2的步驟240)以便產生示范性輸出420與480。在圖4a中,在第一早些時候,例如第一個星期,程序220的輸出可包括此處示為410的數據流摘錄。在此情況下,可能同樣存在被歸類為非重復的數據組、區(qū)塊或塊的序列(標示為'n')。在410中展示了六個這樣的塊。根據原理l,分塊修改策略可選擇在其輸出流420中呈現這些相同的塊,期望這些大塊可能有很好的機會隨后再次出現。在圖4b中,在第二隨后日期,例如,第二個星期,圖2的程序220的輸出可包括數據流的摘錄460,其中,這個時間,某些數據組、區(qū)塊或塊被確定為重復的(標示為"d"的461與466),而其它462-465被確定為非重復的(標示為"n,,)。塊修改策略可決定將重復塊461和466不加修改地傳遞到輸出流,因為一般而言,希望大的重復輸出塊。在此情況下,在切割、斷開、區(qū)塊或塊點470與475之間的區(qū)域完全包括被識別為非重復的組、區(qū)塊或塊。確定出點470開始了非重復區(qū)域的分塊修改策略可選擇使用產生更短平均塊長度的替代程序來拆分一個初始的塊462,而并不修改內部非重復塊的區(qū)域。確定出點475開始了跟隨非重復區(qū)域的重復區(qū)域的這個相同策略也決定利用例如產生更短平均塊長度的替代程序拆分一個在先塊465。如圖所示,初始非重復數據區(qū)塊462可產生多個更小的區(qū)塊或塊481-485,而最后的非重復數據區(qū)塊可在輸出流中產生四個區(qū)塊491-494。以此方式,更小的塊在捕獲更多重復數據區(qū)塊方面更好,因為這個策略能更好地劃開原始數據流460內改變區(qū)域的開始和結尾。舉例而言,如圖4b所示,輸出流實際上可重復區(qū)塊481、482和494。本領域技術人員應認識到與數據流300、350、400和450相關的程序的具體實施可在如何具體地限定重復和/或非重復區(qū)域,小塊的緩沖區(qū)可選擇成多長,小塊或大塊的大小等細節(jié)方面有所不同。小(或較小)塊可具有大約2-18k的典型大小,且對于隨機數據輸入而言,可展示類似于指數分布的塊大小分布。在簡單合并實施例中的較大塊或大塊可例如總是由確切地八個連續(xù)小塊構成(以相對應的更大范圍的塊大小),且可平均大小為大約16k-144k(例如,大了7倍),且在提供隨機輸入數據時,可展示比指數更窄的較窄塊大小分布。在各種實施方式中,第一分割程序(segmentationprocedure)之后可為第二分割程序,且第一數據分割程序與第二分割程序的預期平均數據組大小可不同。預期平均數據組大小是當提供包含隨機輸入數據的輸入流時選擇分塊邊界的在統(tǒng)計上預期的速率。預期數據組大小可與選擇準則有關,如在CezaryDubnicki、ErikKruus、CristianUngureanu和KrzysztofLichota的相關專利申請"METHODSANDSYSTEMSFORDATAMANAGEMENTUSINGMULTIPLESELECTIONCRITERIA"中所解釋的或者如等式(l)(如上文所示的塊大小的理論預期(在不存在最小或最大塊大小限制的情況下))所表明的。某些實施方式可優(yōu)選利用基礎數據流的實際長度或量來支配合并限制或關于重復或非重復狀態(tài)分配的各種限制、或關于應合并多少數據的限制,而不是用"塊,,作為運算單位,如圖3所示。其它實施方式可包括可合并小塊的若干方式或程度。某些實施方式可額外地或替代地選擇使用輸入流的另一(且實際基本上不同的)特性來引導小塊與大塊之間的決策過程。舉例而言,實施方式可包括到引導分塊策略230和/或240的輸入,其源于從先前數據輸入和/或輸出的統(tǒng)計模型以引導在不同預期的輸出塊長度的分塊程序之間的過渡。這些策略的其它有用輸入可包括基于(例如)先前歷史(priorhistory)或快速熵估計方法(例如,雷尼熵(Renyientropy))的可壓縮性估計。某些實施方式還可包括相對于目前重復消除目標基于結果的當前狀態(tài)來設置或動態(tài)地改變分塊大小的概率。舉例而言,如果程序正實現重復消除目標,那么程序可被切換成(switchto)以更大的平均塊大小來將新的非重復數據分塊并且還減小元數據。或者,如果尚未滿足重復消除目標,那么該程序可切換到稍微更小的大塊大小。某些實施方式也可包括相對于平均數據組大小目標基于結果的當前狀態(tài)來設置或動態(tài)地改變分塊大小的概率。如果程序的輸出流的平均塊大小超過目標,那么,例如,若能在后來適當地處置可變數目個小塊中的連續(xù)數目的重復查詢,該程序就可合并在全新數據區(qū)域中更少數目的塊。某些實施方式也可包括相對于小和/或較大數據組的估計的或實際的可壓縮性基于當前狀態(tài)或基于重復消除特性的理論或實驗模型來設置或動態(tài)地改變分塊大小的概率。如果先前性能評估(例如)示出處在小塊水平,例如進入非重復區(qū)域很可能涉及小塊的初始序列,該小塊的前三個尤其有可能是重復的,而接下來的8個或更多個尤其有可能是不重復的,那么程序可將邊界區(qū)域中小塊數目調整成(例如)三個小塊(而不是例如四個或兩個)。某些實施方式也可包括多次應用第二數據分割程序以進一步改進最后的塊大小和/或DER的概率。舉例而言,可修改程序以便進行拆分;假如初始小分塊始于具有重復狀態(tài)的區(qū)域的更細微粒度(finer-grain)的延伸,那么第一非重復區(qū)域可構想為在甚至可更細微的尺度(finerscale)上拆分以更靠近地端接(terminate)重復區(qū)域。當與數目增加的越來越小的塊相關聯的元數據成本超過DER的益處時(如可基于預定或動態(tài)變化的目標)可終止這個過程。應當指出的是,圖3a、圖3b、圖4a和圖4b的輸入數據流可對應于原始數據流的相同摘錄。在此情況下,可有益地考慮并比較分配重復/非重復狀態(tài)所需的額外處理努力的原理來源(principlesource)。在圖3a和圖3b中,重復狀態(tài)的查詢次數的上限為每個小塊兩次查詢(對于塊重復,最多一次查詢,而對于五個鄰接塊的重復,一次查詢)。因此,在相同的輸入流330和410的情況下,查詢努力(queryingeffort)被限定為對于圖3aA30x2=60,且在圖4a中是6。合并過程的其它實施方式可允許可變大小的大塊,其中可合并多個鄰接塊達到某預定最大值,或者達到基礎數據的某預定最大量。這將得到每單位輸入的常數量的查詢努力,但這個常數更大。這些考慮對于系統(tǒng)設計可能具有實際影響。實際上,雖然當提供被分配為非重復狀態(tài)的鄰接數據區(qū)時,許多程序能產生類似輸出流380與480的輸出,但有用的經驗法則為"靈活性,,(即,對于合并的塊,允許更大量的位置和/或長度)更高的程序可實現更大量的重復消除。需要以額外查詢的成本來平衡這個性能益處。應當指出的是,這個成本大致為常數,與先前所存儲的數據尺度無關,而包括存檔系統(tǒng)中相似性檢測和增量壓縮的某些技術可隨著所存儲的數據量而線性縮放(或更差)。所提出的系統(tǒng)與方法的小的額外成本和優(yōu)良的可縮放性使得這些方法優(yōu)于改進用于數據歸檔、數據通信系統(tǒng)等的重復消除和數據處理速度的其它可用系統(tǒng)與方法。前文所述程序中的每一個程序可使用相對簡單的過程、軟件或算法來執(zhí)行,因此將僅需要少量的處理時間,并潛在地增加了重復數據識別且改進了DER。另外,在各種實施例中可使用短或小先行緩沖器來實施每個程序。如果少量的數據被插入在大的重復數據流中,先行緩沖器甚至有助于輔助再同步。在先行緩沖器并不識別目前數據流距先前數據流的移位(shift)的情況下,可需要主要再同步。基于被處理的數據流中數據的特定類型,這種再同步可是預定的。各種實施例也可包括一個或多個備份切割、斷開、區(qū)塊或塊點來輔助再同步。在任何情況下,現將提供多個更詳細的流程圖和實例來進一步描述本發(fā)明的某些實施例。應當指出的是雖然在圖3a、圖3b、圖4a、圖4b所示的實例中各個大塊和小塊被繪制成具有相等長度,但個別塊可包括基礎數據流的不同數目字節(jié),且與被稱作小塊與大塊的數據相關聯的數據流的實際長度在一個小/大塊與下一個小/大塊之間可不同。舉例而言,某些大塊的數據內容嚴格地大于未合并的基礎塊中的任何塊的數據內容,這樣的大塊可小于在輸入數據流的其它區(qū)域中所產生的個別小塊。因此,這些塊實際上可具有可變大小而不是如在這些圖中所示的固定的大小??赏ㄟ^首先運行創(chuàng)建較小塊的程序,之后運行合并成大塊的塊合并的程序,在產生可變大小塊方面提供顯著更高的靈活性。存在許多可能的方式來作出合并決定,且一個重要的不同在于作出分塊決定所需的每個小塊的查詢次數。舉例而言,一種簡單的方法可為通過固定或給定數目(N)的連續(xù)小塊的級聯來產生較大或大塊。這個方法可將大塊存在查詢次數限定為(例如)每個小塊1次。另一可能性可能為允許大塊為2..N個連續(xù)小塊,其中所需查詢次數限定為更高。較少期望使用關于未發(fā)出的小塊(即,由于它們是某些大塊的部分而未發(fā)出的小塊)的信息,因為可能會存在需要以某種方式存儲的大量的小塊"元數據"。一種簡單的示范性塊合并程序或算法可為(例如)1voidprocess(SmallChunkLookAheadBufferbuf[Oto2k-l]){2if(isDupBig(buf[O]))emitbig@buf[Otok—1];3elseif((then=findDupBigStarting(buf[ltok]))4emitsmallsuntilthen,followedbyabig;5elseif(isPrevDupBig)emitksmalls;6elseemitbig@buf[Otok-1]7}這個程序通過允許各種合理方式而具有靈活性,在這些合理方式中精確地限定分步驟(componentstep)。此處'buf可指包含例如高達2k-l個塊的先行緩沖器。'isDupBig(buf0),可經過檢查弄清楚第一小塊是否可能為先前發(fā)出的合并塊的部分。在各種實施例中,例如,可需要檢查包含buf可作為大塊再次發(fā)出('emitbig@buf[Otok-l')。在其它實施例中,isDupBig(buf),的程序,除了其可順序調用始于先行緩沖器buf內的增加偏移(increasingoffset)的isDupBig之夕卜。如果發(fā)現這個前瞻性的(forward-looking)最長的、第一合并塊在先前已發(fā)出,那么在第4行可發(fā)出始于buf[01的小塊,之后是由第3行發(fā)現的第一合并塊。'isPrevDup,查詢在buf[0之前緊接著發(fā)出的塊的重復狀態(tài)的狀態(tài)變量。其可被實施為反映出先前發(fā)出塊的所分配重復狀態(tài)的狀態(tài)變量和/或如果先前發(fā)出的塊為包含多于一個小塊的合并塊,就存儲真(true)來實施。其它實施例可替代地向任何重復的先前發(fā)出塊(一個或多個小塊)分配'真,重復狀態(tài)。此外,大塊形成準則可包括將大塊限制為超過作為大塊基礎的數據流大小的預定閾值的塊。為了簡便起見,我們在下文中提到的大塊是由小塊的計數在合并程序期間單獨確定的。對于固定大小的大塊,該過程對每個小塊可作出至多1次查詢,而對于可變大小的大塊,該過程可對每個小塊作出達到k-l次查詢。其它變型包括修改單個小塊是否被認為足以產生(邏輯)重復/非重復過渡的理念。如果在沒有先行緩沖器的情況下寫這樣的算法,那么findDupBigStarting()謂詞(predicate)不可用。在這些情況下,兩個重復輸入流可能保持不確定地非同步(out-of-synchindefinitely)。這可通過引入再同步切割點來避免每當小塊的切割點水平超過某閾值時,可允許小塊端接大塊,但也可不允許小塊在大塊內部的其它地方出現。以此方式,在不具有足夠的先行查看來自發(fā)地這樣做的算法中,可在再同步切割點后使兩個重復輸入流強行再同步?,F參看圖5a和圖5b,提供了內容限定的分塊策略的示范性流程圖500,其可利用固定大小的先行緩沖器來將小塊合并或組合成新非重復數據的長段內的大塊,同時使非重復數據的邊緣與小塊為毗鄰并將小塊留在非重復數據的短區(qū)域內。首先,在503,輸入緩沖器或先行緩沖器包括多個較小塊。然后,在決定步驟506,確定在緩沖器中是否存在足夠發(fā)出更大塊數據的小塊。如果不是,那么在步驟509,可從緩沖器發(fā)出l個小塊,且在步驟524,可用最后發(fā)出的塊之后的下一塊再填充緩沖器。如果在緩沖器中存在足夠發(fā)出大塊的小塊,那么,在決定步驟512,確定緩沖器是否始于先前發(fā)出的大塊。如果是,在步驟515,可發(fā)出這個大塊,之后是再填充緩沖器的步驟524。如果不是,那么在步驟518,決定步驟確定緩沖器是否具有足夠靠近緩沖器開始(bufferstart)以防止發(fā)出大塊的先前發(fā)出的大塊。如果是這樣,那么在步驟521,該過程將發(fā)出在緩沖器開始與大塊之間的小塊并發(fā)出這個大塊,之后是再填充緩沖器的步驟524。但是,如果緩沖器并不具有足夠靠近緩沖器開始以防止發(fā)出大塊的先前發(fā)出的大塊,那么該過程繼續(xù)進行到步驟決定步驟556。在決定步驟556,確定緩沖器在特定點后是否具有足夠允許構造后面的大塊的小塊,在這個特定點處沒有先前發(fā)出的大塊可能足夠靠近緩沖器開始以防止發(fā)出大塊(緩沖器開始加上大塊長度)。如果不是,那么在步驟568,該過程確定最后發(fā)出的塊是否為先前發(fā)出的大塊。如果是這種情況,那么在步驟571,該過程可發(fā)出l個小塊,之后為再填充緩沖器的步驟524。如果對步驟568的回答是否定的,那么在步驟565,發(fā)出新的大塊。如果在步驟556確定出能構造后面的大塊,那么執(zhí)行決定步驟559。在決定步驟559,確定在步驟524最后發(fā)出的塊是否為先前發(fā)出的塊或者后面的大塊是否為先前發(fā)出的。如果對決定步驟559的答案是否定的,那么在步驟565發(fā)出新的大塊。如果在決定步驟559的答案是肯定的,那么在確定下一個可能的大塊之前在步驟562發(fā)出所有小塊。在任一情況下,之后為再填充緩沖器步驟524。參看圖6a、圖6b和圖6c,根據至少一個實施例,將內容限定的分塊的合并策略應用于數據輸入流的示范性說明600。首先,輸入數據流605被示出包括小塊散列值的示范性系列,其中每個示范性散列值由個別字符來表示。示范性輸入數據流605將是應用第一標準內容限定的分塊算法的結果。然后,通過用先行緩沖器610迭代查看輸入數據流605,可將包括根據圖5a和圖5b的內容限定的分塊算法函數的第二修改選擇函數應用到示范性輸入數據流605。先行緩沖器610具有八個(8)小塊的示范性容量。在這個實例中,所說明的分塊策略限制預期的大塊確切地包括四個小塊。初始,用在輸入數據流605開始處的小塊,或更具體地,這些塊的散列值,"abcdefgh"來填充先行緩沖器610。在發(fā)出合并的小塊或者未合并的小塊的每個決定后,先行緩沖器610被填充得達到以最后發(fā)出塊之后的塊開始的容量。舉例而言,當先行緩沖器610在輸入數據流605開始處初始包含八(8)個小塊"abcdefgh"時,小塊"a"、"b、"c和"d"被合并到新的大塊"abcd,,615且就這樣被發(fā)出,因為這些第一小塊或者下一個可能的大塊"efgh"620在之前都未見到過。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"abcd"615后的下一塊"e"之后,小塊"e"、"f"、"g"和"h"也被合并為新的大塊"efgh,,620且就這樣被發(fā)出,因為最后發(fā)出的塊"abcd"615和下一可能的大塊"ijkl"625都不是重復大塊。在先行緩沖器610被再填充得始于之前最后發(fā)出的塊"efgh,,620后的下一個塊"i"之后,小塊"i"、"j,,、"k"、和'T也被合并為新的大塊"ijkl"625且就這樣被發(fā)出,因為最后發(fā)出的塊"efgh,,620和下一個可能的大塊"mnop"都不是重復的大塊。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"ijkl"625后的下一塊"m"之后,小塊"m"、"n"、"o"和"p"并未被合并成新的大塊且都被發(fā)出為小塊"m"、"n,,、"o"和"p"630,因為雖然最后發(fā)出的塊"ijkl"625是非重復大塊,但下一個可能的大塊"efgh"640之前在620看到過?,F參看圖6b中這個示范性概念說明600的繼續(xù),在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"p"630后的下一塊"e"后,小塊"e"、"f,、"g"和"h"合并成新的大塊"efgh"640且就這樣被發(fā)出,因為這些塊作為先行緩沖器610的開始構成如之前在620所看到的先前發(fā)出的大塊。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"efgh"640后的下一塊"i"后,小塊"i,,、"j"、"k"和"1"被合并成新的大塊"ijkl"645且就這樣被發(fā)出,因為這些塊作為先行緩沖器610的開始構成如之前在625所看到的先前發(fā)出的大塊。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"ijkl"645后的下一塊"a"后,小塊"a"、"a"、"a"和"b,,不合并成新的大塊且都被發(fā)出為小塊"a"、"a"、"a"和"b"650,因為雖然下一個可能的大塊"bbcd,,在之前從未見到過,但最后發(fā)出的塊"ijkl"645是之前在625見到過的大塊。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"b"650后的下一塊"b"后,小塊"b"與"b"未被合并成新的大塊,發(fā)出為小塊"b"和"b"655,而小塊"a"、"b"、"c,,和"d"被合并成新的大塊"abcd"655且就這樣被發(fā)出,因為先前發(fā)出大塊"abcd,,足夠接近先行緩沖器610的開始以防止發(fā)出潛在大塊"bbab"?,F參看在圖6c中這個示范性概念說明600的繼續(xù),在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"abcd"655后的下一塊"k"后,小塊"k"、"1"、"m"和"n"未被合并成新的大塊且都被發(fā)出為小塊"k"、'T,、"m"和"n"665,因為雖然下一個可能的大塊"opij"在之前從未見到過,但最后發(fā)出的塊"abcd"655是之前在615見到過的大塊。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"n"665后的下一塊"o"后,小塊"o"和"p,,未合并成新的大塊且發(fā)出為小塊"o"與"p"670,而小塊"i',、"j"、"k"和"1"被合并成新的大塊"ijkl"670且就這樣被發(fā)出,因為先前發(fā)出的大塊"ijkl"670足夠靠近先行緩沖器610的開始以防止發(fā)出潛在的大塊"opij"。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"ijkl"670后的下一塊"x"后,小塊"x"、"x"、"y"和"y"未被合并成新的大塊且都被發(fā)出為小塊"x"、"x"、"y"和"y,,675,因為雖然下一個可能的大塊"zzac,,在之前從未見到過,最后發(fā)出的塊"ijkl"670是之前在625見到過的大塊。在先行緩沖器610被再填充得始于先前最后發(fā)出的塊"y,,675后面的下一塊"z"后,小塊"z"、"z,,、"a"和"c,,被合并成新的大塊"zzac"680且就這樣被發(fā)出,因為先行緩沖器610已開始即將用完數據(因此如果先行緩沖器610始于潛在大塊"zzac"后的"a",在下一迭代中可能不能發(fā)出另一大塊)且最后發(fā)出的塊"y"675不是先前發(fā)出的大塊。最后,當用最后發(fā)出的塊"zzac"680后的剩余小塊"a"再填充先行緩沖器610后,小塊"a"不能被合并成大塊,因為不存在與之合并的塊且被發(fā)出為小塊"a"685。因此,對輸入數據流605應用第二修改選擇函數(其包括根據圖5a和圖5b的內容限定的分塊合并函數)造成將從第一標準分塊算法提供的塊修改成非重復數據的長區(qū)域內的大塊、非重復數據長區(qū)域邊界處的小塊以及非重復數據短區(qū)域內的小塊??紤]在病理(pathological)情況下再同步的可能性導致下面這樣一個選項決不允許大塊跨越某高水平的切割、區(qū)塊、斷開或塊點。這個選項可能最終會強迫重復流中的再同步,僅僅是因為大塊總是以偏移方式選擇,而否則重復流在理論上可能會保持不同步達一長時期。圖7a和圖7b提供根據至少一個實施例的內容限定的分塊策略的示范性流程圖700,只要大塊不跨越再同步點,其利用固定大小的先行緩沖器以及備份(例如,再同步)塊點將小塊合并成長段的非重復數據內的大塊,同時還使非重復數據邊緣與小塊毗鄰并且將小塊留在非重復數據的短區(qū)域內。首先,在703,輸入緩沖器或先行緩沖器包括多個較小塊。然后,在決定步驟709,確定在緩沖器中是否存在足夠發(fā)出大塊的小塊。如果不是,那么在步驟712,可從緩沖器發(fā)出一個小塊,且在步驟706,可用最后發(fā)出的塊后的下一塊再填充緩沖器。如果在緩沖器中存在足夠發(fā)出大塊的小塊,那么在決定步驟715,如果發(fā)出大塊,確定是否經過(cross)再同步點。如果不是,那么該過程繼續(xù)進行到步驟718以確定緩沖器是否始于先前發(fā)出的大塊。如果是的,即經過再同步點,那么該過程繼續(xù)進行到步驟712且可發(fā)出一個小塊,之后為再填充緩沖器步驟706。如果是的,在步驟515,可發(fā)出這個大塊,之后為再填充緩沖器步驟706。如果在步驟718確定出緩沖器始于先前發(fā)出的大塊,那么該過程繼續(xù)進行到步驟721以發(fā)出這個大塊,之后為再填充緩沖器的步驟706。如果不是,那么在步驟724,決定步驟確定出緩沖器是否具有先前發(fā)出的大塊,這個先前發(fā)出的大塊并不經過再同步點且足夠靠近緩沖器開始以防止發(fā)出大塊。如果是這樣,在步驟727,該過程將發(fā)出在緩沖器開始與大塊之間的小塊并發(fā)出該大塊,之后為再填充緩沖器步驟706。但是,如果緩沖器并不具有這種足夠靠近緩沖器開始處以能防止發(fā)出大塊的先前發(fā)出的大塊,那么該過程繼續(xù)進行到決定步驟760。在決定步驟760,確定緩沖器在特定點后是否具有足夠小塊以允許構造不經過再同步點的后面的大塊,在這個特定點處沒有先前發(fā)出的大塊可能足夠靠近緩沖器開始以防止發(fā)出大塊(緩沖器開始加上大塊長度)。如果不是,那么在步驟780,該過程確定在步驟706期間最后發(fā)出的塊是否為先前發(fā)出的大塊。如果是這種情況,那么在步驟785,該過程可發(fā)出1個小塊,之后為再填充緩沖器步驟706。如果對步驟708的答案為否,那么在步驟775,發(fā)出新的大塊。如果在步驟760確定出能構造不經過再同步點的后面的大塊,那么執(zhí)行決定步驟765。在決定步驟765,確定最后發(fā)出的塊是否為先前發(fā)出的塊或者如果考慮發(fā)出大塊,那么后面的大塊為先前發(fā)出的大塊。如果對決定步驟765的答案是否,那么在步驟775,發(fā)出新的大塊。如果在決定步驟765的答案是肯定的,那么在步驟770,確定在后面的大塊之前發(fā)出所有小塊。在任一情況下,之后為再填充緩沖器的步驟706。在下文中示出在檢測重復大塊之前或之后將非重復大塊重新分塊的簡單的塊拆分程序或算法的實例。1for(eachbigchunk){2if(isBigDup)emitasbig;3elseif(isPrevBigDupIIisNextBigDup)4rechunkassmalls;〃dup/nonduptransition5elseemitasbig;6}此處以較大的平均塊大小對數據進行了主要傳遞(heretheprimarypassoverthedatamaybedonewithalargeaveragechunksize),且可以以較小的平均區(qū)塊大小對重復大塊之后或之前的單個非重復數據塊進行再分塊。該過程可修改這個算法以檢測重復/非重復過渡的更復雜的定義(definition);例如,當N個非重復可能鄰近D個重復時,以更小的平均大小來將R個大塊再分塊?;蛘撸撨^程可以以實際塊長度工作以確定并處理重復/非重復過渡點。參看圖8a,提供內容限定的分塊策略800的示范性流程圖,其利用固定大小的先行緩沖器來將大塊拆分成非重復數據的短段內的小塊,同時將大塊留在非重復數據的長段內且沿著非重復數據的長段的邊界將大塊拆分成小塊。在步驟805,輸入緩沖器可包括多個大塊。那么,在決定步驟815,該過程可確定緩沖器是否始于先前發(fā)出的大塊。如果是的,那么在步驟820,發(fā)出大塊,之后在步驟810,緩沖器被再填充得始于最后發(fā)出的塊后的下一塊。如果不是,那么該過程繼續(xù)進行到決定步驟825。在步驟825,過程確定最后發(fā)出的塊是否為先前發(fā)出的大塊或者為先前發(fā)出的大塊的下一塊。如果這些情況中的任一是真,那么該過程可繼續(xù)進行到步驟830,且大的新塊被拆分或重新分塊成多個更小的塊且它們在緩沖器開始與下一大塊之間發(fā)出。這個步驟之后是緩沖器再填充步驟810。但是,如果對步驟825的問題的答案是否定的,那么在步驟835,塊被發(fā)出為大塊,之后為緩沖器再填充步驟810。參看圖9a、圖9b和圖9c,提供了根據本發(fā)明的至少一個實施例的所要求保護的第二修改選擇函數的示范性說明900,第二修改選擇函數包括根據圖8的內容限定的分塊拆分函數?,F參看圖9a、圖9b和圖9c,表示概念說明900、935和960,示出輸入數據流905包括大塊散列值的示范性逗號分隔系列,其中每個示范性小塊散列值由個別字符表示且大塊由級聯字符表示。雖然大部分大塊被描繪為每個大塊包含四個小塊,但每個大塊內的小塊數目實際上是可變的。示范性輸入數據流卯5將為第一標準內容限定的分塊算法(例如,圖2的220)的應用結果,第一標準內容限定的分塊算法被設計成以較大的平均塊大小分塊。然后,通過利用先行緩沖器910迭代地查看輸入數據流905將第二修改選擇函數應用到示范性輸入數據流905,第二修改選擇函數包括根據圖8的內容限定的分塊拆分函數(例如,圖2的240)。先行緩沖器910具有兩(2)個大塊的示范性容量。起初,用在輸入數據流905開始處的大塊,或更具體地,這些大塊的散列值,"abcd""efgh"來填充先行緩沖器910。在發(fā)出拆分小塊或大塊的每個決定后,先行緩沖器610被填充得達到以最后發(fā)出塊之后的塊開始的容量。舉例而言,當先行緩沖器910初始包括在輸入數據流卯5開始處的兩個(2)大塊"abcd"與"efgh"時,小塊"a"、"b"、"c"和"d"保留為大塊"abcd"915且就這樣被發(fā)出,因為這個第一大塊和下一大塊35"efgh,,920在之前都未見過。在先行緩沖器910被再填充得始于先前最后發(fā)出的塊"abcd"915后面的下一大塊"efgh"后,小塊"e"、"f,、"g"和"h"也仍保留為大塊"efgh,,920且就這樣被發(fā)出,因為最后發(fā)出的塊"abcd"915和下一個大塊"ijkl"925在之前都未見過。當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"efgh"920后的下一塊"ijkl"后,小塊"i"、"j"、"k"和"1"也保留為大塊"ijkl"925且就這樣被發(fā)出,因為最后發(fā)出的塊"efgh"920或下一個大塊"mnop"在之前都未見過。在先行緩沖器910被再填充得始于先前最后發(fā)出的塊"ijkl"925后的下一塊"mnop"后,小塊"m"、"n"、"o"和"p"從大塊"mnop"拆分且都被發(fā)出為小塊"m"、"n"、"o"和"p,,930,因為雖然最后發(fā)出的塊"ijkl"925在之前未見到過,下一大塊"efgh"之前在920見到過?,F參看圖9b中這個示范性說明900的繼續(xù),當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"p"930后的下一塊"efgh"后,小塊"e"、"f"、"g,,和"h"保留為大塊"efgh,,且就這樣發(fā)出,因為這些塊構成之前在920見到過的先前發(fā)出的大塊。在先行緩沖器910被再填充得始于先前最后發(fā)出的塊"efgh"940后的下一塊"ijkl"后,小塊"i"、"j"、"k"和"1"也保留為大塊"ijkl"945且就這樣被發(fā)出,因為作為先行緩沖器910的開始的這些塊構成之前在925見到過的先前發(fā)出的大塊。在先行緩沖器910被再填充得始于先前最后發(fā)出的塊"ijkl"945后的下一塊"aaab"后,小塊"a"、"a"、"a,,和"b,,從大塊"aaab"拆分且都被發(fā)出為小塊"a"、"a"、"a"和"b,,950,因為雖然下一個可能的大塊"bbab"在之前從未見到過,但最后發(fā)出的塊"ijkl"945是大的且之前在925見到過。當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"b"955后的下一塊"bbab,,之后,小塊"b,,、"b"、"a"和"b,,保留為大塊"bbab,,955且就這樣被發(fā)出,因為最后發(fā)出的塊"b"950和下一大塊"cdkl"965都是之前未見過的大塊。讀者應了解到塊拆分算法并不依靠檢測并再次發(fā)出半路開始經過大塊"bbab"955的大重復塊"abed"(achunksplittingalgorithmhasnorecoursetodetectingandre-emittingthelargeduplicatechunk"abed"的塊合并算法中是可能的?,F參看圖9c中這個示范性說明900的繼續(xù),當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"bbab"955后的下一塊"cdkl"后,小塊"c"、"d"、"k,,和'T保留為大塊"cdkl"965且就這樣被發(fā)出,因為最后發(fā)出的塊"bbab"955在之前從未見到過,且下一大塊"mnop"從未在先前發(fā)出為大塊。當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"cdkl"965后的下一塊"mnop"后,小塊"m,,、"n"、"o"和"p"從大塊"mnop"拆分且全都發(fā)出為小塊"m"、"n"、"o"和"p"970,因為雖然先前所發(fā)出的塊"cdkl"965在之前從未見到過,但下一塊"ijkl"在之前在945見到過。當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"p"970之后的下一塊"ijkl"后,小塊"i"、"j"、"k"和'T保留為大塊"ijkl"975且就這樣被發(fā)出,因為這些塊(作為先行緩沖器910的開始)構成如之前在945見到過的先前發(fā)出的大塊"ijkl"。當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"ijkl"975后的下一塊"xxyy"后,小塊"x,,、"x"、"y"和"y"從大塊"xxyy"拆分且都被發(fā)出為小塊"x"、"x"、"y"和"y"980,因為雖然下一塊"zzac"在之前從未見到過,但先前發(fā)出的塊"ijkl"之前在975見到過。當先行緩沖器910被再填充得始于先前最后發(fā)出的塊"y"980后的下一塊"zzac"后,小塊"z"、"z"、"a"和"c"保留為大塊"zzac"985且就這樣被發(fā)出,因為后面的大塊"a"在之前從未見到過,且先前發(fā)出的塊"y"980是重復的,但不是重復大塊。最后,當用最后發(fā)出的塊"zzac"985之后的其余小塊"a"再填充先行緩沖器910后,只是就這樣發(fā)出小塊"a"。將所要求保護的第二修改選擇函數應用到輸入數據流905造成將從第一標準分塊算法所提供的塊修改成非重復數據的長區(qū)域內的大塊、非重復數據的長區(qū)域邊界處的小塊以及在非重復數據的短區(qū)域內的小塊,該第二修改選擇函數包括根據圖8的內容限定的分塊拆分函數。圖10是根據本發(fā)明的至少一個實施例的內容限定的分塊合并策略對存檔或備份系統(tǒng)1000的示范性應用。在本發(fā)明的示范性應用中,可在例如計算機系統(tǒng)中提供源文件系統(tǒng)1010,且其可包含數據集或數據流。這個源文件系統(tǒng)1010可耦接到備份程序1020。本發(fā)明可凈皮結合到源文件系統(tǒng)1010和/或備份程序內,且可操作來提供更好的數據分塊和更好的重復消除。備份程序1020然后可將修改數據輸入到目標存儲裝置1030內,該目標存儲裝置1030例如,磁帶、磁盤、遠程磁盤存儲系統(tǒng)等。一個示范性存儲系統(tǒng)可為(例如)Saturnfull備份系統(tǒng)。現將提供本發(fā)明的各種示范性實施例的某些實驗數據結果?,F轉至本發(fā)明的實驗結果和分析的討論。本文的系統(tǒng)與方法和各種模擬裝置(例如,工具)允許研究其中使用關于未發(fā)出小塊(即,由于它們是某大塊的部分而未發(fā)出的小塊)的信息的一類技術、程序或算法?;谶@種信息的策略是不太合乎需要的,因為將存在需要以某種方式存儲的大量的小塊"元數據"。在測試代碼中,也允許一些具有理論意義的不實用的算法。我們維持布隆過濾器分別用于許多不同類型的塊發(fā)出小塊與大塊、發(fā)出的與未發(fā)出的。一個益處(例如)在于允許'重復,數據區(qū)域的概念包括先前發(fā)出的小塊以及未發(fā)出的小塊(其作為某些先前大塊發(fā)出的部分而發(fā)出)。修改為查詢未發(fā)出小塊的算法可在更精細的粒度水平上檢測重復數據。代碼也可向塊存在答復注入誤測以便測量近似回答存在詢問的效果(thecodecouldalsoinjectfalsepositivesintothechunkexistencereplies,inordertomeasuretheeffectofapproximatelyansweringexistencequeries)。在4個月的時間段內,我們使用了包括大約1.16太字節(jié)的數百用戶目錄的全備份的數據集進行測試。雖然我們并不確定文件類型的分布是什么,但唯一確定的是它是一個較大的實際數據集且是實際中可能看到的很典型的數據。開發(fā)了多種工具,其易于各種技術和/或算法的在線模擬從而對很大輸入數據集進行分析是可能的。關鍵構思在于產生輸入數據的二元'概要(summary),。對于以水平9所產生的每個小塊(在理論上平均每塊512個字節(jié)),我們存儲塊的SHA-1散列以及塊大小和實際切割點水平。這個塊數據足以將大多數輸入數據集再分塊,除了根本不產生任何塊點的非常不隨機的數據集之外。我們的實用程序(utility)的后來版本也存儲局部壓縮估計,這些壓縮估計是通過LZO壓縮算法運行每個(4k、8k、16k、32k)固定大小塊并存儲具有原始塊大小的百分數的單個字節(jié)而產生的。然后,在給定當前流偏移與塊大小的情況下,可估計在流中任意點處的壓縮。以此方式,1.1太字節(jié)的輸入數據可被分析為更輕便(portable)的60Gb的概要信息集。(這種再分析用數小時的時間而不是數天的時間,很大原因是由于減小了從盤的讀取。)。我們也存儲每個水平9塊的重復/非重復狀態(tài),如單獨文件所碰到的情況。在給定算法內,存在若干參數,諸如最小與最大塊大小,以及觸發(fā)水平,這些參數可產生不同的行為。斷開與合并算法也具有其它參數,諸如k(大塊中小塊的數目),是否允許可變大小的大塊等。當算法運行完(runover)整個1.1太字節(jié)數據集或其壓縮概要時,測量DER,通常作為輸入字節(jié)與所存儲的壓縮塊中字節(jié)的比。測量不同算法在我們的數據集上的性能。圖11示出根據至少一個實施例對于各種分塊技術而言,壓縮系數與塊大小關系的實驗結果。圖ll展示了對于三種算法,DER取樣與塊大小測量的關系。對于每個算法,實線是存儲塊的平均大小,而虛線搭檔(partner)是相同塊的平均壓縮大小。平均塊大小越大,壓縮就越好。基線算法1120和1125改變最小和最大塊大小以及平均塊大小。一般而言,保持分塊水平設置以產生大致在最小塊大小與最大塊大小之間中間的平均塊長度,且使用切割點的三個備份水平。以'簡易(Simple),跡線(trace)1130與1135示出以固定大小的大塊運行的簡單合并塊識別器。'精選的(Fancy),的算法1140與1145具有最好的性能,但這使用布隆過濾器查詢先前碰到但僅作為先前大塊的部分而發(fā)出的塊。參看圖12,示出根據至少一個實施例,對于各種分塊技術,壓縮系數與塊大小關系的實驗結果。圖12示出同樣的三種算法(基線1220與1225、實際1245與1250以及最佳1235與1240)在平均塊大小的更大范圍上進行比圖11更多的測量。還示出,以誤測率(thefalsepositiverate),對塊存在查詢的誤測答復的效果被設置為0、1、2、5、10、20和40%。水平線是對于相同輸入數據(DEI^5.67),商業(yè)(數據域(DataDomain))備份工具的重復刪除性能。對于這個測量,平均塊大小是未知的,但可能大約在4至10k字節(jié)之間。標記為'實際,與'最佳的,跡線是與圖ll相同的算法,但在參數的更寬的范圍內。在對數標尺(log-scale)上,趨向在lk至80k的塊大小范圍內呈現3為線性。但這不是一般規(guī)則,因為必須存在限制行為。由于塊大小變得非常大(圖的下部),修改基線算法幾乎得不到益處。為了有竟爭力,我們希望與具有大約8k的LBFS型塊大小的系統(tǒng)(其產生大約5.7的DER)竟爭。能以20k與30k之間的平均存儲塊大小實現類似的DER。曾嘗試研究來自局部布隆過濾器的適當查詢是否能形成實用的并且可縮放的檔案機制的基礎。為了使這種情況對于巨大(例如,Pb)數據集成為可能,我們研究了某些算法對于錯誤地識別出的重復的敏感性。在所有情況下,對塊存在查詢而言即使在1%的誤測的情況下,結果表明DER和塊大小很快地劣化(degrade)。所發(fā)生的情況為這些錯誤地產生的重復/非重復過渡不正確地產生了小塊。最好,應將這種'局部,布隆過濾器限制于某些受限制的過去中高品質的存在查詢,從而不引起誤測。但是,如果在局部布隆過濾器中未找到項(item),仍應從后端存儲機制得到明確答案。對于網絡傳輸,局部布隆過濾器方法可能是完全夠用的。我們研究了某些更復雜的算法,這些算法試圖在以下方面更聰明(smarter),即可以怎么做以對大塊(若它們出現)的等效選擇區(qū)分優(yōu)先順序,但這些并不能顯著更好地工作。舉例而言,一個變型使用某些相當復雜的邏輯來將始于或止于再同步點上的大塊區(qū)分優(yōu)先順序,且進行測試以使用具有等效優(yōu)先權(priority)的最長的大塊。這并未示出顯著的改進。實際上,當在實際數據上運行時,通常是由于相當微妙的原因,若干這種嘗試工作起來很差。參看圖13,示出根據至少一個實施例,對于各種分塊技術,斷開重復刪除率與塊大小關系的實驗結果。在圖13中,與基線算法1320相比,提供了斷開算法的結果。系列11325、系列21330、系列31335與接合最小查詢(joiningminimalquerying)1340僅具有優(yōu)于基線1320的名義上的改進。針對這些運行而變化的參數為再分塊將產生的預期小塊的數目,k。但是,為了實現良好的性能,必須小心設置斷開算法的參數。斷開算法對40-50k的平均塊大小而言看起來工作得特別好。但令人遺憾的是,這個狀況具有略微缺乏竟爭力的DER。還示出對于'簡單,合并算法數據中的某些數據的未壓縮的DER??闯鰯嚅_算法幾乎與最簡單實施的合并算法一樣好。當塊點選擇(參看表I)使用基于拉賓的散列,與較大素數相乘,和組合的方脈沖十CRC32c方法、MLCG和組合CRC32c散列時比較我們的使用基線算法的數據集的DER(WecomparedtheDERofourdatasetusingthebaselinealgorithmwhenthechunkpointselection(seeTableI)usedhashesbasedonRabin,multiplicationbyalargeprime,andacombinedboxcar+CRC32capproach,MLCGandcombined-CRC32chashes)。我們發(fā)現幾乎完全相同的重復消除值與平均塊大小。這證實了Thaker的觀察,使用典型數據,即使使用普通方脈沖求和來選擇塊點也產生合理類似隨機的塊大小分配。他將這解釋為表明在輸入數據自身中存在足夠的比特水平隨機性(bit-levelrandomness),因此他的數據并不需要高品質隨機化散列?,F將討論(例如)最優(yōu)的"總是在一起的(always-together)"塊的數據特性。對于我們的1.1Tb數據集,也有興趣考慮小塊最佳可能的布置是什么樣的。結果表明在A=512的塊概要水平,僅涉及大約3.6億(360m川ion)個不同塊。謹慎地且通過不同消息摘要到整數標識符的轉換(translation),可能的是寫其它工具來確定某些簡單的塊合并,其使用"未來知識"來確定分塊性能的某些理論限制。優(yōu)化移動(optimizationmove)的簡單集總是合并總在一起出現的兩個塊。這將根本不會對DER產生影響,但將會增加平均塊大小。這種情況的迭代產生總是共同出現的塊的最長可能串。這種合并使得DER未受影響,只是增加了平均塊大小。實際上,合并常在一起或總是在一起的塊是優(yōu)化存儲的有用的后臺任務。但檔案后端可能不支持刪除,且可能不提供后面塊的信息,因此我們并不遵循這個途徑。替代地,這個實驗提供一種方法來判斷我們的基于重復/非重復過渡區(qū)的簡單算法執(zhí)行起來有很好。發(fā)現對于原始'水平9,概要流這個程序將平均未壓縮存儲塊大小從576字節(jié)增加到5855字節(jié)(即,對于這個數據集,總是共同出現的小塊的平均數大約為10)。這個6k大小類似于通常用于低帶寬網絡文件系統(tǒng)(LBFS)型分塊的塊大小。(參看,例如,A.Muthitacharoen,B.Chen和D.Mazieres,"ALow-bandwidthNetworkFileSystem",(2001),pp.174-187.)。我們還分析了更大的原始分塊,其中平均塊大小約為8k。合并每對總是在一起的塊得到75397字節(jié)的平均存儲塊大小。同樣,這個程序將平均存儲塊大小增加了大約9倍?,F參看圖14,圖1400以基線分塊算法1430正確地(inperspective)給出了先前提到的'理論,限制,多個其它可變大小的合并運行1440和1450(與先前圖中所展示的集合不同的集合,但是具有大約相同的行為),和各種理論塊大小限制1460和1470。在此情況下,目標是既增加DER又增加塊大小。如所示,圖1400"^兌明通過合并在我們的1.1太字節(jié)數據集中總是共同出現的塊的每個集合所確定的理論塊大小限制。這個程序可使得重復消除率(DER)不受影響(忽略元數據成本),但可增加平均存儲塊大小。對于我們的1.1太字節(jié)數據集,圖1400將具有可變大小的大塊(例如1440)的合并算法置于這個特定理論分塊限制的大約中間。盡管初始是基于簡單原理Pl與P2的考慮而公式化的,但是重要的是判斷我們的實際測試數據輸入與這個過分簡單化的數據模型的偏離有多大。因此,考慮對我們的測試數據集中實際特性與變型的分析。發(fā)現實際輸入測試數據與遵循Pl與P2的"理想"數據集具有很大的偏離。遵循Pl的最簡單的可能數據集在第一備份會話期間預期可具有鄰接非重復數據的長序列,之后為在隨后運行期間的重復數據的長段。使用塊的"當前,,重復狀態(tài)的比特流概要,通過詢問以512字節(jié)水平分塊的概要流,我們開始對我們的測試數據集的評估。相鄰非重復塊的數目與相鄰的重復的后面塊的數目(且反之亦然)關系的實際直方圖展示了極大的(overwhelming)且順滑變化的偏好(preference)是具有單個非重復塊,之后為單個重復塊。給出了用于產生在激發(fā)本發(fā)明方面所涉及的啟發(fā)式方法的簡單原理,這可能是令人驚奇的。用曲線繪制了最后鄰接的多個重復/非重復塊(在14個全備份會話之后)的直方圖(未圖示)。而且,令人意外的是,在第一"全"備份后的直方圖在特征(character)上與它們類似。但是,值得一提的是,這些直方圖并不足以估計不同策略的重復消除率,因為未計數塊重復的次數。結合我們的測量,總是在一起的塊的平均大小大約為6k,這個評估表明對測試數據集的統(tǒng)計行為更深的理解可得到其它啟發(fā)式方法,這些啟發(fā)式方法甚至可能勝過本文所發(fā)明的程序,特別是對于涉及重復塊與非重復塊的高度散布的輸入數據集。但是使用這個1.1Tb的測試數據所發(fā)現的改進表明本發(fā)明也可對具有類似非理想統(tǒng)計行為的很多其它現實數據集實現穩(wěn)健的性能。如上文所述,在各種實施例中,本發(fā)明可用于數據識別與重復數據消除。因此,在確定了優(yōu)選散列、切割、邊界、塊或斷點后,可產生用于所確定數據塊的散列值并與先前存儲的散列值相比較。在各種實施例中,本發(fā)明可特別地適用于數據重復消除。另外,如上文所述,本發(fā)明可同樣應用于各種電子系統(tǒng),包括無線網絡、因特網、內部網、計算機系統(tǒng)與網絡,其中被處理、存儲和/或傳輸的數據串和散列的使用可證明是有用的。下文提供了本發(fā)明可操作于其上的各種系統(tǒng)中某些系統(tǒng)的描述。如所提到的,在各種實施例中,本文所提供的系統(tǒng)與方法可使用計算裝置來實施,例如,個人計算機、服務器、微型主機和/或大型主機等,其被編程以執(zhí)行指令序列,指令序列配置計算機來執(zhí)行如本文所述的操作。在各種實施例中,計算裝置可(例如)為可購自許多商用制造商的個人計算機,這些商用制造商諸如,德克薩斯,奧斯汀的戴爾計算才幾(DellComputerofAustin,Texas),其運行(例如)WindowsTMXPtm與Linux操作系統(tǒng),且具有標配外圍設備(例如,鍵盤、鼠標、顯示器、打印機)。圖15是可用于實施本文所述的系統(tǒng)與方法的托管軟件應用程序的計算裝置1500的一個實施例的功能框圖?,F參看圖15,計算裝置1500可包括處理單元1505、通信接口1510、存儲裝置1515、用戶接口1520、操作系統(tǒng)指令1535、應用可執(zhí)行指令/API1540,所有這些以功能性通信提供且可使用例如數據總線1550。計算裝置1500還可包括系統(tǒng)存儲器1555,數據與數據可執(zhí)行代碼1565、軟件模塊1560和接口端口。接口端口1570可耦接到一個或多個輸入/輸出裝置1575,諸如打印機、掃描儀、一體化打印機(all-in-oneprinter)/掃描儀/傳真機等。處理單元1505可為一個或多個微處理器或微控制器,其被配置成執(zhí)行實施本文所述的功能的軟件指令。應用可執(zhí)行指令/API1540和操作系統(tǒng)指令1535可使用計算裝置1500存儲于存儲裝置1515和/或系統(tǒng)存儲器1555(可包括易失性存儲器與非易失性存儲器)上。應用可執(zhí)行指令/API1540可包括實施本發(fā)明系統(tǒng)與方法的軟件應用程序。操作系統(tǒng)指令1535可包括可操作地控制處理器1505的基本操作和控制的軟件指令。在一個實施例中,操作系統(tǒng)指令1535可包括(例如)XPTM操作系統(tǒng),其可購自華盛頓,雷蒙德的微軟公司(MicrosoftCorporationofRedmond,Washington)。指令可從另一計算機可讀介質(諸如存儲裝置)讀取到主存儲器內。如本文所用的"計算機可讀介質"可指參與提供指令到處理單元1505來執(zhí)行的任何介質。這種介質可采用許多形式,包括,但不限于,非易失性介質、易失性介質和傳輸介質。非易失性介質可包括(例如)光盤或磁盤、指狀驅動器和U盤(thumborjumpdrive)和存儲裝置。易失性介質可包括動態(tài)存儲器,諸如主存儲器或高速緩沖存儲器。傳輸介質可包括同軸電纜、銅線和光纖,包括連接,連接包括總線1550。傳輸介質可采用聲波或光波的形式,諸如在射頻(RF)和紅外線(IR)數據通信期間所產生的聲波或光波。計算機可讀介質的常見形式包括(例如)軟盤、軟磁盤、硬盤、磁帶、任何其它的磁性介質、通用串行總線(USB)存儲棒TM、CD-ROM、DVD、任何其它光學介質、RAM、ROM、PROM、EPROM、快閃EPROM、任何其它存儲芯片或盒式磁帶(cartridge)、如下文所述的載波,或者計算機可讀取的任何其它介質。在輸送一個或多個指令中的一個或多個序列到處理單元1505供執(zhí)行的過程中可涉及各種形式的計算機可讀介質。舉例而言,指令初始可承載于遠程計算機1585(例如,服務器、PC、主機等)的磁盤上。遠端計算機1585可將指令載入到其動態(tài)存儲器內并使用(例如)連接到調制解調器的電話線在一個或多個網絡接口1580上發(fā)送指令,調制解調器可為模擬、數字、DSL或電纜調制解調器。網絡可為(例如)因特網與內部網、點對點網絡等。計算裝置1500可經由通信接口1510通過其它計算機網絡來發(fā)送消息并接收數據,數據包括程序代碼,通信接口1510可通過網絡接口1580耦接。服務器可通過因特網傳輸應用程序所請求的代碼用于下載應用。所接收到的代碼隨著其被接收和/或存儲于存儲裝置1515或其它非易失性存儲裝置1555中以便隨后的執(zhí)行,可由處理單元1505來執(zhí)行。以此方式,計算裝置1500可獲得以載波形式的應用代碼。本發(fā)明的系統(tǒng)與方法可駐留于單個計算裝置或平臺1500上或多個計算裝置1500上,或者不同應用可駐留于單獨的計算裝置1500上。應用可執(zhí)行指令/API1540和操作系統(tǒng)指令1535可被載入到計算裝置1500易失性存儲器的一個或多個所分配代碼段內用于在運行時間執(zhí)行。在一個實施例中,計算裝置1500可包括系統(tǒng)存儲器1555,諸如512MB的易失性存儲器與80GB的非易失性存儲器存儲。在至少一個實施例中,本發(fā)明系統(tǒng)與方法的軟件部分可使用(例如)C編程語言源代碼指令來實施。其它實施例也是可能的。應用可執(zhí)4亍指令/API1540可包括一個或多個應用程序接口(API)。本發(fā)明的系統(tǒng)與方法可使用API1540用于進程間通信和請求并返回應用間函數調用。舉例而言,可結合數據庫1565來提供API以便于開發(fā)(例如)SQL腳本,這種SQL腳本適于使數據庫根據腳本中所規(guī)定指令執(zhí)行特定數據存儲或檢索操作。一般而言,可使用API來便于開發(fā)應用程序,該應用程序被編程以實現本文所述功能中的某些功能。通信接口1510可向計算裝置1500提供在因特網上傳輸與接收信息的能力,包括,但不限于,電子郵件、HTML或XML頁、以及文件轉移能力。為此目的,通信接口1510還可包括網絡瀏覽器,諸如,但不限于,由MicrosoftCorporation所提供的MicrosoftInternetExplorerTM。用戶接口1520可包括計算機終端顯示器、鍵盤和鼠標裝置。也可包括一個或多個圖形用戶界面(GUI)來提供包含于互動的HTML或XML頁中的數據的顯示與操縱。現參看圖16,說明了系統(tǒng)與方法可在其上操作的網絡1600。如上文所述,本專利申請的系統(tǒng)與方法可在一個或多個計算機上操作。網絡1600可包括耦接到一個或多個客戶端數據存儲1610的一個或多個客戶端1605。一個或多個客戶端通過通信網絡(例如,光纖、電話線、無線等)耦接到通信框架1630。通信框架1630可(例如)為因特網和內部網、點對點網絡、LAN和特定的計算機到計算機網絡等。網絡1600還可包括耦接到通信框架1630以及耦接到服務器數據存儲1620的一個或多個服務器1615。本發(fā)明的系統(tǒng)與方法也可具有在網絡1600中的一個或多個部件上操作的部分以操作為完全操作的系統(tǒng)與方法。雖然已在上文中描述了本發(fā)明的實施例,但一些替代、修改與變型對于本領域技術人員顯而易見。一般而言,實施例可涉及其中可對數據執(zhí)行分析的這些和其它業(yè)務流程的自動化。因此,如上文所述的本發(fā)明的實施例只是說明性的,且不應解釋為限制本發(fā)明的范圍。在不偏離本發(fā)明的精神和范圍的情況下,可以對本發(fā)明作出各種變化。因此,本發(fā)明的范圍不應由上文所說明的實施例確定,而是由所附權利要求書和其法律等價物確定。在本發(fā)明中所引用的所有公開、專利和專利申請以其全文引用的方式結合到本文中用于所有目的。權利要求1.一種數據管理方法,包括使用第一數據分割程序與第二數據分割程序的組合將數據流斷開成多個數據組,其中第一數據分割程序與第二數據分割程序的預期平均數據組大小不同。2.根據權利要求1所述的方法,其中第二數據分割程序包括一個或多個替代數據分割程序。3.根據權利要求1所述的方法,其中如由對所述數據流中的數據進行先行查看所確定的,僅當滿足了與所述數據流中的所述數據相關的某些預定準則時應用第二數據分割程序。4,根據權利要求1所述的方法,其中所述第一分割程序具有比第二分割程序更小的平均數據組大小。5.根據權利要求4所述的方法,其中所述第二數據分割程序將兩個或更多個小數據組組合在一起以作出更大平均大小的更大數據組。6.根據權利要求5所述的方法,其中當所述兩個或更多個小數據組為沒有被確定為先前在所述數據流中出現過的新數據時,所述第二數據分割程序將所述兩個或更多個小數據組組合成更大數據組。7.根據權利要求6所述的方法,其中當到達或處理所述數據流的最大預定長度時,新數據的一個或更多個小數據組被組合成更大的數據組。8.根據權利要求5所述的方法,其中每當兩個或更多個小數據組是沒有被確定為先前在所述數據流中出現過的新數據且所述小數據組在被確定為先前出現過的數據組的后面順序出現時,所述第二數據分割程序跳過將所述兩個或更多個小數據組組合成更大數據組的步驟。9.根據權利要求5所述的方法,其中當所述兩個或更多個小數據組是沒有被確定為先前在所述數據流中出現過的新數據且所述小數據組在被確定為先前出現過的數據組之前順序出現時,所述第二數據分割程序跳過將所述兩個或更多個小數據組組合成更大數據組的步服10.根據權利要求5所述的方法,其中當所述兩個或更多個小數據組是沒有被確定為先前在所述數據流中出現過的新數據,且所述小數據組在被確定為在先前出現過的數據組之前或之后順序出現時,所述第二數據分割程序跳過將所述兩個或更多個小數據組組合成更大數據組的步驟。11.根據權利要求1所述的方法,其中當已組合了最大數目的小數據組時,新數據的一個或更多個小數據組被組合成更大的數據組。12.根據權利要求11所述的方法,還包括以下步驟發(fā)出一個或更多個小數據組或者一個或更多更大數據組。13.根據權利要求12所述的方法,其中只在不經過再同步點的情況下發(fā)出更大數據組。14.根據權利要求13所述的方法,其中向先前被發(fā)出過的或者被確定為在先前已經發(fā)出的、作為先前發(fā)出的大數據組的部分的小數據組分配重復狀態(tài),且其中多個數據組為連續(xù)數據的順序流。15.根據權利要求14所述的方法,其中所述第一數據分割程序是內容限定的分塊或分區(qū)塊的程序,其根據所述數據流中的數據獨立地確定斷點與數據分組并將這個信息輸入到第二數據分割程序,且所述第二數據分割程序是修改的內容限定的分塊或分區(qū)塊的程序或者是將兩個或更多個較小數據組組合成一個或更多個更大數據組的程序。16.根據權利要求15所述的方法,其中所述方法用于在數據存儲系統(tǒng)中執(zhí)行重復數據消除。17.根據權利要求1所述的方法,其中先行緩沖器用于確定何時應用第二數據分割程序。18.根據權利要求1所述的方法,其中所述第二數據分割程序還在檢測到重復區(qū)域或重復大數據組、區(qū)塊或塊之前或之后斷開非重復大數據組、區(qū)塊或塊。19.根據權利要求18所述的方法,其中所述第一分割程序具有大于所述第二分割程序的平均數據組大小。20.根據權利要求1所述的方法,其中當沒有以較小數據組結束的較大數據組被認為是重復的時,當緊接著的多個數據組屬于預定類型,或者緊接著的一定量的數據被認為是重復數據時,不向至少一個較小數據組應用所述第二數據分割程序。21.根據權利要求1所述的方法,其中如果使用第一分割程序與所述第二數據分割程序二者的結果并不能實現改進的預期結果,那么使用單個替代數據分割程序而不是所述第一分割程序與所述第二數據分割程序。22.根據權利要求1所述的方法,其中每當存在多個機會來應用第二數據分割程序且至少一個所得到的較大數據組被估計為重復時,即對至少一個這樣的較大數據組應用笫二數據分割程序。23.根據權利要求1所述的方法,還包括以下步驟發(fā)出一個或多個較小的數據組或一個或多個較大的數據組。24.—種用于數據管理的方法,包括應用第一內容限定的數據分塊程序來獲得一個或更多個初始分塊點;以及基于預定的準則集合來應用第二內容限定的數據分塊程序,以將所述初始分塊點修改成不同的分塊點,從而增加數據塊的平均大小與所識別的重復數據的平均量。25.根據權利要求24所述的方法,其中所述第二內容限定的數據分塊程序包括塊組合程序以合并由所述初始分塊點所限定的數據塊。26.根據權利要求24所述的方法,其中所述第二內容限定的數據分塊程序包括塊拆分程序來拆分由所述初始分塊點所限定的數據塊。27.—種內容限定的分塊的方法,包括以下步驟將小塊合并成被確定為非重復數據的長段數據內的大塊;使被確定為非重復數據區(qū)域的長段數據內的邊緣與小塊毗鄰,這通過不合并發(fā)現為靠近邊緣的小塊來進行,該非重復數據區(qū)域鄰近被確定為重復數據的數據區(qū)域;以及再次發(fā)出被發(fā)現為重復數據的大塊。28.—種數據管理系統(tǒng),包括數據識別系統(tǒng);以及數據操縱系統(tǒng),其中所述數據操縱系統(tǒng)基于預定的準則集合,選擇性地修改一個或更多個初始數據斷點以增加數據組的平均大小。29.根據權利要求28所述的系統(tǒng),其中所述數據操縱系統(tǒng)選擇性地修改一個或更多個初始斷點以增加所識別的重復數據的平均量而不增加數據組的平均大小。30.根據權利要求28所述的系統(tǒng),其中所述數據操縱系統(tǒng)通過應用數據區(qū)塊組合程序來合并現有數據區(qū)塊以修改所述初始斷點。31.根據權利要求28所述的系統(tǒng),其中所述數據操縱系統(tǒng)通過應用數據區(qū)塊拆分程序來拆分現有數據區(qū)塊以修改所述初始斷點。32.—種數據管理系統(tǒng),包括用于執(zhí)行數據識別的裝置;以及用于操縱數據的裝置,其中用于操縱數據的裝置基于預定的準則集合來選擇性地修改一個或更多個初始斷點來增加數據組的平均大小。33.根據權利要求32所述的系統(tǒng),其中用于操縱數據的裝置選擇性地修改一個或更多個初始斷點以增加所識別的重復數據的平均量而不增加數據組的平均大小。34.根據權利要求32所述的系統(tǒng),其中用于操縱數據的裝置通過應用數據區(qū)塊組合程序合并現有數據區(qū)塊來修改所述初始斷點。35.根據權利要求34所述的系統(tǒng),其中用于操縱數據的裝置通過應用數據區(qū)塊拆分程序來拆分現有數據區(qū)塊以修改所述初始斷點。全文摘要本發(fā)明提供用于數據管理與數據處理的系統(tǒng)與方法。舉例而言,各種實施例可包括系統(tǒng)與方法,該系統(tǒng)與方法涉及以可比較的或更好的執(zhí)行選擇結果(例如,高數據冗余消除和/或平均塊大小)選擇的相對較大的數據組。在各種實施例中,系統(tǒng)與方法可包括(例如)數據組、區(qū)塊或塊組合技術和/或數據組、區(qū)塊或塊拆分技術。各種實施例可包括第一標準或典型數據分組、分區(qū)塊或分塊技術和/或數據組、區(qū)塊或塊組合技術和/或數據組、區(qū)塊或塊拆分技術。示范性系統(tǒng)與方法可涉及數據散列和/或數據消除。實施例可包括先行緩沖器且基于基礎數據的特性和/或本發(fā)明的特定應用(例如,用于備份)來確定發(fā)出小塊還是大塊。文檔編號G06F11/16GK101595459SQ200780050841公開日2009年12月2日申請日期2007年11月28日優(yōu)先權日2006年12月1日發(fā)明者C·昂古里努,C·杜布尼基,E·克魯斯申請人:美國日本電氣實驗室公司