專利名稱:數(shù)據(jù)處理方法及數(shù)據(jù)處理設備的制作方法
技術領域:
本發(fā)明涉及報文處理技術,尤其涉及ー種數(shù)據(jù)處理方法及數(shù)據(jù)處理設備。
背景技術:
數(shù)據(jù)壓縮是對報文內(nèi)容進行算法處理,減小數(shù)據(jù)量,但不影響信息傳遞的過程。數(shù)據(jù)壓縮是為了達到節(jié)約網(wǎng)絡傳送帶寬、實現(xiàn)應用加速的目的。根據(jù)CDC(Content-Defined Chunking)可變塊 算法生成包含可變塊、可變塊的指紋以及可變塊的摘要的重復數(shù)據(jù)庫。生成重復數(shù)據(jù)庫后,如果待壓縮的數(shù)據(jù)中包含了與可變塊的前半部分相同并且與可變塊的后半部分不同的數(shù)據(jù)片段,則數(shù)據(jù)片段的指紋與可變塊的指紋匹配,則數(shù)據(jù)片段的摘要與可變塊的摘要不匹配。CDC算法認為重復數(shù)據(jù)庫需要進行更新,并使用定界滑窗機制生成新的可變塊。新的可變塊粒度可能比較大,降低了后續(xù)的待壓縮數(shù)據(jù)與更新后的重復數(shù)據(jù)庫發(fā)生匹配的概率。以上可能導致壓縮效率下降。
發(fā)明內(nèi)容
本發(fā)明實施例提供ー種數(shù)據(jù)處理方法及數(shù)據(jù)處理設備,用于提高數(shù)據(jù)壓縮效率。一方面,本發(fā)明實施例提供了ー種數(shù)據(jù)處理方法,包括根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,所述第一片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第一片段的長度與第一滑窗的長度相同;在第一本地重復數(shù)據(jù)庫中查找所述第一指紋,所述第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、所述重復數(shù)據(jù)的指紋以及所述重復數(shù)據(jù)的摘要;如果所述第一本地重復數(shù)據(jù)庫中存在所述第一指紋,則根據(jù)所述第一指紋獲取所述第一本地重復數(shù)據(jù)庫中的第一可變塊以及所述第一可變塊的摘要,所述第一指紋與根據(jù)所述指紋算法計算得到的所述第一可變塊中的第一初始塊的指紋相同,所述第一初始塊的起始位置與所述第一可邊塊的起始位置相同,所述第一初始塊的長度與所述第一滑窗的長度相同,所述第一可變塊的摘要為根據(jù)摘要算法對所述第一可變塊的摘要進行計算得到的;根據(jù)所述摘要算法計算所述待壓縮數(shù)據(jù)中的第二片段的摘要,所述第二片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第二片段的長度與所述第一可變塊的長度相同;比較所述第二片段的摘要與所述第一可變塊的摘要;如果所述第二片段的摘要與所述第一可變塊的摘要不同,則獲取所述第二片段中的第一子片段,所述第一子片段與所述第一可變塊中的第一子可變塊相同,所述第一子片段的起始位置與所述第二片段的起始位置相同,所述第一子可變塊的起始位置與所述第一可變塊的起始位置相同,所述第二片段中的第二比特與所述第一可變塊中的第一比特不同,所述第二比特為所述第二片段中所述第一子片段的下一個比特,所述第一比特為所述第一可變塊中所述第一子可變塊的下一個比特;
將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要添加到所述第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,所述第一子片段的指紋與所述第一指紋相同,所述第一子片段的摘要為根據(jù)所述摘要算法對所述第一子片段的摘要進行計算得到的。另ー方面,本發(fā)明實施例還提供了ー種數(shù)據(jù)壓縮設備,包括第一指紋計算単元,用于根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,所述第一片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第一片段的長度與第一滑窗的長度相同;查找單元,用于在第一本地重復數(shù)據(jù)庫中查找所述第一 指紋,所述第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、所述重復數(shù)據(jù)的指紋以及所述重復數(shù)據(jù)的摘要;重復內(nèi)容獲取單元,用于如果所述第一本地重復數(shù)據(jù)庫中存在所述第一指紋,則根據(jù)所述第一指紋獲取所述第一本地重復數(shù)據(jù)庫中的第一可變塊以及所述第一可變塊的摘要,所述第一指紋與根據(jù)所述指紋算法計算得到的所述第一可變塊中的第一初始塊的指紋相同,所述第一初始塊的起始位置與所述第一可邊塊的起始位置相同,所述第一初始塊的長度與所述第一滑窗的長度相同,所述第一可變塊的摘要為根據(jù)摘要算法對所述第一可變塊的摘要進行計算得到的;摘要計算單元,用于根據(jù)所述摘要算法計算所述待壓縮數(shù)據(jù)中的第二片段的摘要,所述第二片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第二片段的長度與所述第一可變塊的長度相同;摘要比較單元,用于比較所述第二片段的摘要與所述第一可變塊的摘要;第一子片段獲取単元,用于如果所述第二片段的摘要與所述第一可變塊的摘要不同,則獲取所述第二片段中的第一子片段,所述第一子片段與所述第一可變塊中的第一子可變塊相同,所述第一子片段的起始位置與所述第二片段的起始位置相同,所述第一子可變塊的起始位置與所述第一可變塊的起始位置相同,所述第二片段中的第二比特與所述第一可變塊中的第ー比特不同,所述第二比特為所述第二片段中所述第一子片段的下一個比特,所述第一比特為所述第一可變塊中所述第一子可變塊的下一個比特;第一添加単元,用于將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要添加到所述第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,所述第一子片段的指紋與所述第一指紋相同,所述第一子片段的摘要為根據(jù)所述摘要算法對所述第一子片段的摘要進行計算得到的。又一方面,本發(fā)明實施例還提供了 ー種數(shù)據(jù)解壓縮設備,包括第一指紋計算単元,用于根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,所述第一片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第一片段的長度與第一滑窗的長度相同;查找單元,用于在第一本地重復數(shù)據(jù)庫中查找所述第一指紋,所述第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、所述重復數(shù)據(jù)的指紋以及所述重復數(shù)據(jù)的摘要;重復內(nèi)容獲取單元,用于如果所述第一本地重復數(shù)據(jù)庫中存在所述第一指紋,則根據(jù)所述第一指紋獲取所述第一本地重復數(shù)據(jù)庫中的第一可變塊以及所述第一可變塊的摘要,所述第一指紋與根據(jù)所述指紋算法計算得到的所述第一可變塊中的第一初始塊的指紋相同,所述第一初始塊的起始位置與所述第一可邊塊的起始位置相同,所述第一初始塊的長度與所述第一滑窗的長度相同,所述第一可變塊的摘要為根據(jù)摘要算法對所述第一可變塊的摘要進行計算得到的;摘要計算單元,用于根據(jù)所述摘要算法計算所述待壓縮數(shù)據(jù)中的第二片段的摘要,所述第二片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第二片段的長度與所述第一可變塊的長度相同;摘要比較單元,用于比較所述第二片段的摘要與所述 第一可變塊的摘要;第一子片段獲取単元,用于如果所述第二片段的摘要與所述第一可變塊的摘要不同,則獲取所述第二片段中的第一子片段,所述第一子片段與所述第一可變塊中的第一子可變塊相同,所述第一子片段的起始位置與所述第二片段的起始位置相同,所述第一子可變塊的起始位置與所述第一可變塊的起始位置相同,所述第二片段中的第二比特與所述第一可變塊中的第ー比特不同,所述第二比特為所述第二片段中所述第一子片段的下一個比特,所述第一比特為所述第一可變塊中所述第一子可變塊的下一個比特;第一添加単元,用于將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要添加到所述第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,所述第一子片段的指紋與所述第一指紋相同,所述第一子片段的摘要為根據(jù)所述摘要算法對所述第一子片段的摘要進行計算得到的。根據(jù)本發(fā)明實施例提供的技術方案,如果待壓縮的數(shù)據(jù)中包含了與重復數(shù)據(jù)庫中的可變塊的前半部分相同并且與可變塊的后半部分不同的數(shù)據(jù)片段,則能夠生成粒度小于發(fā)生匹配的可變塊的新的可變塊,并將新的可變塊添加到重復數(shù)據(jù)庫。新的可變塊粒度較小,提高了后續(xù)的待壓縮數(shù)據(jù)與更新后的重復數(shù)據(jù)庫發(fā)生匹配的概率,進而提高了壓縮的效率。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作ー簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實施例提供的ー種數(shù)據(jù)處理方法的流程圖;圖2為本發(fā)明實施例提供的數(shù)據(jù)處理方法的一種應用場景的示意圖;圖3為本發(fā)明實施例提供的數(shù)據(jù)處理方法的另ー種應用場景的示意圖;圖4為本發(fā)明實施例提供的ー種數(shù)據(jù)處理方法的ー個具體實現(xiàn)方式的示意圖;圖5為本發(fā)明實施例提供的另ー種數(shù)據(jù)處理方法的流程圖;圖6為本發(fā)明實施例提供的ー種數(shù)據(jù)處理方法中壓縮后報文的封裝格式示意圖;圖7為本發(fā)明實施例提供的ー種數(shù)據(jù)處理方法應用到數(shù)據(jù)壓縮側(cè)設備的示意圖;圖8為本發(fā)明實施例提供的數(shù)據(jù)壓縮設備的結(jié)構(gòu)示意圖;圖9為本發(fā)明實施例提供的數(shù)據(jù)壓縮設備的ー種應用場景的組網(wǎng)結(jié)構(gòu)圖;圖10為本發(fā)明實施例提供的數(shù)據(jù)壓縮設備的另ー種應用場景的組網(wǎng)結(jié)構(gòu)圖。
具體實施例方式為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。數(shù)據(jù)壓縮技術包括兩種ー種是通過無損壓縮 算法在發(fā)送端壓縮數(shù)據(jù),在接收端進行數(shù)據(jù)解壓;另ー種是基于DRE (Data Redundancy Elimination,數(shù)據(jù)冗余刪除)技術,也稱為重復數(shù)據(jù)刪除(De-duplication),將需要傳送的數(shù)據(jù)中的重復內(nèi)容消除后用特殊的ID代替,只傳遞增量信息,從而減小數(shù)據(jù)量,實現(xiàn)數(shù)據(jù)壓縮目的。DRE技術一般應用于W0C(WAN Optimization Controller,廣域網(wǎng)優(yōu)化控制器),以減少需要WAN傳送的數(shù)據(jù)量,相當于增加WAN帶寬,節(jié)約了寶貴的WAN資源。WOC是ー種應用加速設備。在WOC設備的DRE實現(xiàn)中,處理的對象可以是基于IP報文,也可以是基于一條會話(即同一會話的多個連續(xù)IP報文)?;贗P報文的處理實現(xiàn)簡單,不需要緩存報文,性能較高,但是由于重復數(shù)據(jù)可能包含在多個報文中,導致不容易將重復數(shù)據(jù)進行識別和緩存。另外,將多個報文組合起來進行算法壓縮時,由于不同包的類型不同(如不同協(xié)議,或不同格式),難以得到較高的壓縮比?;跁挼奶幚韯t需要將ー個會話的多個包進行緩存,在線處理時性能存在一定限制,但是可以最大限度地識別出重復數(shù)據(jù),并且同一會話一般屬于同一類型,進行算法壓縮時能得到更高的壓縮比。DRE實現(xiàn)的過程包括壓縮設備的本地DRE模塊分析報文,判斷和確定相應數(shù)據(jù)塊;將確定的數(shù)據(jù)塊與重復數(shù)據(jù)庫中的已存數(shù)據(jù)塊比較,如果查找到同樣的塊存在,則表示之前傳輸過該數(shù)據(jù)塊(即為重復數(shù)據(jù)),此時在報文中用指紋代替該數(shù)據(jù)塊;沒有找到的數(shù)據(jù)塊被加入重復數(shù)據(jù)庫中;可選地,對去冗余后的報文進ー步進行壓縮;遠端設備的DRE模塊解壓(可選)后將指紋替換為原數(shù)據(jù)塊,之后傳送報文給用戶;本地DRE模塊與遠端DRE模塊需要進行數(shù)據(jù)塊及指紋的同歩。DRE技術基于ニ進制數(shù)據(jù)進行刪重處理,不需要感知上層的具體協(xié)議類型。其關鍵點是進行重復數(shù)據(jù)的識別和替換,即對內(nèi)容完全相同的重復數(shù)據(jù)進行識別,并建立重復數(shù)據(jù)庫(包括緩存重復數(shù)據(jù)和建立查找指紋),當后續(xù)傳送的數(shù)據(jù)存在已緩存的內(nèi)容(即重復數(shù)據(jù))吋,則用指紋代替。由于需要建立重復數(shù)據(jù)庫緩存(cache)已有數(shù)據(jù),因此DRE技術也稱為字節(jié)緩存(Byte cache)技術。而重復數(shù)據(jù)的識別和替換是基于數(shù)據(jù)塊實現(xiàn)的,數(shù)據(jù)塊的識別算法包括FSP (Fixed-Sized Partition,固定塊)、CDC 以及 SB (Sliding Block,滑動塊)。其中,CDC算法采用ー個滑動窗ロ(以下簡稱滑窗)對待壓縮的數(shù)據(jù)進行塊定界,滑窗從數(shù)據(jù)開始按字節(jié)向后移動,并采用特定的哈希(HASH)算法(如rabin HASH, ELFHASH等)計算出滑窗的指紋信息。當計算出的指紋滿足一定條件(如對特定值取模結(jié)果為某設定值),則認為找到數(shù)據(jù)塊邊界,然后向后滑動滑窗,再次計算滑窗的指紋信息,當計算條件成立,則找到下一數(shù)據(jù)塊的邊界,由此可以將整個數(shù)據(jù)劃分成大小可變的多個數(shù)據(jù)塊。當確定數(shù)據(jù)塊之后,采用特定的算法(SHA-1、MD5等,這些算法能對大量數(shù)據(jù)進行信息提取,形成固定長度的字段,由于算法的特定,不同的原始數(shù)據(jù)計算結(jié)果相同的概率非常低,可以忽略不計)來對數(shù)據(jù)塊的內(nèi)容進行計算,并將計算結(jié)果作為指紋查找本地的重復數(shù)據(jù)庫,如果存在則表明已有相同內(nèi)容的數(shù)據(jù)塊存在,當前數(shù)據(jù)塊為重復數(shù)據(jù)塊,如果指紋不存在,則將當前數(shù)據(jù)塊的指紋及塊內(nèi)容加入緩存(重復數(shù)據(jù)庫),以備下次檢查。CDC算法的塊定界算法可能因為計算條件總是不滿足導致塊過大,具體實現(xiàn)上可以對塊的大小設定上下限,當滿足上下限條件時強制分塊。CDC算法的優(yōu)點是對數(shù)據(jù)內(nèi)容的變化不敏感,當插入或刪除數(shù)據(jù)時只會影響到該變化數(shù)據(jù)相關的少量的數(shù)據(jù)塊,而其它塊不受影響。圖I為本發(fā)明實施例提供的ー種數(shù)據(jù)處理方法 的流程圖。如圖I所示,數(shù)據(jù)處理方法包括11、根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,該第一片段的起始位置與該待壓縮數(shù)據(jù)的起始位置相同,該第一片段的長度與第一滑窗的長度相同。其中,第一滑窗為現(xiàn)有的滑窗,用于對數(shù)據(jù)塊進行定界。12、在第一本地重復數(shù)據(jù)庫中查找該第一指紋,該第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、該重復數(shù)據(jù)的指紋以及該重復數(shù)據(jù)的摘要。13、如果該第一本地重復數(shù)據(jù)庫中存在該第一指紋,則根據(jù)該第一指紋獲取該第一本地重復數(shù)據(jù)庫中的第一可變塊以及該第一可變塊的摘要,該第一指紋與根據(jù)該指紋算法計算得到的該第一可變塊中的第一初始塊的指紋相同,該第一初始塊的起始位置與該第一可邊塊的起始位置相同,該第一初始塊的長度與該第一滑窗的長度相同,該第一可變塊的摘要為根據(jù)摘要算法對該第一可變塊的摘要進行計算得到的。14、根據(jù)該摘要算法計算該待壓縮數(shù)據(jù)中的第二片段的摘要,該第二片段的起始位置與該待壓縮數(shù)據(jù)的起始位置相同,該第二片段的長度與該第一可變塊的長度相同。其中,第二片段為現(xiàn)有⑶C算法中進行匹配壓縮處理的基本単元一數(shù)據(jù)塊。15、比較該第二片段的摘要與該第一可變塊的摘要。16、如果該第二片段的摘要與該第一可變塊的摘要不同,則獲取該第二片段中的第一子片段,該第一子片段與該第一可變塊中的第一子可變塊相同,該第一子片段的起始位置與該第二片段的起始位置相同,該第一子可變塊的起始位置與該第一可變塊的起始位置相同,該第二片段中的第二比特與該第一可變塊中的第一比特不同,該第二比特為該第ニ片段中該第一子片段的下一個比特,該第一比特為該第一可變塊中該第一子可變塊的下ー個比持。17、將該第一子片段、該第一子片段的指紋以及該第一子片段的摘要添加到該第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,該第一子片段的指紋與該第一指紋相同,該第一子片段的摘要為根據(jù)該摘要算法對該第一子片段的摘要進行計算得到的。根據(jù)本發(fā)明實施例提供的技術方案,如果待壓縮的數(shù)據(jù)中包含了與重復數(shù)據(jù)庫中的可變塊的前半部分相同并且與可變塊的后半部分不同的數(shù)據(jù)片段,則能夠生成粒度小于發(fā)生匹配的可變塊的新的可變塊,并將新的可變塊添加到重復數(shù)據(jù)庫。新的可變塊粒度較小,提高了后續(xù)的待壓縮數(shù)據(jù)與更新后的重復數(shù)據(jù)庫發(fā)生匹配的概率,進而提高了壓縮的效率。上述11至17可由壓縮側(cè)設備執(zhí)行,也可由解壓縮設備執(zhí)行。如壓縮側(cè)設備接收到一待去冗余的報文,該報文包括報文頭及凈荷,凈荷為待壓縮數(shù)據(jù),壓縮側(cè)設備按照上述11至17對凈荷進行處理?;蛘呷缃鈮嚎s側(cè)設備接收到ー去冗余后的報文,同樣的,該去冗余后的報文包含報文頭及凈荷,只不過該凈荷為壓縮側(cè)設備壓縮后的數(shù)據(jù),即部分數(shù)據(jù)已被替換為指紋,此時,解壓縮側(cè)設備處理的待壓縮數(shù)據(jù)即凈荷中其余未被替換的原始數(shù)據(jù)。當上述方法由壓縮側(cè)設備實現(xiàn)時,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可以包括接收第一報文,該第一報文包括第一報文頭與第一凈荷,該第一凈荷包含第一凈荷片段,該第一凈荷片段的長度與該第一子片段的長度相同;根據(jù)該指紋算法計算該第一凈荷片段中第二初始塊的指紋,該第二初始塊的起始位置與該第一凈荷片段的起始位置相同,該第二初始塊的長 度與該第一滑窗的長度相同;根據(jù)該摘要算法計算該第一凈荷片段的摘要;如果該第二初始塊的指紋與該第二本地重復數(shù)據(jù)庫中的該第一子片段的指紋相等,并且該第一凈荷片段的摘要與該第一子片段的摘要相等,則刪除該第一報文中的該第一凈荷片段,生成第二報文,該第二報文中包括第二報文頭與第二凈荷,該第二報文頭與該第一報文頭相同,該第二凈荷包括該第一子片段的指紋。這樣,解壓縮側(cè)設備可以根據(jù)指紋從重復數(shù)據(jù)庫中找到對應的第一子片段,將指紋替換為第一子片段,將報文中的數(shù)據(jù)恢復為原始數(shù)據(jù),實現(xiàn)數(shù)據(jù)的解壓縮??蛇x地,該第二凈荷還包括該第一子片段在該第一報文中的位置信息。當替換第一子片段的指紋未放置在第一子片段在第一報文中的原始位置時,解壓縮側(cè)設備對第二報文執(zhí)行解壓縮操作時,解壓縮側(cè)設備可以根據(jù)該第二凈荷中包括的該第一子片段在該第一報文中的位置信息,確定第一子片段在第一報文中的原始位置,進而還原出第一報文。第一子片段在第一報文中的位置信息可以是第一子片段的最高比特相對于第一報文的報文頭的最高比特的偏移量。該獲取該第二片段中的第一子片段之后,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可以包括根據(jù)該指紋算法計算該待壓縮數(shù)據(jù)中的第二子片段的第三初始塊的指紋,該第二子片段的起始位置為該第二比特,該第二子片段的結(jié)束位置與該待壓縮數(shù)據(jù)的結(jié)束位置相同;該第三初始塊的起始位置為該第二比特,該第三初始塊的長度等于該第一滑窗的長度;根據(jù)第二滑窗獲取第二子可變塊中的第一檢測塊,該第二滑窗的起始位置與該第ニ子可變塊中的第三比特對應,該第三比特為介于第二子可變塊的起始位置與該第二子可變塊的結(jié)束位置之間的比特,該第二滑窗的長度等于該第一滑窗的長度,該第ニ子可變塊的起始位置為該第一比特,該第二子可變塊的結(jié)束位置與該第一可變塊的結(jié)束位置相同;第二滑窗可定義為內(nèi)容滑窗,專用于判斷重復數(shù)據(jù)庫中是否存在對應的數(shù)據(jù)塊。其計算指紋的方法可與現(xiàn)有的滑窗相同,只是現(xiàn)有技術中滑窗僅用于定界。根據(jù)該指紋算法計算該第一檢測塊的指紋;比較該第三初始塊的指紋與該第一檢測塊的指紋;如果該第三初始塊的指紋與該第一檢測塊的指紋相同,則比較該第二子可變塊中的第三子可變塊的摘要與該第二子片段中的第三子片段的摘要,該第三子可變塊的起始位置與該第一檢測塊的起始位置相同,該第三子可變塊的結(jié)束位置與該第一可變塊的結(jié)束位置相同,該第三子片段的起始位置與該第二子片段的起始位置相同,該第三子片段的長度與該第三子可變塊的長度相等,該第三子可變塊的摘要為根據(jù)該摘要算法對該第三子可變塊的摘要進行計算得到的;如果該第三子片段的摘要與該第三子可變塊的摘要相等,則將該第三子片段、該第三子片段的指紋以及該第三子片段的摘要添加到該第二本地重復數(shù)據(jù)庫,生成第三本地重復數(shù)據(jù)庫,該第三子片段的指紋等于該第三初始塊的指紋,該第三子片段的摘要為根據(jù)該摘要算法對該第三子片段的摘要進行計算得到的。在該第三子片段的摘要與該第三子可變塊的摘要相等,并將該第三子片段、該第三子片段的指紋以及該第三子片段的摘要添加到該 第二本地重復數(shù)據(jù)庫的場景下,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可以包括接收第三報文,該第三報文包括第三報文頭與第三凈荷,該第三凈荷包含第二凈荷片段以及第三凈荷片段,該第二凈荷片段的長度與該第一子片段的長度相同,該第三凈荷片段的長度與該第三子片段的長度相同;根據(jù)該指紋算法計算該第二凈荷片段中第四初始塊的指紋,根據(jù)該指紋算法計算該第三凈荷片段中第五初始塊的指紋,該第四初始塊的起始位置與該第二凈荷片段的起始位置相同,該第四初始塊的長度與該第一滑窗的長度相同,該第五初始塊的起始位置與該第三凈荷片段的起始位置相同,該第五初始塊的長度與該第一滑窗的長度相同;根據(jù)該摘要算法計算該第二凈荷片段的摘要,根據(jù)該摘要算法計算該第三凈荷片段的摘要;如果該第四初始塊的指紋與該第三本地重復數(shù)據(jù)庫中的該第一子片段的指紋相等,并且該第二凈荷片段的摘要與該第一子片段的摘要相等,則刪除該第三報文中的該第ニ凈荷片段,如果該第五初始塊的指紋與該第三本地重復數(shù)據(jù)庫中的該第三子片段的指紋相等,并且該第三凈荷片段的摘要與該第三子片段的摘要相等,則刪除該第三報文中的該第三凈荷片段,生成第四報文,該第四報文中包括第四報文頭與第四凈荷,該第四報文頭與該第三報文頭相同,該第四凈荷包括該第一子片段的指紋以及該第三子片段的指紋??蛇x地,該第四凈荷還包括該第一子片段在該第三報文中的位置信息、該第三子片段在該第三報文中的位置信息。其中,第三子片段與第一子片段類似,為小于第二片段粒度的數(shù)據(jù)塊,這樣可以進ー步提高數(shù)據(jù)壓縮效率。第一子片段在第三報文中的位置信息可以是第一子片段的最高比特相對于第三報文的報文頭的最高比特的偏移量。如圖2所示,待壓縮數(shù)據(jù)塊A’與重復數(shù)據(jù)庫中對應的數(shù)據(jù)塊A的摘要不同,可以理解為上次發(fā)送的數(shù)據(jù)塊A經(jīng)過修改后變?yōu)閿?shù)據(jù)塊A’,并進行再次發(fā)送。其中,待壓縮數(shù)據(jù)塊A’即上述第二片段,重復數(shù)據(jù)庫中對應的數(shù)據(jù)塊A即上述第一可變塊。這樣,上次發(fā)送數(shù)據(jù)時在重復數(shù)據(jù)庫中保存的數(shù)據(jù)塊A與當前發(fā)送的數(shù)據(jù)中的數(shù)據(jù)塊A’相對應,具體地,當滑窗滑動到數(shù)據(jù)塊A’時,計算指紋,若重復數(shù)據(jù)庫中有相同的指紋,則表示重復數(shù)據(jù)庫中存在有對應的數(shù)據(jù)塊,這里對應的數(shù)據(jù)塊為A。由于此時不知道數(shù)據(jù)塊A’的長度,假定數(shù)據(jù)塊A’的長度與數(shù)據(jù)塊A相同,計算數(shù)據(jù)塊A’的摘要,并與數(shù)據(jù)塊A的摘要比較。顯然,數(shù)據(jù)塊A’的摘要與數(shù)據(jù)塊A的摘要不同,因為數(shù)據(jù)塊A與數(shù)據(jù)塊A’的內(nèi)容不同。之后再找到數(shù)據(jù)塊A’中與數(shù)據(jù)塊A相同的部分,以及不同的部分,進行進一歩地壓縮處理。
具體地,逐字節(jié)比較數(shù)據(jù)塊A’與數(shù)據(jù)塊A,當重復數(shù)據(jù)庫中對應的數(shù)據(jù)塊A到第二拆分點,待壓縮數(shù)據(jù)塊A’到第一拆分點吋,二者比較結(jié)果是不一致,此時,將滑窗滑動到第ー拆分點處計算指紋,重復數(shù)據(jù)庫中,將滑窗滑動到第二拆分點處計算指紋,與第一拆分點處的指紋進行比較,不一致時,繼續(xù)向后滑動滑窗,計算第二拆分點后的指紋,并繼續(xù)與第ー拆分點處的指紋進行比較,不一致吋,繼續(xù)向后滑動滑窗,直至計算出的指紋與第一拆分點處的指紋一致,或直至滑窗滑至數(shù)據(jù)塊A的結(jié)束邊界。本實施例中,數(shù)據(jù)塊A的第三拆分點處的指紋與待壓縮數(shù)據(jù)塊A’的第一拆分點處的指紋一致。當數(shù)據(jù)塊A的第三拆分點處的指紋與待壓縮數(shù)據(jù)塊A’的第一拆分點處的指紋 一致時,利用HASH表項中的塊長度及第三拆分點到邊界的長度計算出待壓縮數(shù)據(jù)塊A’中第一拆分點到邊界的長度,然后計算第一拆分點至邊界的摘要,并計算重復數(shù)據(jù)庫中數(shù)據(jù)塊A的第三拆分點至邊界的摘要,將計算出的兩個摘要進行比較,當不一致時,按照前述操作比較第三拆分點后字節(jié)與第一拆分點后的字節(jié),直至計算出的指紋與第一拆分點處的指紋一致,或直至滑窗滑至數(shù)據(jù)塊A的結(jié)束邊界;當一致時,待壓縮數(shù)據(jù)塊A’用第一拆分點拆分為兩個子數(shù)據(jù)塊Al、A2,重復數(shù)據(jù)庫中的數(shù)據(jù)塊A被第二拆分點、第三拆分點拆分為三個子數(shù)據(jù)塊A1、A2、A3,可以看出,本次發(fā)送的數(shù)據(jù)塊A’與上次發(fā)送的數(shù)據(jù)塊A相比刪除了子數(shù)據(jù)塊A2,其余兩個子數(shù)據(jù)塊Al、A3不變,這樣,可以用指紋替換Al或者A3,實現(xiàn)對數(shù)據(jù)的精確壓縮,提高數(shù)據(jù)壓縮效率。其中,待壓縮數(shù)據(jù)塊A’中的子數(shù)據(jù)塊Al即上述第一子片段,待壓縮數(shù)據(jù)塊A’中的子數(shù)據(jù)塊A3即上述第三子片段。重復數(shù)據(jù)庫中的子數(shù)據(jù)塊Al即上述第一子可變塊,重復數(shù)據(jù)庫中的子數(shù)據(jù)塊A3的初始塊,也就是從重復數(shù)據(jù)庫中的子數(shù)據(jù)塊A3的第一個比特開始長度為第一滑窗長度的數(shù)據(jù)塊,即上述第二子可變塊中的第一檢測塊。替換Al或者A3也可以用其他方法實現(xiàn)。舉例來說,可以用指紋、塊長度及偏移值替換Al或者A3。可選地,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可以包括根據(jù)該指紋算法計算該第一可變塊中的第四子可變塊的第六初始塊的指紋,該第四子可變塊的起始位置為該第一比特,該第四子可變塊的結(jié)束位置與該第一可變塊的結(jié)束位置相同,該第六初始塊的起始位置為該第一比特,該第六初始塊的長度等于該第一滑窗的長度;獲取第四子片段中的第二檢測塊,該第二檢測塊的起始位置與該第四子片段中的第四比特對應,該第四比特為介于第三片段的起始位置與該第三片段的結(jié)束位置之間的比特,該第二檢測塊的長度等于該第一滑窗的長度,該第三片段的起始位置為該第二比特,該第三片段的結(jié)束位置通過定界算法確定,該第三片段為該待壓縮數(shù)據(jù)中的片段,該第四子片段為該第三片段中的子片段,該第四子片段的起始位置與該第二檢測塊的起始位置相同,該第四子片段的長度與該第四子可變塊的長度相同;根據(jù)該指紋算法計算該第二檢測塊的指紋;比較該第六初始塊的指紋與該第二檢測塊的指紋;如果該第六初始塊的指紋與該第二檢測塊的指紋相同,則比較該第四子可變塊的摘要與該第四子片段的摘要,該第四子可變塊的摘要為根據(jù)該摘要算法對該第四子可變塊的摘要進行計算得到的,該第四子片段的摘要為根據(jù)該摘要算法對該第四子片段的摘要進行計算得到的;
如果該第四子片段的摘要與該第四子可變塊的摘要相同,則將該第四子片段、該第四子片段的指紋以及該第四子片段的摘要添加到該第二本地重復數(shù)據(jù)庫,生成第四本地重復數(shù)據(jù)庫,該第四子片段的指紋與該第六初始塊的指紋相同??蛇x地,在該第四子片段的摘要與該第四子 可變塊的摘要相同,將該第四子片段、該第四子片段的指紋以及該第四子片段的摘要添加到該第二本地重復數(shù)據(jù)庫的場景下,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可以包括接收第五報文,該第五報文包括第五報文頭與第五凈荷,該第五凈荷包含第四凈荷片度以及第五凈荷片段,該第四凈荷片度的長度與該第一子片段相同,該第五凈荷片段的長度與該第四子片段的長度相同;根據(jù)該指紋算法計算該第四凈荷片段中第七初始塊的指紋,根據(jù)該指紋算法計算該第五凈荷片段中第八初始塊的指紋,該第七初始塊的起始位置與該第四凈荷片段的起始位置相同,該第七初始塊的長度與該第一滑窗的長度相同,該第八初始塊的起始位置與該第五凈荷片段的起始位置相同,該第八初始塊的長度與該第一滑窗的長度相同;根據(jù)該摘要算法計算該第四凈荷片段的摘要,根據(jù)該摘要算法計算該第五凈荷片段的摘要;如果該第七初始塊的指紋與該第四本地重復數(shù)據(jù)庫中的該第一子片段的指紋相等,并且該第四凈荷片段的摘要與該第一子片段的摘要相等,則刪除該第五報文中的該第四凈荷片段,如果該第八初始塊的指紋與該第四本地重復數(shù)據(jù)庫中的該第四子片段的指紋相等,并且該第五凈荷片段的摘要與該第四子片段的摘要相等,則刪除該第五報文中的該第五凈荷片段,生成第六報文,該第六報文中包括第六報文頭與第六凈荷,該第六報文頭與該第五報文頭相同,該第六凈荷包括該第一子片段的指紋以及該第四子片段的指紋。可選地,該第六凈荷還包括該第一子片段在該第五報文中的位置信息、該第四子片段在該第五報文中的位置信息。其中,第四子片段與第一子片段類似,為小于第二片段粒度的數(shù)據(jù)塊,可以進一歩提高數(shù)據(jù)壓縮效率。第一子片段在第五報文中的位置信息可以是第一子片段的最高比特相對于第五報文的報文頭的最高比特的偏移量??蛇x地,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可以包括該第三片段的結(jié)束位置通過定界算法確定,包括從該第二比特開始向后滑動該定界算法中的第三滑窗,并判斷該第三滑窗對應的數(shù)據(jù)是否符合該定界算法中的定界條件,當首次出現(xiàn)該第三滑窗對應的數(shù)據(jù)符合該定界條件時,在第一距離內(nèi)繼續(xù)向后滑動該第三滑窗,并判斷該第三滑窗對應的數(shù)據(jù)是否符合該定界條件,如果出現(xiàn)該第三滑窗對應的第一數(shù)據(jù)符合該定界條件的情況時,則確定該第一數(shù)據(jù)的結(jié)束位置為該第三片段的結(jié)束位置,該第三滑窗的長度與該第一滑窗的長度相同,該第一距離的長度與該第一滑窗的長度相同。如圖3所示,待壓縮數(shù)據(jù)塊所屬的上級數(shù)據(jù)塊A’與重復數(shù)據(jù)塊中對應的數(shù)據(jù)塊A的摘要內(nèi)容不同,可以理解為上次發(fā)送的數(shù)據(jù)塊A經(jīng)過修改后變?yōu)閿?shù)據(jù)塊A’,并進行再次發(fā)送,這樣,上次發(fā)送數(shù)據(jù)時在重復數(shù)據(jù)庫中保存的數(shù)據(jù)塊A與當前發(fā)送的數(shù)據(jù)中的數(shù)據(jù)塊A’相對應,具體地,當滑窗滑動到數(shù)據(jù)塊A’時,計算指紋,若重復數(shù)據(jù)庫中有相同的指紋,則表示重復數(shù)據(jù)庫中存在有對應的數(shù)據(jù)塊,這里對應的數(shù)據(jù)塊為A。
其中,待壓縮數(shù)據(jù)塊所屬的上級數(shù)據(jù)塊A’可通過滑窗定界來確定。計算數(shù)據(jù)塊A’的摘要,并與數(shù)據(jù)塊A的摘要比較。顯然,數(shù)據(jù)塊A’的摘要與數(shù)據(jù)塊A的摘要不同,因為數(shù)據(jù)塊A與數(shù)據(jù)塊A’的內(nèi)容不同。之后再找到數(shù)據(jù)塊A’中與數(shù)據(jù)塊A相同的部分,以及不同的部分,進行進一歩地壓縮處理。具體地,逐字節(jié)比較數(shù)據(jù)塊A’與數(shù)據(jù)塊A,當重復數(shù)據(jù)庫中對應的數(shù)據(jù)塊A到第二拆分點,待壓縮數(shù)據(jù)塊A’到第一拆分點吋,二者比較結(jié)果是 不一致。此時,將滑窗滑動到第ニ拆分點處計算指紋,上級數(shù)據(jù)塊A’中,將滑窗滑動到第一拆分點處計算指紋,與第二拆分點處的指紋進行比較,不一致時,繼續(xù)向后滑動滑窗,計算第一拆分點后的指紋,并繼續(xù)與第二拆分點處的指紋進行比較,不一致時,繼續(xù)向后滑動滑窗,直至計算出的指紋與第二拆分點處的指紋一致,或直至滑窗滑至數(shù)據(jù)塊A’的結(jié)束邊界。本實施例中,數(shù)據(jù)塊A’的第四拆分點處的指紋與重復數(shù)據(jù)庫中數(shù)據(jù)塊A的第二拆分點處的指紋一致。當數(shù)據(jù)塊A’的第四拆分點處的指紋與數(shù)據(jù)塊A的第二拆分點處的指紋一致時,計算第四拆分點至邊界的摘要,并計算重復數(shù)據(jù)庫中數(shù)據(jù)塊A的第二拆分點至邊界的摘要,將計算出的兩個摘要進行比較,當不一致時,按照前述操作比較第四拆分點后的字節(jié)與第ー拆分點后的字節(jié),直至計算出的指紋與第二拆分點處的指紋一致,或直至滑窗滑至數(shù)據(jù)塊A’的結(jié)束邊界;當一致時,上級數(shù)據(jù)塊A’被第一拆分點、第四拆分點拆分為三個子數(shù)據(jù)塊Al、A3、A2,重復數(shù)據(jù)庫中的數(shù)據(jù)塊A被第二拆分點拆分為兩個子數(shù)據(jù)塊Al、A2,可以看出,本次發(fā)送的數(shù)據(jù)塊A’與上次發(fā)送的數(shù)據(jù)塊A相比増加了子數(shù)據(jù)塊A3,其余兩個子數(shù)據(jù)塊A1、A2不變,這樣,可以用指紋替換Al或者A2,實現(xiàn)對數(shù)據(jù)的精確壓縮,提高數(shù)據(jù)壓縮效率。其中,待壓縮數(shù)據(jù)塊A’中的子數(shù)據(jù)塊A2即上述第四子片段。待壓縮數(shù)據(jù)塊A’中的子數(shù)據(jù)塊A2的初始塊,也就是從待壓縮數(shù)據(jù)塊A’中的子數(shù)據(jù)塊A2的第一比特開始長度為第一滑窗長度的數(shù)據(jù)塊,即上述第四子片段中的第一檢測塊。替換Al或者A2可以通過其他方法實現(xiàn)。舉例來說,可以用指紋、塊長度及偏移值替換Al或者A2。當圖I所示實施例的方法由解壓縮側(cè)設備實現(xiàn)時,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可包括將該第一子片段的指紋以及該第一子片段的摘要同步到壓縮側(cè)的重復數(shù)據(jù)庫。壓縮側(cè)的重復數(shù)據(jù)庫被同步后,壓縮側(cè)設備可使用已有的CDC算法對報文進行刪重處理即對報文中的數(shù)據(jù)進行壓縮處理,這樣,當報文中包含第一子片段時,就會被刪除,從而進ー步提高了數(shù)據(jù)壓縮效率。當圖I所示實施例的方法由壓縮側(cè)設備實現(xiàn)時,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可包括將該第一子片段、該第一子片段的指紋以及該第一子片段的摘要同步到解壓縮側(cè)的重復數(shù)據(jù)庫。這樣,當后續(xù)報文中的第一子片段被刪除后,解壓縮側(cè)設備就能夠利用重復數(shù)據(jù)庫中保存的第一子片段對壓縮數(shù)據(jù)進行恢復,實現(xiàn)解壓縮??蛇x地,當壓縮側(cè)和解壓縮側(cè)的重復數(shù)據(jù)庫均包含有重復數(shù)據(jù)的內(nèi)容,且數(shù)據(jù)處理方法由壓縮側(cè)設備實現(xiàn)時,本發(fā)明實施例提供的數(shù)據(jù)處理方法還可以包括刪除該待壓縮數(shù)據(jù)中的該第一子片段,將該第一子片段的指紋、該第一子片段的長度及該第一子片段在該待壓縮數(shù)據(jù)中的位置信息添加到第七報文的凈荷中,該待壓縮數(shù)據(jù)為該第七報文的凈荷。第一子片段在待壓縮數(shù)據(jù)中的位置信息可以是第一子片段的最高比特相對于待壓縮數(shù)據(jù)的最高比特的偏移量。即,壓縮側(cè)設備在接收到該待壓縮數(shù)據(jù)所在報文后,不僅能夠匹配出第一子片段,在本地重復數(shù)據(jù)庫中創(chuàng)建第一子片段,還能夠?qū)υ摯龎嚎s數(shù)據(jù)進行壓縮處理,刪除第一子片段。其中,在去冗余報文中増加第一子片段的長度,是由于解壓縮側(cè)的重復數(shù)據(jù)庫中已有第二片段,當去冗余報文發(fā)送到 解壓縮側(cè)設備時,解壓縮側(cè)設備根據(jù)其中的第一子片段的指紋找到對應的第二片段,利用第一子片段的長度及第一子片段在該待壓縮數(shù)據(jù)中的位置即第一子片段在壓縮前報文中的原始位置,在第二片段中找到第一子片段,并對去冗余報文進行恢復,實現(xiàn)解壓縮。上述第三片段的結(jié)束位置通過定界算法確定,可包括從該第二比特開始向后滑動該定界算法中的第三滑窗,并判斷該第三滑窗對應的數(shù)據(jù)是否符合該定界算法中的定界條件,當首次出現(xiàn)該第三滑窗對應的數(shù)據(jù)符合該定界條件時,在第一距離內(nèi)繼續(xù)向后滑動該第三滑窗,并判斷該第三滑窗對應的數(shù)據(jù)是否符合該定界條件,如果出現(xiàn)該第三滑窗對應的第一數(shù)據(jù)符合該定界條件的情況時,則確定該第一數(shù)據(jù)的結(jié)束位置為該第三片段的結(jié)束位置,該第三滑窗的長度與該第一滑窗的長度相同,該第一距離的長度與該第一滑窗的長度相同。關于定界算法,可以參考CDC算法中的定界算法,此處不再贅述。具體地,從上述第二比特開始向后滑動第三滑窗,判斷第三滑窗對應的數(shù)據(jù)的指紋是否滿足定界算法中的定界條件。當首次出現(xiàn)第三滑窗對應的數(shù)據(jù)符合定界條件時,繼續(xù)向后滑動第三滑窗。首次出現(xiàn)是指第一次出現(xiàn)第三滑窗對應的數(shù)據(jù)符合定界條件。第三滑窗的長度等于第一滑窗的長度。舉例來說,第三滑窗的長度可以是64字節(jié)。定界算法中,第三滑窗向后滑動時,毎次滑動的距離可以是I字節(jié)。在第一距離內(nèi)繼續(xù)向后滑動第三滑窗,并判斷第三滑窗對應的數(shù)據(jù)是否符合定界條件。如果在第一距離內(nèi)多次出現(xiàn)第三滑窗對應的第一數(shù)據(jù)符合定界條件,則可以確定最后一次出現(xiàn)的第一數(shù)據(jù)為真正的邊界。也就是說,可以確定最后一次出現(xiàn)的第一數(shù)據(jù)的結(jié)束位置為第三片段的結(jié)束位置。圖4為本發(fā)明實施例提供的ー種數(shù)據(jù)壓縮方法的ー個具體實現(xiàn)方式的示意圖。如圖4所示,根據(jù)CDC算法的定界原理分成三塊的報文數(shù)據(jù),其中,中間大塊表示根據(jù)優(yōu)化算法分成了三個子塊。假設該報文數(shù)據(jù)發(fā)送了三次,第一次發(fā)送時,子塊3356B、4505B、4520B及2988B作
為ー個數(shù)據(jù)塊發(fā)送,并被保存在重復數(shù)據(jù)庫中。第二次發(fā)送時,將該數(shù)據(jù)塊拆分第一子塊3356B及第ニ子塊,第二子塊由子塊4505B.4520B與2988B組成。并且重復數(shù)據(jù)庫中分別保存了第一子塊3356B及第ニ子塊。第三次發(fā)送時,第一子塊3356B成為數(shù)據(jù)塊3356B,第二子塊中刪除了子塊4520B,子塊4505B及2988B作為ー個數(shù)據(jù)塊假設為數(shù)據(jù)塊C。則在本次發(fā)送進行壓縮處理時,需要將數(shù)據(jù)塊C拆分為子塊4505B及子塊2988B。具體地,當?shù)谌伟l(fā)送數(shù)據(jù)時,以壓縮數(shù)據(jù)塊6788B、數(shù)據(jù)塊3356B、數(shù)據(jù)塊C及數(shù)據(jù)塊4800B為例進行說明。
對圖4中的數(shù)據(jù)塊6788B、數(shù)據(jù)塊3356B、數(shù)據(jù)塊C及數(shù)據(jù)塊4800B執(zhí)行壓縮操作,可以采用圖5所示的數(shù)據(jù)處理方法。圖5為本發(fā)明實施例提供的另ー種數(shù)據(jù)處理方法的流程圖。該數(shù)據(jù)處理方法包括51、滑動滑窗,計算指紋;這里的滑窗即內(nèi)容滑窗,實現(xiàn)上內(nèi)容滑動窗ロ可以與定界滑窗(即現(xiàn)有技術中的滑窗)合一,即對同樣長度的數(shù) 據(jù)進行HASH計算得到指紋,只是內(nèi)容滑窗將指紋應用于判別數(shù)據(jù)塊的內(nèi)容是否發(fā)生變化,而定界滑窗將指紋應用于數(shù)據(jù)塊定界。52、判斷是否存在HASH表項。具體地,用內(nèi)容滑窗計算得到的指紋作為查找關鍵字(KEY)查找重復數(shù)據(jù)庫,判斷重復數(shù)據(jù)庫是否存在HASH表項,該HASH表項包含有上述51計算得到的指紋。若不存在HASH表項,說明指紋對應的數(shù)據(jù)塊為本次新增加的內(nèi)容,執(zhí)行531,將新增加內(nèi)容添加到重復數(shù)據(jù)庫中。若存在HASH表項,說明指紋對應的數(shù)據(jù)塊曾經(jīng)被保存到重復數(shù)據(jù)庫中,則執(zhí)行541,取HASH表項中的塊信息,根據(jù)HASH表項中所保存的塊信息(關鍵信息是塊長度、SHA-1/MD5算法得到的數(shù)據(jù)即摘要(checksum))來與當前數(shù)據(jù)進行比較。當然,塊信息還可以包含該數(shù)據(jù)塊的原始數(shù)據(jù)內(nèi)容。531、判斷計算出的指紋是否滿足定界條件。采用CDC算法中類似的滑動窗ロ(稱為定界滑窗)進行塊定界,定界方法相同,即計算出指紋,井根據(jù)指紋判斷是否滿足定界條件,如果滿足則確定找到數(shù)據(jù)的邊界。此處對CDC算法的定界過程有一點優(yōu)化,因為有可能本數(shù)據(jù)塊的內(nèi)容發(fā)生了變化,該內(nèi)容導致定界條件提前成立,而變化內(nèi)容被計算到下一數(shù)據(jù)塊中,結(jié)果可能導致下一塊不能被判定為重復數(shù)據(jù)(實際上這部分確實為重復數(shù)據(jù)),因引考慮第一次滿足條件的界為偽界,此時再向后滑動一部分距離(可稱為數(shù)據(jù)擾動),如果再次發(fā)現(xiàn)定界條件滿足,則認為后一次為真正的界(可以稱為確界,前一次稱為偽界),否則前一次就是真正的界(確界)。532、最大界檢查。通常數(shù)據(jù)塊的長度有范圍限制,可預先設定ー個上限,如最長不能超過64Kbyte (字節(jié))。這里判斷經(jīng)過上述531確定的數(shù)據(jù)塊的長度是否超過上限,若超過該上限,則以該上限作為數(shù)據(jù)塊的長度,強制距離上述51滑窗字節(jié)為該上限的字節(jié)處定ー個界,重新劃定數(shù)據(jù)塊,然后執(zhí)行534 ;若531確定的數(shù)據(jù)塊的長度未超過該上限,則執(zhí)行 532。533、最小界檢查。參見上述532,通常不僅預設ー個上限來限定數(shù)據(jù)塊可具有的最長的長度,還會預先設定ー個下限來限定數(shù)據(jù)塊可具有的最短的長度,如最短不能短于64字節(jié)。小于下限的情況作為零碎數(shù)據(jù)不壓縮,這是為了防止數(shù)據(jù)庫的數(shù)據(jù)塊太零碎,占用系統(tǒng)資源,使得壓縮過程沒有意義,假如ー個字節(jié)就是ー個塊,這是沒有意義的,反而更加浪費系統(tǒng)資源。若531確定的數(shù)據(jù)塊的長度大于該下限,則執(zhí)行534 ;若531確定的數(shù)據(jù)塊的長度小于該下限,執(zhí)行57 ;534、確定可變塊,計算摘要,然后執(zhí)行56 ;541、計算當前摘要是否一致。
具體的,計算當前數(shù)據(jù)塊的摘要,并與重復數(shù)據(jù)庫中的摘要進行比較。判斷是否ー致;若是,執(zhí)行58 ;否則,執(zhí)行542。具體地,利用重復數(shù)據(jù)庫中HASH表項記錄的塊長度直接確定上述步驟51滑窗對應的字節(jié)所屬的數(shù)據(jù)塊,然后計算該數(shù)據(jù)塊 的摘要。具體地,按照HASH表項中保存的塊長度值定位當前數(shù)據(jù)的當前塊即指紋對應的字節(jié)所屬的數(shù)據(jù)塊,通過SHA-1/MD5等算法計算當前塊的checksum。計算得到的checksum與表項中保存的checksum進行比較,如果相同,則認為當前塊為重復數(shù)據(jù),將定界滑窗和內(nèi)容滑窗都直接滑過本次找到的數(shù)據(jù)塊,進行下ー塊的定界、內(nèi)容比對。對于圖4中的數(shù)據(jù)塊3356B,按照上述方法,這次找到的實際上是ー個重復塊,此后先將內(nèi)容滑窗滑到下一數(shù)據(jù)塊C,檢查其對應的指紋是否在重復數(shù)據(jù)庫中存在,即利用內(nèi)容滑窗指紋作為查找KEY在重復數(shù)據(jù)庫中查找HASH表項。查找到HASH表項后,利用表項中的塊長度計算數(shù)據(jù)塊C的checksum,并與表項中的checksum進行比較,當檢查到當前計算的checksum與表項中保存的checksum不一致,說明數(shù)據(jù)塊C與重復數(shù)據(jù)庫中對應的數(shù)據(jù)塊的內(nèi)容不同,執(zhí)行542拆分數(shù)據(jù)塊C及重復數(shù)據(jù)庫中對應的數(shù)據(jù)塊。542、逐字節(jié)匹配拆分,對于每一個拆分出的子數(shù)據(jù)塊,執(zhí)行55 ;完成拆分后,對于拆分出的所有滿足數(shù)據(jù)塊的長度限制的子數(shù)據(jù)塊執(zhí)行543。在拆分過程中形成塊的都要檢查,不管是匹配部分還是不匹配部分,小于最小界的都作為零碎數(shù)據(jù)。在拆分過程中產(chǎn)生了新塊都涉及到更新/刪除表項,這是拆分過程中完成的。具體地,從當前塊的初始部分往后逐字節(jié)進行匹配,直到找到與重復數(shù)據(jù)庫中不相同的字節(jié),將當前塊從不相同的字節(jié)處進行拆分,另外利用滑窗,檢查從拆分點向后,是否有指紋與當前塊的后續(xù)指紋相同,如果存在,檢查兩者完全匹配的部分,將其作為ー個新塊保存到重復數(shù)據(jù)庫中,此過程主要是識別原來的數(shù)據(jù)中被刪除掉一小部分的情況。543、更新或刪除HASH表項;544、計算拆分摘要及塊長度,然后執(zhí)行56 ;55、對子數(shù)據(jù)塊進行最小界檢查,若子數(shù)據(jù)塊的長度大于上述下限,則對該子數(shù)據(jù)塊執(zhí)行543 ;若子數(shù)據(jù)塊的長度小于上述下限,則對該子數(shù)據(jù)塊執(zhí)行57。55可在執(zhí)行542的過程中執(zhí)行,即542每拆分出一部分數(shù)據(jù),就執(zhí)行55,進行最小界檢查,拆分完成后,也就對所有拆分出的子數(shù)據(jù)塊完成了最小界檢查,然后對所有拆分出的長度大于下限的數(shù)據(jù)塊執(zhí)行543?;蛘?,55也可在542與543之間執(zhí)行,即542先完成數(shù)據(jù)塊的拆分,然后執(zhí)行55,對于拆分出的所有子數(shù)據(jù)塊執(zhí)行55,再對55的判斷結(jié)果執(zhí)行57或543。56、添加該可變塊對應的HASH表項。具體地,在重復數(shù)據(jù)庫中,增加該數(shù)據(jù)塊的內(nèi)容,并添加HASH表項,即更新重復數(shù)據(jù)庫,結(jié)束當前數(shù)據(jù)塊的壓縮處理。57、非重復內(nèi)容處理。具體地,單獨處理非塊內(nèi)容即上述長度小于下限的零碎數(shù)據(jù),這部分數(shù)據(jù)保留在報文中,不壓縮,完成當前滑窗內(nèi)字節(jié)的處理,繼續(xù)向后滑動滑窗。58、內(nèi)容全部重復,重復內(nèi)容替換成指紋,完成當前數(shù)據(jù)塊的刪除處理。當前塊拆分完成后,繼續(xù)滑動內(nèi)容滑窗,檢查后續(xù)數(shù)據(jù)塊的內(nèi)容,對當前塊的后續(xù)數(shù)據(jù)進行處理。上述流程中,定界滑窗和內(nèi)容滑窗可為同一個滑窗,只是根據(jù)計算的結(jié)果(指紋)進行數(shù)據(jù)塊定界、重復數(shù)據(jù)庫中塊內(nèi)容的查找比較,據(jù)此,壓縮方法流程分為定界滑窗流程和內(nèi)容滑窗流程,最后的處理結(jié)果存在三種情況一種是對原來的數(shù)據(jù)塊進行了拆分,更新了重復數(shù)據(jù)庫;另一種是未能匹配到塊內(nèi)容并且不符合加入重復數(shù)據(jù)庫條件(如長度太短),這部分數(shù)據(jù)作為非重復內(nèi)容直接放到報文中;還有一種結(jié)果是找到重復數(shù)據(jù),此時將表示該重復數(shù)據(jù)的指紋及相關信息以一定格式放到報文中,發(fā)送給對方設備??蛇x地,壓縮后的報文的封裝格式如圖6所示,方式I中非重復數(shù)據(jù)的位置不變,只是非重復數(shù)據(jù)的前后的數(shù)據(jù)塊作為重復數(shù)據(jù)而被替換了,方式2中替換格式在壓縮后的報文中的位置被指定。其中,替換格式包括指紋、塊長度及被替換的數(shù)據(jù)塊在本報文中的偏移。具體應用到數(shù)據(jù)塊6788B時,首先滑窗滑 動到數(shù)據(jù)塊6788B的初始部分時,執(zhí)行上述51操作,計算出初始部分的指紋,然后執(zhí)行52,判斷重復數(shù)據(jù)庫是否存在包含該指紋的HASH表項,本實例中數(shù)據(jù)塊6788B為重復數(shù)據(jù)塊,因此,執(zhí)行541,計算出數(shù)據(jù)塊6788B的摘要,并與重復數(shù)據(jù)庫中HASH表項保存的摘要相比較,判斷是否一致,本實例中判斷結(jié)果ー致,即內(nèi)容部分重復,執(zhí)行58,刪除數(shù)據(jù)中數(shù)據(jù)塊6788B的內(nèi)容,替換為指紋,完成對數(shù)據(jù)塊6788B的處理。之后滑窗滑動到數(shù)據(jù)塊3356B的初始部分,執(zhí)行51,計算出初始部分的指紋;執(zhí)行52,從重復數(shù)據(jù)庫中找到對應HASH表項,獲知數(shù)據(jù)塊3356B的塊長度等塊信息。執(zhí)行541,計算出數(shù)據(jù)塊3356B的摘要,與重復數(shù)據(jù)塊的HASH表項中的摘要一致,說明數(shù)據(jù)塊3356B的內(nèi)容與重復數(shù)據(jù)庫中對應HASH表項的數(shù)據(jù)塊內(nèi)容全部重復,執(zhí)行58,刪除數(shù)據(jù)中數(shù)據(jù)塊3356B的內(nèi)容,替換為指紋,完成對數(shù)據(jù)塊3356B的處理。之后滑窗滑動到數(shù)據(jù)塊C的初始部分,執(zhí)行51,計算出初始部分的指紋;執(zhí)行52,查找重復數(shù)據(jù)庫,判斷是否存在包含該指紋的HASH表項。本實例中,重復數(shù)據(jù)庫中存在數(shù)據(jù)塊C的HASH表項。然后執(zhí)行541,根據(jù)查找到的HASH表項中的塊長度界定數(shù)據(jù)塊C,計算出數(shù)據(jù)塊C的摘要,并判斷是否與HASH表項中的摘要一致。本實例中,數(shù)據(jù)塊C的摘要與HASH表項中的摘要不一致,然后執(zhí)行542。從數(shù)據(jù)塊C的初始部分開始向后逐字節(jié)與HASH表項對應的數(shù)據(jù)塊內(nèi)容進行比較,直到找到不相同的字節(jié),將數(shù)據(jù)塊C及重復數(shù)據(jù)庫中HASH表項對應的數(shù)據(jù)塊從此處即不相同的字節(jié)處進行拆分,本實例中,將數(shù)據(jù)塊C拆分為子塊4505B及子塊2988B,其中,子塊4505B與重復數(shù)據(jù)庫中的數(shù)據(jù)重復,但是由于本次發(fā)送的數(shù)據(jù)塊C中刪除了子塊4505B與子塊2988B之間的子塊4520B,導致數(shù)據(jù)塊C的內(nèi)容與重復數(shù)據(jù)庫中的內(nèi)容不匹配。然后執(zhí)行543,將拆分出的部分4505B、2988B均作為ー個新數(shù)據(jù)塊保存到重復數(shù)據(jù)庫中,并生成新的HASH表項替換之前查找到的HASH表項。相應地,重復數(shù)據(jù)庫中的4520B滿足數(shù)據(jù)塊長度要求時,作為新的數(shù)據(jù)塊保存,否則,刪除。再執(zhí)行544,計算子塊4505B、子塊2988B的塊長度及摘要,添加到新的HASH表項中,以用于下次發(fā)送數(shù)據(jù)刪除作為數(shù)據(jù)塊的4505B、2988B的數(shù)據(jù)內(nèi)容,并進行替換,提高數(shù)據(jù)的壓縮效率。對于待壓縮的數(shù)據(jù),繼續(xù)向后滑動滑窗至數(shù)據(jù)塊4800B的初始部分,執(zhí)行51,計算初始部分的指紋。執(zhí)行52,從重復數(shù)據(jù)庫中找到對應HASH表項,獲知數(shù)據(jù)塊4800B的塊長度等塊信息。執(zhí)行541,計算出數(shù)據(jù)塊4800B的摘要,與重復數(shù)據(jù)塊的HASH表項中的摘要一致,說明數(shù)據(jù)塊4800B的內(nèi)容與重復數(shù)據(jù)庫中對應HASH表項的數(shù)據(jù)塊內(nèi)容全部重復,執(zhí)行58,刪除數(shù)據(jù)中數(shù)據(jù)塊4800B的內(nèi)容,替換為指紋,完成對數(shù)據(jù)塊4800B的處理。按照上述方法完成對數(shù)據(jù)的壓縮后,壓縮側(cè)設備如WOC將報文發(fā)送到解壓縮側(cè)設備。
如圖7所示,壓縮側(cè)設備接收報文后,對接收到的報文進行解析,得到報文的凈荷。根據(jù)本發(fā)明實施例提供的數(shù)據(jù)處理方法對凈荷中的數(shù)據(jù)進行壓縮處理。將壓縮處理后的數(shù)據(jù)封裝為新報文。將新報文發(fā)送到解壓縮側(cè)設備。解壓縮側(cè)設備接收到新報文后,利用重復數(shù)據(jù)庫對新報文中的凈荷進行解壓縮處理。具體可以是將報文中的替換格式或指紋刪除,并將替換格式或指紋替換為與替換格式或指紋對應的數(shù)據(jù)塊,將將解壓縮的數(shù)據(jù)封裝為報文。其中,重復數(shù)據(jù)庫的生成(即前面的算法過程)可 以只在一端設備完成,然后將數(shù)據(jù)(重復數(shù)據(jù)塊指紋和/或數(shù)據(jù)內(nèi)容)同步到對端。當數(shù)據(jù)流量主要為下行,即服務器側(cè)流向用戶側(cè)(如用戶下載文件),算法可以在靠近用戶側(cè)的WOC設備實現(xiàn),并且保存重復數(shù)據(jù)塊內(nèi)容,而靠近服務器ー側(cè)的WOC設備只需要同步指紋信息即可,不需要緩存所有內(nèi)容,反之則在服務器側(cè)的WOC設備處理算法和保存內(nèi)容。當然兩側(cè)可以都計算和保存內(nèi)容,只是會增加資源需求。圖8為本發(fā)明實施例提供的數(shù)據(jù)壓縮設備的結(jié)構(gòu)示意圖。本實施例提供的數(shù)據(jù)壓縮設備用于實施上述圖I、圖5所示實施例的方法,如圖8所示,數(shù)據(jù)處理設備包括第一指紋計算単元81、查找單元82、重復內(nèi)容獲取單元83、摘要計算單元84、摘要比較單元85、第一子片段獲取単元86及第一添加単元87。第一指紋計算単元81用于根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,該第一片段的起始位置與該待壓縮數(shù)據(jù)的起始位置相同,該第一片段的長度與第一滑窗的長度相同;查找單元82用于在第一本地重復數(shù)據(jù)庫中查找該第一指紋,該第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、該重復數(shù)據(jù)的指紋以及該重復數(shù)據(jù)的摘要;重復內(nèi)容獲取單元83用于如果該第一本地重復數(shù)據(jù)庫中存在該第一指紋,則根據(jù)該第一指紋獲取該第一本地重復數(shù)據(jù)庫中的第一可變塊以及該第一可變塊的摘要,該第一指紋與根據(jù)該指紋算法計算得到的該第一可變塊中的第一初始塊的指紋相同,該第一初始塊的起始位置與該第一可邊塊的起始位置相同,該第一初始塊的長度與該第一滑窗的長度相同,該第一可變塊的摘要為根據(jù)摘要算法對該第一可變塊的摘要進行計算得到的;摘要計算單元84用于根據(jù)該摘要算法計算該待壓縮數(shù)據(jù)中的第二片段的摘要,該第二片段的起始位置與該待壓縮數(shù)據(jù)的起始位置相同,該第二片段的長度與該第一可變塊的長度相同;摘要比較單元85用于比較該第二片段的摘要與該第一可變塊的摘要;第一子片段獲取単元86用于如果該第二片段的摘要與該第一可變塊的摘要不同,則獲取該第二片段中的第一子片段,該第一子片段與該第一可變塊中的第一子可變塊相同,該第一子片段的起始位置與該第二片段的起始位置相同,該第一子可變塊的起始位置與該第一可變塊的起始位置相同,該第二片段中的第二比特與該第一可變塊中的第一比特不同,該第二比特為該第二片段中該第一子片段的下一個比特,該第一比特為該第一可變塊中該第一子可變塊的下一個比特;第一添加単元87用于將該第一子片段、該第一子片段的指紋以及該第一子片段的摘要添加到該第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,該第一子片段的指紋與該第一指紋相同,該第一子片段的摘要為根據(jù)該摘要算法對該第一子片段的摘要進行計算得到的。本發(fā)明實施例提供的數(shù)據(jù)壓縮設備還可包括第一報文接收單元,用于接收第一 報文,該第一報文包括第一報文頭與第一凈荷,該第一凈荷包含第一凈荷片段,該第一凈荷片段的長度與該第一子片段的長度相同;第二初始指紋計算單元,用于根據(jù)該指紋算法計算該第一凈荷片段中第二初始塊的指紋,該第二初始塊的起始位置與該第一凈荷片段的起始位置相同,該第二初始塊的長度與該第一滑窗的長度相同;第一凈荷摘要計算單元,用于根據(jù)該摘要算法計算該第一凈荷片段的摘要;第二報文生成単元,用于如果該第二初始塊的指紋與該第二本地重復數(shù)據(jù)庫中的該第一子片段的指紋相等,并且該第一凈荷片段的摘要與該第一子片段的摘要相等,則刪除該第一報文中的該第一凈荷片段,生成第二報文,該第二報文中包括第二報文頭與第二凈荷,該第二報文頭與該第一報文頭相同,該第二凈荷包括該第一子片段的指紋。該第二凈荷還可包括該第一子片段在該第一報文中的位置信息。第一子片段在第ー報文中的位置信息可以是第一子片段的最高比特相對于第一報文的報文頭的最高比特的偏移量。本發(fā)明實施例提供的數(shù)據(jù)壓縮設備還可包括第三初始指紋計算單元,用于根據(jù)該指紋算法計算該待壓縮數(shù)據(jù)中的第二子片段的第三初始塊的指紋,該第二子片段的起始位置為該第二比特,該第二子片段的結(jié)束位置與該待壓縮數(shù)據(jù)的結(jié)束位置相同;該第三初始塊的起始位置為該第二比特,該第三初始塊的長度等于該第一滑窗的長度;檢測塊獲取單元,用于根據(jù)第二滑窗獲取第二子可變塊中的第一檢測塊,該第二滑窗的起始位置與該第二子可變塊中的第三比特對應,該第三比特為介于第二子可變塊的起始位置與該第二子可變塊的結(jié)束位置之間的比特,該第二滑窗的長度等于該第一滑窗的長度,該第ニ子可變塊的起始位置為該第一比特,該第二子可變塊的結(jié)束位置與該第一可變塊的結(jié)束位置相同;檢測塊指紋計算単元,根據(jù)該指紋算法計算該第一檢測塊的指紋;指紋比較単元,用于比較該第三初始塊的指紋與該第一檢測塊的指紋;第三摘要比較單元,用于如果該第三初始塊的指紋與該第一檢測塊的指紋相同,則比較該第二子可變塊中的第三子可變塊的摘要與該第二子片段中的第三子片段的摘要,該第三子可變塊的起始位置與該第一檢測塊的起始位置相同,該第三子可變塊的結(jié)束位置與該第一可變塊的結(jié)束位置相同,該第三子片段的起始位置與該第二子片段的起始位置相同,該第三子片段的長度與該第三子可變塊的長度相等,該第三子可變塊的摘要為根據(jù)該摘要算法對該第三子可變塊的摘要進行計算得到的;第三添加単元,用于如果該第三子片段的摘要與該第三子可變塊的摘要相等,則將該第三子片段、該第三子片段的指紋以及該第三子片段的摘要添加到該第二本地重復數(shù)據(jù)庫,生成第三本地重復數(shù)據(jù)庫,該第三子片段的指紋等于該第三初始塊的指紋,該第三子片段的摘要為根據(jù)該摘要算法對該第三子片段的摘要進行計算得到的。本發(fā)明實施例提供的數(shù)據(jù)壓縮設備還可包括第三報文接收單元,用于接收第三報文,該第三報文包括第三報文頭與第三凈荷,該第三凈荷包含第二凈荷片段以及第三凈荷片段,該第二凈荷片段的長度與該第一子片段的長度相同,該第三凈荷片段的長度與該第三子片段的長度相同;第四初始指紋計算單元,用于根據(jù)該指紋算法計算該第二凈荷片段中第四初始塊的指紋,根據(jù)該指紋算法計算該第三凈荷 片段中第五初始塊的指紋,該第四初始塊的起始位置與該第二凈荷片段的起始位置相同,該第四初始塊的長度與該第一滑窗的長度相同,該第五初始塊的起始位置與該第三凈荷片段的起始位置相同,該第五初始塊的長度與該第一滑窗的長度相同;第三凈荷摘要計算單元,用于根據(jù)該摘要算法計算該第二凈荷片段的摘要,根據(jù)該摘要算法計算該第三凈荷片段的摘要;第四報文生成単元,用于如果該第四初始塊的指紋與該第三本地重復數(shù)據(jù)庫中的該第一子片段的指紋相等,并且該第二凈荷片段的摘要與該第一子片段的摘要相等,則刪除該第三報文中的該第二凈荷片段,如果該第五初始塊的指紋與該第三本地重復數(shù)據(jù)庫中的該第三子片段的指紋相等,并且該第三凈荷片段的摘要與該第三子片段的摘要相等,則刪除該第三報文中的該第三凈荷片段,生成第四報文,該第四報文中包括第四報文頭與第四凈荷,該第四報文頭與該第三報文頭相同,該第四凈荷包括該第一子片段的指紋以及該第三子片段的指紋。該第四凈荷還包括該第一子片段在該第三報文中的位置信息、該第三子片段在該第三報文中的位置信息。第一子片段在第三報文中的位置信息可以是第一子片段的最高比特相對于第三報文的報文頭的最高比特的偏移量。本發(fā)明實施例提供的數(shù)據(jù)壓縮設備還可包括初始塊指紋計算単元,用于根據(jù)該指紋算法計算該第一可變塊中的第四子可變塊的第六初始塊的指紋,該第四子可變塊的起始位置為該第一比特,該第四子可變塊的結(jié)束位置與該第一可變塊的結(jié)束位置相同,該第六初始塊的起始位置為該第一比特,該第六初始塊的長度等于該第一滑窗的長度;檢測塊獲取單元,用于獲取第四子片段中的第二檢測塊,該第二檢測塊的起始位置與該第四子片段中的第四比特對應,該第四比特為介于第三片段的起始位置與該第三片段的結(jié)束位置之間的比特,該第二檢測塊的長度等于該第一滑窗的長度,該第三片段的起始位置為該第二比特,該第三片段的結(jié)束位置通過定界算法確定,該第三片段為該待壓縮數(shù)據(jù)中的片段,該第四子片段為該第三片段中的子片段,該第四子片段的起始位置與該第ニ檢測塊的起始位置相同,該第四子片段的長度與該第四子可變塊的長度相同;檢測塊指紋計算単元,用于根據(jù)該指紋算法計算該第二檢測塊的指紋;指紋比較單元,用于比較該第六初始塊的指紋與該第二檢測塊的指紋;第四摘要比較單元,用于如果該第六初始塊的指紋與該第二檢測塊的指紋相同,則比較該第四子可變塊的摘要與該第四子片段的摘要,該第四子可變塊的摘要為根據(jù)該摘要算法對該第四子可變塊的摘要進行計算得到的,該第四子片段的摘要為根據(jù)該摘要算法對該第四子片段的摘要進行計算得到的;第四添加単元,用于如果該第四子片段的摘要與該第四子可變塊的摘要相同,則將該第四子片段、該第四子片段的指紋以及該第四子片段的摘要添加到該第二本地重復數(shù)據(jù)庫,生成第四本地重復數(shù)據(jù)庫,該第四子片段的指紋與該第六初始塊的指紋相同。
本發(fā)明實施例提供的數(shù)據(jù)壓縮設備還可包括第五報文接收單元,用于接收第五報文,該第五報文包括第五報文頭與第五凈荷,該第五凈荷包含第四凈荷片度以及第五凈荷片段,該第四凈荷片度的長度與該第一子片段相同,該第五凈荷片段的長度與該第四子片段的長度相同;第七初始指紋計算單元,用于根據(jù)該指紋算法計算該第四凈荷片段中第七初始塊的指紋,根據(jù)該指紋算法計算該第五凈荷片 段中第八初始塊的指紋,該第七初始塊的起始位置與該第四凈荷片段的起始位置相同,該第七初始塊的長度與該第一滑窗的長度相同,該第八初始塊的起始位置與該第五凈荷片段的起始位置相同,該第八初始塊的長度與該第一滑窗的長度相同;第五凈荷摘要計算單元,用于根據(jù)該摘要算法計算該第四凈荷片段的摘要,根據(jù)該摘要算法計算該第五凈荷片段的摘要;第六報文生成単元,用于如果該第七初始塊的指紋與該第四本地重復數(shù)據(jù)庫中的該第一子片段的指紋相等,并且該第四凈荷片段的摘要與該第一子片段的摘要相等,則刪除該第五報文中的該第四凈荷片段,如果該第八初始塊的指紋與該第四本地重復數(shù)據(jù)庫中的該第四子片段的指紋相等,并且該第五凈荷片段的摘要與該第四子片段的摘要相等,則刪除該第五報文中的該第五凈荷片段,生成第六報文,該第六報文中包括第六報文頭與第六凈荷,該第六報文頭與該第五報文頭相同,該第六凈荷包括該第一子片段的指紋以及該第四子片段的指紋。該第六凈荷還可包括該第一子片段在該第五報文中的位置信息、該第四子片段在該第五報文中的位置信息。第一子片段在第五報文中的位置信息可以是第一子片段的最高比特相對于第五報文的報文頭的最高比特的偏移量??蛇x地,從該第二比特開始向后滑動該定界算法中的第三滑窗,并判斷該第三滑窗對應的數(shù)據(jù)是否符合該定界算法中的定界條件,當首次出現(xiàn)該第三滑窗對應的數(shù)據(jù)符合該定界條件時,在第一距離內(nèi)繼續(xù)向后滑動該第三滑窗,并判斷該第三滑窗對應的數(shù)據(jù)是否符合該定界條件,如果出現(xiàn)該第三滑窗對應的第一數(shù)據(jù)符合該定界條件的情況時,則確定該第一數(shù)據(jù)的結(jié)束位置為該第三片段的結(jié)束位置,該第三滑窗的長度與該第一滑窗的長度相同,該第一距離的長度與該第一滑窗的長度相同。本發(fā)明實施例提供的數(shù)據(jù)壓縮設備還可包括第二同步單元,用于將該第一子片段、該第一子片段的指紋以及該第一子片段的摘要同步到解壓縮側(cè)的重復數(shù)據(jù)庫。本發(fā)明實施例提供的數(shù)據(jù)壓縮設備還可包括壓縮處理單元,用于刪除該待壓縮數(shù)據(jù)中的該第一子片段,將該第一子片段的指紋、該第一子片段的長度及該第一子片段在該待壓縮數(shù)據(jù)中的位置信息添加到第七報文的凈荷中,該待壓縮數(shù)據(jù)為該第七報文的凈荷。第一子片段在待壓縮數(shù)據(jù)中的位置信息可以是第一子片段的最高比特相對于待壓縮數(shù)據(jù)的最高比特的偏移量。本發(fā)明實施例提供的數(shù)據(jù)壓縮設備可為W0C。本領域技術人員應理解,WOC除了上述功能単元,還應具有報文接收、網(wǎng)絡連接等基本的功能単元,這里不再贅述。本發(fā)明實施例提供的數(shù)據(jù)解壓縮設備包括
第一指紋計算単元,用于根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,該第一片段的起始位置與該待壓縮數(shù)據(jù)的起始位置相同,該第一片段的長度與第一滑窗的長度相同;查找單元,用于在第一本地重復數(shù)據(jù)庫中查找該第一指紋,該第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、該重復數(shù)據(jù)的指紋以及該重復數(shù)據(jù)的摘要;重復內(nèi)容獲取單元,用于如果 該第一本地重復數(shù)據(jù)庫中存在該第一指紋,則根據(jù)該第一指紋獲取該第一本地重復數(shù)據(jù)庫中的第一可變塊以及該第一可變塊的摘要,該第一指紋與根據(jù)該指紋算法計算得到的該第一可變塊中的第一初始塊的指紋相同,該第一初始塊的起始位置與該第一可邊塊的起始位置相同,該第一初始塊的長度與該第一滑窗的長度相同,該第一可變塊的摘要為根據(jù)摘要算法對該第一可變塊的摘要進行計算得到的;摘要計算單元,用于根據(jù)該摘要算法計算該待壓縮數(shù)據(jù)中的第二片段的摘要,該第二片段的起始位置與該待壓縮數(shù)據(jù)的起始位置相同,該第二片段的長度與該第一可變塊的長度相同;摘要比較單元,用于比較該第二片段的摘要與該第一可變塊的摘要;第一子片段獲取単元,用于如果該第二片段的摘要與該第一可變塊的摘要不同,則獲取該第二片段中的第一子片段,該第一子片段與該第一可變塊中的第一子可變塊相同,該第一子片段的起始位置與該第二片段的起始位置相同,該第一子可變塊的起始位置與該第一可變塊的起始位置相同,該第二片段中的第二比特與該第一可變塊中的第一比特不同,該第二比特為該第二片段中該第一子片段的下一個比特,該第一比特為該第一可變塊中該第一子可變塊的下一個比特;第一添加単元,用于將該第一子片段、該第一子片段的指紋以及該第一子片段的摘要添加到該第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,該第一子片段的指紋與該第一指紋相同,該第一子片段的摘要為根據(jù)該摘要算法對該第一子片段的摘要進行計算得到的。本領域技術人員應理解為本發(fā)明實施例提供的數(shù)據(jù)解壓縮設備除具備上述単元夕卜,還具有解壓縮等基本功能単元。本發(fā)明實施例提供的數(shù)據(jù)解壓縮設備還可包括第一同步單元,用于將該第一子片段的指紋以及該第一子片段的摘要同步到壓縮側(cè)的重復數(shù)據(jù)庫。圖9為本發(fā)明實施例提供的ー種數(shù)據(jù)壓縮方法的一種應用場景的組網(wǎng)結(jié)構(gòu)圖。如圖9所示,在WAN兩端用來壓縮數(shù)據(jù)及解壓縮數(shù)據(jù)的設備均為WOC。S卩,WOC可同時具備壓縮數(shù)據(jù)和解壓縮數(shù)據(jù)的功能。圖10為本發(fā)明實施例提供的ー種數(shù)據(jù)壓縮方法的另ー種應用場景的組網(wǎng)結(jié)構(gòu)圖。如圖10所示,兩端WOC設備的交互包括控制和數(shù)據(jù)兩個層面??刂茖用媸莾啥嗽O備需要通過私有協(xié)議交互控制信息,自動發(fā)現(xiàn)對端設備,通過下游設備發(fā)送響應到上游設備,可以使上游設備感知下游設備的存在及地址信息(如IP地址)。并且,兩端設備需要互相通知采用的算法信息并達成一致(如都采用MD5進行內(nèi)容checksum的計算),還需要同步重復數(shù)據(jù)庫信息,包括指紋及指紋對應的信息表項(如塊長度,checksum值等)。同步過程分為定時同步和增量同步,定時同步指定時將所有的重復數(shù)據(jù)庫內(nèi)容進行一致性檢查,而增量同步則只對新增或更新/刪除的特定塊信息通知對端。數(shù)據(jù)層面是指對通過兩端設備的業(yè)務數(shù)據(jù)進行算法處理和數(shù)據(jù)替換,從而減少報文的長度和個數(shù),達到數(shù)據(jù)壓縮的目的。根據(jù)本發(fā)明實施例提供的技術方案,如果待壓縮的數(shù)據(jù)中包含了與重復數(shù)據(jù)庫中的可變塊的前半部分相同并且與可變塊的后半部分不同的數(shù)據(jù)片段,則能夠生成粒度小于發(fā)生匹配的可變塊的新的可變塊,并將新的可變 塊添加到重復數(shù)據(jù)庫。相對于直接對定位到的塊進行查找方法,新的可變塊粒度較小。因此,本發(fā)明實施例提供的技術方案提高了后續(xù)的待壓縮數(shù)據(jù)與更新后的重復數(shù)據(jù)庫發(fā)生匹配的概率,進而提高了壓縮的效率。本領域普通技術人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和単元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,可以僅僅為ー種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另ー個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過ー些接ロ,裝置或単元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的単元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理単元,即可以位于ー個地方,或者也可以分布到多個網(wǎng)絡單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能単元可以集成在一個處理単元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。所述功能如果以軟件功能単元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在ー個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括U盤、移動硬盤、只讀存儲器(英文縮寫為R0M,英文全稱為Read-Only Memory)、隨機存取存儲器(英文縮寫為RAM,英文全稱為Random AccessMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應所述以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種數(shù)據(jù)數(shù)據(jù)處理方法,其特征在于,包括 根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,所述第一片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第一片段的長度與第一滑窗的長度相同; 在第一本地重復數(shù)據(jù)庫中查找所述第一指紋,所述第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、所述重復數(shù)據(jù)的指紋以及所述重復數(shù)據(jù)的摘要; 如果所述第一本地重復數(shù)據(jù)庫中存在所述第一指紋,則根據(jù)所述第一指紋獲取所述第一本地重復數(shù)據(jù)庫中的第一可變塊以及所述第一可變塊的摘要,所述第一指紋與根據(jù)所述指紋算法計算得到的所述第一可變塊中的第一初始塊的指紋相同,所述第一初始塊的起始位置與所述第一可邊塊的起始位置相同,所述第一初始塊的長度與所述第一滑窗的長度相同,所述第一可變塊的摘要為根據(jù)摘要算法對所述第一可變塊的摘要進行計算得到的; 根據(jù)所述摘要算法計算所述待壓縮數(shù)據(jù)中的第二片段的摘要,所述第二片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第二片段的長度與所述第一可變塊的長度相同; 比較所述第二片段的摘要與所述第一可變塊的摘要; 如果所述第二片段的摘要與所述第一可變塊的摘要不同,則獲取所述第二片段中的第一子片段,所述第一子片段與所述第一可變塊中的第一子可變塊相同,所述第一子片段的起始位置與所述第二片段的起始位置相同,所述第一子可變塊的起始位置與所述第一可變塊的起始位置相同,所述第二片段中的第二比特與所述第一可變塊中的第一比特不同,所述第二比特為所述第二片段中所述第一子片段的下一個比特,所述第一比特為所述第一可變塊中所述第一子可變塊的下一個比特; 將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要添加到所述第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,所述第一子片段的指紋與所述第一指紋相同,所述第一子片段的摘要為根據(jù)所述摘要算法對所述第一子片段的摘要進行計算得到的。
2.根據(jù)權(quán)利要求I所述方法,其特征在于,還包括 接收第一報文,所述第一報文包括第一報文頭與第一凈荷,所述第一凈荷包含第一凈荷片段,所述第一凈荷片段的長度與所述第一子片段的長度相同; 根據(jù)所述指紋算法計算所述第一凈荷片段中第二初始塊的指紋,所述第二初始塊的起始位置與所述第一凈荷片段的起始位置相同,所述第二初始塊的長度與所述第一滑窗的長度相冋; 根據(jù)所述摘要算法計算所述第一凈荷片段的摘要; 如果所述第二初始塊的指紋與所述第二本地重復數(shù)據(jù)庫中的所述第一子片段的指紋相等,并且所述第一凈荷片段的摘要與所述第一子片段的摘要相等,則刪除所述第一報文中的所述第一凈荷片段,生成第二報文,所述第二報文中包括第二報文頭與第二凈荷,所述第二報文頭與所述第一報文頭相同,所述第二凈荷包括所述第一子片段的指紋。
3.根據(jù)權(quán)利要求2所述方法,其特征在于,所述第二凈荷還包括所述第一子片段在所述第一報文中的位置信息。
4.根據(jù)權(quán)利要求I所述方法,其特征在于,所述獲取所述第二片段中的第一子片段之后,所述方法還包括根據(jù)所述指紋算法計算所述待壓縮數(shù)據(jù)中的第二子片段的第三初始塊的指紋,所述第二子片段的起始位置為所述第二比特,所述第二子片段的結(jié)束位置與所述待壓縮數(shù)據(jù)的結(jié)束位置相同;所述第三初始塊的起始位置為所述第二比特,所述第三初始塊的長度等于所述第一滑窗的長度; 根據(jù)第二滑窗獲取第二子可變塊中的第一檢測塊,所述第二滑窗的起始位置與所述第二子可變塊中的第三比特對應,所述第三比特為介于第二子可變塊的起始位置與所述第二子可變塊的結(jié)束位置之間的比特,所述第二滑窗的長度等于所述第一滑窗的長度,所述第二子可變塊的起始位置為所述第一比特,所述第二子可變塊的結(jié)束位置與所述第一可變塊的結(jié)束位置相同; 根據(jù)所述指紋算法計算所述第一檢測塊的指紋; 比較所述第三初始塊的指紋與所述第一檢測塊的指紋; 如果所述第三初始塊的指紋與所述第一檢測塊的指紋相同,則比較所述第二子可變塊中的第三子可變塊的摘要與所述第二子片段中的第三子片段的摘要,所述第三子可變塊的起始位置與所述第一檢測塊的起始位置相同,所述第三子可變塊的結(jié)束位置與所述第一可變塊的結(jié)束位置相同,所述第三子片段的起始位置與所述第二子片段的起始位置相同,所述第三子片段的長度與所述第三子可變塊的長度相等,所述第三子可變塊的摘要為根據(jù)所述摘要算法對所述第三子可變塊的摘要進行計算得到的; 如果所述第三子片段的摘要與所述第三子可變塊的摘要相等,則將所述第三子片段、所述第三子片段的指紋以及所述第三子片段的摘要添加到所述第二本地重復數(shù)據(jù)庫,生成第三本地重復數(shù)據(jù)庫,所述第三子片段的指紋等于所述第三初始塊的指紋,所述第三子片段的摘要為根據(jù)所述摘要算法對所述第三子片段的摘要進行計算得到的。
5.根據(jù)權(quán)利要求4所述方法,其特征在于,還包括 接收第三報文,所述第三報文包括第三報文頭與第三凈荷,所述第三凈荷包含第二凈荷片段以及第三凈荷片段,所述第二凈荷片段的長度與所述第一子片段的長度相同,所述第三凈荷片段的長度與所述第三子片段的長度相同; 根據(jù)所述指紋算法計算所述第二凈荷片段中第四初始塊的指紋,根據(jù)所述指紋算法計算所述第三凈荷片段中第五初始塊的指紋,所述第四初始塊的起始位置與所述第二凈荷片段的起始位置相同,所述第四初始塊的長度與所述第一滑窗的長度相同,所述第五初始塊的起始位置與所述第三凈荷片段的起始位置相同,所述第五初始塊的長度與所述第一滑窗的長度相同; 根據(jù)所述摘要算法計算所述第二凈荷片段的摘要,根據(jù)所述摘要算法計算所述第三凈荷片段的摘要; 如果所述第四初始塊的指紋與所述第三本地重復數(shù)據(jù)庫中的所述第一子片段的指紋相等,并且所述第二凈荷片段的摘要與所述第一子片段的摘要相等,則刪除所述第三報文中的所述第二凈荷片段,如果所述第五初始塊的指紋與所述第三本地重復數(shù)據(jù)庫中的所述第三子片段的指紋相等,并且所述第三凈荷片段的摘要與所述第三子片段的摘要相等,則刪除所述第三報文中的所述第三凈荷片段,生成第四報文,所述第四報文中包括第四報文頭與第四凈荷,所述第四報文頭與所述第三報文頭相同,所述第四凈荷包括所述第一子片段的指紋以及所述第三子片段的指紋。
6.根據(jù)權(quán)利要求4所述方法,其特征在于,所述第四凈荷還包括所述第一子片段在所述第三報文中的位置信息、所述第三子片段在所述第三報文中的位置信息。
7.根據(jù)權(quán)利要求I所述方法,其特征在于,所述方法還包括 根據(jù)所述指紋算法計算所述第一可變塊中的第四子可變塊的第六初始塊的指紋,所述第四子可變塊的起始位置為所述第一比特,所述第四子可變塊的結(jié)束位置與所述第一可變塊的結(jié)束位置相同,所述第六初始塊的起始位置為所述第一比特,所述第六初始塊的長度等于所述第一滑窗的長度; 獲取第四子片段中的第二檢測塊,所述第二檢測塊的起始位置與所述第四子片段中的第四比特對應,所述第四比特為介于第三片段的起始位置與所述第三片段的結(jié)束位置之間的比特,所述第二檢測塊的長度等于所述第一滑窗的長度,所述第三片段的起始位置為所述第二比特,所述第三片段的結(jié)束位置通過定界算法確定,所述第三片段為所述待壓縮數(shù)據(jù)中的片段,所述第四子片段為所述第三片段中的子片段,所述第四子片段的起始位置與所述第二檢測塊的起始位置相同,所述第四子片段的長度與所述第四子可變塊的長度相同; 根據(jù)所述指紋算法計算所述第二檢測塊的指紋; 比較所述第六初始塊的指紋與所述第二檢測塊的指紋; 如果所述第六初始塊的指紋與所述第二檢測塊的指紋相同,則比較所述第四子可變塊的摘要與所述第四子片段的摘要,所述第四子可變塊的摘要為根據(jù)所述摘要算法對所述第四子可變塊的摘要進行計算得到的,所述第四子片段的摘要為根據(jù)所述摘要算法對所述第四子片段的摘要進行計算得到的; 如果所述第四子片段的摘要與所述第四子可變塊的摘要相同,則將所述第四子片段、所述第四子片段的指紋以及所述第四子片段的摘要添加到所述第二本地重復數(shù)據(jù)庫,生成第四本地重復數(shù)據(jù)庫,所述第四子片段的指紋與所述第六初始塊的指紋相同。
8.根據(jù)權(quán)利要求7所述方法,其特征在于,還包括 接收第五報文,所述第五報文包括第五報文頭與第五凈荷,所述第五凈荷包含第四凈荷片度以及第五凈荷片段,所述第四凈荷片度的長度與所述第一子片段相同,所述第五凈荷片段的長度與所述第四子片段的長度相同; 根據(jù)所述指紋算法計算所述第四凈荷片段中第七初始塊的指紋,根據(jù)所述指紋算法計算所述第五凈荷片段中第八初始塊的指紋,所述第七初始塊的起始位置與所述第四凈荷片段的起始位置相同,所述第七初始塊的長度與所述第一滑窗的長度相同,所述第八初始塊的起始位置與所述第五凈荷片段的起始位置相同,所述第八初始塊的長度與所述第一滑窗的長度相同; 根據(jù)所述摘要算法計算所述第四凈荷片段的摘要,根據(jù)所述摘要算法計算所述第五凈荷片段的摘要; 如果所述第七初始塊的指紋與所述第四本地重復數(shù)據(jù)庫中的所述第一子片段的指紋相等,并且所述第四凈荷片段的摘要與所述第一子片段的摘要相等,則刪除所述第五報文中的所述第四凈荷片段,如果所述第八初始塊的指紋與所述第四本地重復數(shù)據(jù)庫中的所述第四子片段的指紋相等,并且所述第五凈荷片段的摘要與所述第四子片段的摘要相等,則刪除所述第五報文中的所述第五凈荷片段,生成第六報文,所述第六報文中包括第六報文頭與第六凈荷,所述第六報文頭與所述第五報文頭相同,所述第六凈荷包括所述第一子片段的指紋以及所述第四子片段的指紋。
9.根據(jù)權(quán)利要求8所述方法,其特征在于,所述第六凈荷還包括所述第一子片段在所述第五報文中的位置信息、所述第四子片段在所述第五報文中的位置信息。
10.根據(jù)權(quán)利要求7所述方法,其特征在于,所述第三片段的結(jié)束位置通過定界算法確定,包括 從所述第二比特開始向后滑動所述定界算法中的第三滑窗,并判斷所述第三滑窗對應的數(shù)據(jù)是否符合所述定界算法中的定界條件,當首次出現(xiàn)所述第三滑窗對應的數(shù)據(jù)符合所述定界條件時,在第一距離內(nèi)繼續(xù)向后滑動所述第三滑窗,并判斷所述第三滑窗對應的數(shù)據(jù)是否符合所述定界條件,如果出現(xiàn)所述第三滑窗對應的第一數(shù)據(jù)符合所述定界條件的情況時,則確定所述第一數(shù)據(jù)的結(jié)束位置為所述第三片段的結(jié)束位置,所述第三滑窗的長度與所述第一滑窗的長度相同,所述第一距離的長度與所述第一滑窗的長度相同。
11.根據(jù)權(quán)利要求I所述方法,其特征在于,還包括將所述第一子片段的指紋以及所述第一子片段的摘要同步到壓縮側(cè)的重復數(shù)據(jù)庫。
12.根據(jù)權(quán)利要求1-10任一項所述方法,其特征在于,還包括將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要同步到解壓縮側(cè)的重復數(shù)據(jù)庫。
13.根據(jù)權(quán)利要求I所述方法,其特征在于,還包括 刪除所述待壓縮數(shù)據(jù)中的所述第一子片段,將所述第一子片段的指紋、所述第一子片段的長度及所述第一子片段在所述待壓縮數(shù)據(jù)中的位置信息添加到第七報文的凈荷中,所述待壓縮數(shù)據(jù)為所述第七報文的凈荷。
14.一種數(shù)據(jù)壓縮設備,其特征在于,包括 第一指紋計算單元,用于根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,所述第一片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第一片段的長度與第一滑窗的長度相同; 查找單元,用于在第一本地重復數(shù)據(jù)庫中查找所述第一指紋,所述第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、所述重復數(shù)據(jù)的指紋以及所述重復數(shù)據(jù)的摘要; 重復內(nèi)容獲取單元,用于如果所述第一本地重復數(shù)據(jù)庫中存在所述第一指紋,則根據(jù)所述第一指紋獲取所述第一本地重復數(shù)據(jù)庫中的第一可變塊以及所述第一可變塊的摘要,所述第一指紋與根據(jù)所述指紋算法計算得到的所述第一可變塊中的第一初始塊的指紋相同,所述第一初始塊的起始位置與所述第一可邊塊的起始位置相同,所述第一初始塊的長度與所述第一滑窗的長度相同,所述第一可變塊的摘要為根據(jù)摘要算法對所述第一可變塊的摘要進行計算得到的; 摘要計算單元,用于根據(jù)所述摘要算法計算所述待壓縮數(shù)據(jù)中的第二片段的摘要,所述第二片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第二片段的長度與所述第一可變塊的長度相同; 摘要比較單元,用于比較所述第二片段的摘要與所述第一可變塊的摘要; 第一子片段獲取單元,用于如果所述第二片段的摘要與所述第一可變塊的摘要不同,則獲取所述第二片段中的第一子片段,所述第一子片段與所述第一可變塊中的第一子可變塊相同,所述第一子片段的起始位置與所述第二片段的起始位置相同,所述第一子可變塊的起始位置與所述第一可變塊的起始位置相同,所述第二片段中的第二比特與所述第一可變塊中的第一比特不同,所述第二比特為所述第二片段中所述第一子片段的下一個比特,所述第一比特為所述第一可變塊中所述第一子可變塊的下一個比特; 第一添加單元,用于將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要添加到所述第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,所述第一子片段的指紋與所述第一指紋相同,所述第一子片段的摘要為根據(jù)所述摘要算法對所述第一子片段的摘要進行計算得到的。
15.根據(jù)權(quán)利要求14所述設備,其特征在于,還包括第一報文接收單元,用于接收第一報文,所述第一報文包括第一報文頭與第一凈荷,所述第一凈荷包含第一凈荷片段,所述第一凈荷片段的長度與所述第一子片段的長度相同;第二初始指紋計算單元,用于根據(jù)所述指紋算法計算所述第一凈荷片段中第二初始塊的指紋,所述第二初始塊的起始位置與所述第一凈荷片段的起始位置相同,所述第二初始塊的長度與所述第一滑窗的長度相同; 第一凈荷摘要計算單元,用于根據(jù)所述摘要算法計算所述第一凈荷片段的摘要;第二報文生成單元,用于如果所述第二初始塊的指紋與所述第二本地重復數(shù)據(jù)庫中的所述第一子片段的指紋相等,并且所述第一凈荷片段的摘要與所述第一子片段的摘要相等,則刪除所述第一報文中的所述第一凈荷片段,生成第二報文,所述第二報文中包括第二報文頭與第二凈荷,所述第二報文頭與所述第一報文頭相同,所述第二凈荷包括所述第一子片段的指紋。
16.根據(jù)權(quán)利要求15所述設備,其特征在于,所述第二凈荷還包括所述第一子片段在所述第一報文中的位置信息。
17.根據(jù)權(quán)利要求14所述設備,其特征在于,所述設備還包括 第三初始指紋計算單元,用于根據(jù)所述指紋算法計算所述待壓縮數(shù)據(jù)中的第二子片段的第三初始塊的指紋,所述第二子片段的起始位置為所述第二比特,所述第二子片段的結(jié)束位置與所述待壓縮數(shù)據(jù)的結(jié)束位置相同;所述第三初始塊的起始位置為所述第二比特,所述第三初始塊的長度等于所述第一滑窗的長度; 檢測塊獲取單元,用于根據(jù)第二滑窗獲取第二子可變塊中的第一檢測塊,所述第二滑窗的起始位置與所述第二子可變塊中的第三比特對應,所述第三比特為介于第二子可變塊的起始位置與所述第二子可變塊的結(jié)束位置之間的比特,所述第二滑窗的長度等于所述第一滑窗的長度,所述第二子可變塊的起始位置為所述第一比特,所述第二子可變塊的結(jié)束位置與所述第一可變塊的結(jié)束位置相同; 檢測塊指紋計算單元,根據(jù)所述指紋算法計算所述第一檢測塊的指紋; 指紋比較單元,用于比較所述第三初始塊的指紋與所述第一檢測塊的指紋; 第三摘要比較單元,用于如果所述第三初始塊的指紋與所述第一檢測塊的指紋相同,則比較所述第二子可變塊中的第三子可變塊的摘要與所述第二子片段中的第三子片段的摘要,所述第三子可變塊的起始位置與所述第一檢測塊的起始位置相同,所述第三子可變塊的結(jié)束位置與所述第一可變塊的結(jié)束位置相同,所述第三子片段的起始位置與所述第二子片段的起始位置相同,所述第三子片段的長度與所述第三子可變塊的長度相等,所述第三子可變塊的摘要為根據(jù)所述摘要算法對所述第三子可變塊的摘要進行計算得到的;第三添加單元,用于如果所述第三子片段的摘要與所述第三子可變塊的摘要相等,則將所述第三子片段、所述第三子片段的指紋以及所述第三子片段的摘要添加到所述第二本地重復數(shù)據(jù)庫,生成第三本地重復數(shù)據(jù)庫,所述第三子片段的指紋等于所述第三初始塊的指紋,所述第三子片段的摘要為根據(jù)所述摘要算法對所述第三子片段的摘要進行計算得到的。
18.根據(jù)權(quán)利要求17所述設備,其特征在于,還包括 第三報文接收單元,用于接收第三報文,所述第三報文包括第三報文頭與第三凈荷,所述第三凈荷包含第二凈荷片段以及第三凈荷片段,所述第二凈荷片段的長度與所述第一子片段的長度相同,所述第三凈荷片段的長度與所述第三子片段的長度相同; 第四初始指紋計算單元,用于根據(jù)所述指紋算法計算所述第二凈荷片段中第四初始塊的指紋,根據(jù)所述指紋算法計算所述第三凈荷片段中第五初始塊的指紋,所述第四初始塊的起始位置與所述第二凈荷片段的起始位置相同,所述第四初始塊的長度與所述第一滑窗的長度相同,所述第五初始塊的起始位置與所述第三凈荷片段的起始位置相同,所述第五初始塊的長度與所述第一滑窗的長度相同; 第三凈荷摘要計算單元,用于根據(jù)所述摘要算法計算所述第二凈荷片段的摘要,根據(jù)所述摘要算法計算所述第三凈荷片段的摘要; 第四報文生成單元,用于如果所述第四初始塊的指紋與所述第三本地重復數(shù)據(jù)庫中的所述第一子片段的指紋相等,并且所述第二凈荷片段的摘要與所述第一子片段的摘要相等,則刪除所述第三報文中的所述第二凈荷片段,如果所述第五初始塊的指紋與所述第三本地重復數(shù)據(jù)庫中的所述第三子片段的指紋相等,并且所述第三凈荷片段的摘要與所述第三子片段的摘要相等,則刪除所述第三報文中的所述第三凈荷片段,生成第四報文,所述第四報文中包括第四報文頭與第四凈荷,所述第四報文頭與所述第三報文頭相同,所述第四凈荷包括所述第一子片段的指紋以及所述第三子片段的指紋。
19.根據(jù)權(quán)利要求17所述設備,其特征在于,所述第四凈荷還包括所述第一子片段在所述第三報文中的位置信息、所述第三子片段在所述第三報文中的位置信息。
20.根據(jù)權(quán)利要求14所述設備,其特征在于,所述設備還包括 初始塊指紋計算單元,用于根據(jù)所述指紋算法計算所述第一可變塊中的第四子可變塊的第六初始塊的指紋,所述第四子可變塊的起始位置為所述第一比特,所述第四子可變塊的結(jié)束位置與所述第一可變塊的結(jié)束位置相同,所述第六初始塊的起始位置為所述第一比特,所述第六初始塊的長度等于所述第一滑窗的長度; 檢測塊獲取單元,用于獲取第四子片段中的第二檢測塊,所述第二檢測塊的起始位置與所述第四子片段中的第四比特對應,所述第四比特為介于第三片段的起始位置與所述第三片段的結(jié)束位置之間的比特,所述第二檢測塊的長度等于所述第一滑窗的長度,所述第三片段的起始位置為所述第二比特,所述第三片段的結(jié)束位置通過定界算法確定,所述第三片段為所述待壓縮數(shù)據(jù)中的片段,所述第四子片段為所述第三片段中的子片段,所述第四子片段的起始位置與所述第二檢測塊的起始位置相同,所述第四子片段的長度與所述第四子可變塊的長度相同; 檢測塊指紋計算單元,用于根據(jù)所述指紋算法計算所述第二檢測塊的指紋; 指紋比較單元,用于比較所述第六初始塊的指紋與所述第二檢測塊的指紋;第四摘要比較單元,用于如果所述第六初始塊的指紋與所述第二檢測塊的指紋相同,則比較所述第四子可變塊的摘要與所述第四子片段的摘要,所述第四子可變塊的摘要為根據(jù)所述摘要算法對所述第四子可變塊的摘要進行計算得到的,所述第四子片段的摘要為根據(jù)所述摘要算法對所述第四子片段的摘要進行計算得到的; 第四添加單元,用于如果所述第四子片段的摘要與所述第四子可變塊的摘要相同,則將所述第四子片段、所述第四子片段的指紋以及所述第四子片段的摘要添加到所述第二本地重復數(shù)據(jù)庫,生成第四本地重復數(shù)據(jù)庫,所述第四子片段的指紋與所述第六初始塊的指紋相同。
21.根據(jù)權(quán)利要求20所述設備,其特征在于,還包括 第五報文接收單元,用于接收第五報文,所述第五報文包括第五報文頭與第五凈荷,所述第五凈荷包含第四凈荷片度以及第五凈荷片段,所述第四凈荷片度的長度與所述第一子片段相同,所述第五凈荷片段的長度與所述第四子片段的長度相同; 第七初始指紋計算單元,用于根據(jù)所述指紋算法計算所述第四凈荷片段中第七初始塊的指紋,根據(jù)所述指紋算法計算所述第五凈荷片段中第八初始塊的指紋,所述第七初始塊的起始位置與所述第四凈荷片段的起始位置相同,所述第七初始塊的長度與所述第一滑窗的長度相同,所述第八初始塊的起始位置與所述第五凈荷片段的起始位置相同,所述第八初始塊的長度與所述第一滑窗的長度相同; 第五凈荷摘要計算單元,用于根據(jù)所述摘要算法計算所述第四凈荷片段的摘要,根據(jù)所述摘要算法計算所述第五凈荷片段的摘要; 第六報文生成單元,用于如果所述第七初始塊的指紋與所述第四本地重復數(shù)據(jù)庫中的所述第一子片段的指紋相等,并且所述第四凈荷片段的摘要與所述第一子片段的摘要相等,則刪除所述第五報文中的所述第四凈荷片段,如果所述第八初始塊的指紋與所述第四本地重復數(shù)據(jù)庫中的所述第四子片段的指紋相等,并且所述第五凈荷片段的摘要與所述第四子片段的摘要相等,則刪除所述第五報文中的所述第五凈荷片段,生成第六報文,所述第六報文中包括第六報文頭與第六凈荷,所述第六報文頭與所述第五報文頭相同,所述第六凈荷包括所述第一子片段的指紋以及所述第四子片段的指紋。
22.根據(jù)權(quán)利要求21所述設備,其特征在于,所述第六凈荷還包括所述第一子片段在所述第五報文中的位置信息、所述第四子片段在所述第五報文中的位置信息。
23.根據(jù)權(quán)利要求20所述設備,其特征在于,所述檢測塊獲取單元具體用于從所述第二比特開始向后滑動所述定界算法中的第三滑窗,并判斷所述第三滑窗對應的數(shù)據(jù)是否符合所述定界算法中的定界條件,當首次出現(xiàn)所述第三滑窗對應的數(shù)據(jù)符合所述定界條件時,在第一距離內(nèi)繼續(xù)向后滑動所述第三滑窗,并判斷所述第三滑窗對應的數(shù)據(jù)是否符合所述定界條件,如果出現(xiàn)所述第三滑窗對應的第一數(shù)據(jù)符合所述定界條件的情況時,則確定所述第一數(shù)據(jù)的結(jié)束位置為所述第三片段的結(jié)束位置,所述第三滑窗的長度與所述第一滑窗的長度相同,所述第一距離的長度與所述第一滑窗的長度相同。
24.根據(jù)權(quán)利要求14-23任一項所述設備,其特征在于,還包括 第二同步單元,用于將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要同步到解壓縮側(cè)的重復數(shù)據(jù)庫。
25.根據(jù)權(quán)利要求14所述設備,其特征在于,還包括壓縮處理單元,用于刪除所述待壓縮數(shù)據(jù)中的所述第一子片段,將所述第一子片段的指紋、所述第一子片段的長度及所述第一子片段在所述待壓縮數(shù)據(jù)中的位置信息添加到第七報文的凈荷中,所述待壓縮數(shù)據(jù)為所述第七報文的凈荷。
26.一種數(shù)據(jù)解壓縮設備,其特征在于,包括 第一指紋計算單元,用于根據(jù)指紋算法計算待壓縮數(shù)據(jù)中的第一片段的第一指紋,所述第一片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第一片段的長度與第一滑窗的長度相同; 查找單元,用于在第一本地重復數(shù)據(jù)庫中查找所述第一指紋,所述第一本地重復數(shù)據(jù)庫用于存儲重復數(shù)據(jù)、所述重復數(shù)據(jù)的指紋以及所述重復數(shù)據(jù)的摘要; 重復內(nèi)容獲取單元,用于如果所述第一本地重復數(shù)據(jù)庫中存在所述第一指紋,則根據(jù)所述第一指紋獲取所述第一本地重復數(shù)據(jù)庫中的第一可變塊以及所述第一可變塊的摘要,所述第一指紋與根據(jù)所述指紋算法計算得到的所述第一可變塊中的第一初始塊的指紋相同,所述第一初始塊的起始位置與所述第一可邊塊的起始位置相同,所述第一初始塊的長度與所述第一滑窗的長度相同,所述第一可變塊的摘要為根據(jù)摘要算法對所述第一可變塊的摘要進行計算得到的; 摘要計算單元,用于根據(jù)所述摘要算法計算所述待壓縮數(shù)據(jù)中的第二片段的摘要,所述第二片段的起始位置與所述待壓縮數(shù)據(jù)的起始位置相同,所述第二片段的長度與所述第一可變塊的長度相同; 摘要比較單元,用于比較所述第二片段的摘要與所述第一可變塊的摘要; 第一子片段獲取單元,用于如果所述第二片段的摘要與所述第一可變塊的摘要不同,則獲取所述第二片段中的第一子片段,所述第一子片段與所述第一可變塊中的第一子可變塊相同,所述第一子片段的起始位置與所述第二片段的起始位置相同,所述第一子可變塊的起始位置與所述第一可變塊的起始位置相同,所述第二片段中的第二比特與所述第一可變塊中的第一比特不同,所述第二比特為所述第二片段中所述第一子片段的下一個比特,所述第一比特為所述第一可變塊中所述第一子可變塊的下一個比特; 第一添加單元,用于將所述第一子片段、所述第一子片段的指紋以及所述第一子片段的摘要添加到所述第一本地重復數(shù)據(jù)庫,生成第二本地重復數(shù)據(jù)庫,所述第一子片段的指紋與所述第一指紋相同,所述第一子片段的摘要為根據(jù)所述摘要算法對所述第一子片段的摘要進行計算得到的。
27.根據(jù)權(quán)利要求26所述設備,其特征在于,還包括 第一同步單元,用于將所述第一子片段的指紋以及所述第一子片段的摘要同步到壓縮側(cè)的重復數(shù)據(jù)庫。
全文摘要
本發(fā)明實施例提供了數(shù)據(jù)處理方法及數(shù)據(jù)處理設備,如果待壓縮的數(shù)據(jù)中包含了與重復數(shù)據(jù)庫中的可變塊的前半部分相同并且與可變塊的后半部分不同的數(shù)據(jù)片段,則能夠生成粒度小于發(fā)生匹配的可變塊的新的可變塊,并將新的可變塊添加到重復數(shù)據(jù)庫。新的可變塊粒度較小,提高了后續(xù)的待壓縮數(shù)據(jù)與更新后的重復數(shù)據(jù)庫發(fā)生匹配的概率,進而提高了壓縮的效率。
文檔編號H04L1/00GK102684827SQ201210053609
公開日2012年9月19日 申請日期2012年3月2日 優(yōu)先權(quán)日2012年3月2日
發(fā)明者滕新東 申請人:華為技術有限公司