專利名稱::電子文檔增量存儲處理方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及電子文檔處理領(lǐng)域,尤其涉及一種電子文檔增量存儲處理方法。
背景技術(shù):
:在數(shù)據(jù)存儲、歸檔、備份和存儲等領(lǐng)域,對于編輯前后發(fā)生變化過程中的電子文檔,如果需要保留多個版本,以供恢復或作為記錄,現(xiàn)有的一般處理方式是將編輯后的電子文檔作為獨立的文檔進行壓縮處理或者采用復雜且昂責的快照技術(shù),以此達到減少存儲資源,或者在網(wǎng)絡應用環(huán)境下減少網(wǎng)絡傳輸流量等目的。以備份領(lǐng)域為例,備份內(nèi)容通常在首次備份后,大部分都不會再次更新,僅有少部分的文件(例如用戶正在編輯的文檔、會議討論記錄等)需要經(jīng)常進行更新。對于這類普通的用戶文件,不太可能采用快照技術(shù),一般只會把更新過的文檔重新進行完全備份,如果采用這樣的處理方式,則每次編輯后的文檔都會被存儲為獨立文件,也就是說采用完全拷貝編輯后文檔的方式,即便采用壓縮的方法,仍然需要占用大量的存儲資源,從而限制了實現(xiàn)備份處理的服務器的性能和效率。
發(fā)明內(nèi)容本發(fā)明的目的是提出一種電子文檔增量存儲處理方法,能夠消除文檔在多次編輯過程中獨立保存的文件的冗余,降低對存儲資源或網(wǎng)絡帶寬資源等的需求。為實現(xiàn)上述目的,本發(fā)明提供了一種電子文檔編輯后生成增量文檔的方法,包括以下步驟從參考文檔中將預設容量V的數(shù)據(jù)讀入內(nèi)存,并以預設長度L劃分讀入的數(shù)據(jù);計算劃分出的每個參考數(shù)據(jù)塊對應的索引值,并將所述索引值與對應的參考數(shù)據(jù)塊進行關(guān)聯(lián);從編輯后文檔中依次將預設長度L的編輯后數(shù)據(jù)塊讀入內(nèi)存,并計算對應的索引值;將每次讀取的參考數(shù)據(jù)塊對應的索引值與讀取的各個編輯后數(shù)據(jù)塊對應的索引值進行比較,如果匹配則將所述參考文檔匹配的位置以及匹配標記寫入增量文檔,否則將所述編輯后文檔中不匹配段、不匹配長度以及不匹配標記寫入該增量文檔。進一步的,如果參考文檔的容量低于預設容量V,則讀取所述參考文檔的數(shù)據(jù)直到結(jié)尾。進一步的,在計算從參考文檔中劃分出的每個參考數(shù)據(jù)塊對應的索引值之后,還包括對所述每個參考數(shù)據(jù)塊對應的索引值進行符合預設數(shù)據(jù)結(jié)構(gòu)的管理,以便進行索引值的比較。進一步的,所述對所述每個參考數(shù)據(jù)塊對應的索引值進行符合預設數(shù)據(jù)結(jié)構(gòu)的管理的操作具體為采用搜索樹對所述每個參考數(shù)據(jù)塊對應的索引值進行管理。進一步的,所述搜索樹還管理著具有相同索引值的每個數(shù)據(jù)塊,述參考文檔中讀取的各個:據(jù):對應的索引值進行二較之后,:口果索引值相同,則將每次從所述編輯后文檔中讀取的數(shù)據(jù)塊與所述具有該相同索引值的每個數(shù)據(jù)塊進行逐一比較,判斷內(nèi)容是否完全匹配。進一步的,在讀取的參考數(shù)據(jù)塊對應的索引值與讀取的各個編輯后數(shù)據(jù)塊對應的索引值匹配時,清除內(nèi)存中所述參考文檔匹配的位置及該位置之前的數(shù)據(jù),并追加所述參考文檔中未讀入的數(shù)據(jù),并滿足預設容量V,如果所述參考文檔中未讀入的數(shù)據(jù)在追加后容量仍低于預設容量V,則讀取所述參考文檔的數(shù)據(jù)直到結(jié)尾。進一步的,在將所述編輯后文檔中不匹配段、不匹配長度以及不匹配標記寫入該增量文檔時,如果不匹配長度大于預設不匹配長度Lp時,則按照所述預設不匹配長度Lp分為多個不匹配段,并寫入該增量文檔。進一步的,如果參考文檔的容量遠低于預設容量V,則退出生成增量文檔的操作。進一步的,如果參考文檔的容量遠低于編輯后文檔的容量,則退出生成增量文檔的操作。為實現(xiàn)上述目的,本發(fā)明提供了一種根據(jù)增量文檔恢復編輯后文檔的方法,包括依次識別增量文檔中的匹配標記及不匹配標記,對于不匹配標記,則從增量文檔中讀出該不匹配標記對應的不匹配段,并寫入編輯后文檔;對于匹配標記,則計算出該匹配標記在參考文檔中的位置,并從參考文檔中讀取從該位置起預設長度L的參考數(shù)據(jù)塊,并寫入編輯后文檔?;谏鲜黾夹g(shù)方案,本發(fā)明通過對編輯前后的兩個文檔進行比較建立映射關(guān)系,再根據(jù)記錄的映射關(guān)系生成增量文檔,在數(shù)據(jù)存儲、歸檔、備份等方面只需要處理增量文檔來替代處理編輯后文檔,以次減少存儲或網(wǎng)絡傳輸?shù)呢摀4颂幩f明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中圖l為本發(fā)明電子文檔編輯后生成增量文檔的方法的一實施例的流程示意圖。圖2為本發(fā)明電子文檔編輯后生成增量文檔的方法的另一實施例的流程示意圖。圖3為本發(fā)明參考文檔和編輯后文檔內(nèi)容匹配情況的簡化示意圖。6圖4為本發(fā)明根據(jù)增量文檔恢復編輯后文檔的方法的一實施例的流程示意圖。具體實施例方式下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。首先定義以下幾個基本概念,以便更好的理解本發(fā)明的實施例。參考文檔每次編輯前的文檔。編輯后文檔每次編輯后的文檔。增量文檔根據(jù)參考文檔對編輯后文檔增量分析后生成的新文檔。數(shù)據(jù)塊對文檔中的數(shù)據(jù)進行邏輯劃分,劃分成多個數(shù)據(jù)塊。例如以預設長度L進行劃分,可以將文檔數(shù)據(jù)劃分為多個長度為L的片段。在本發(fā)明中,根據(jù)數(shù)據(jù)塊所屬的文檔不同,可以分為所屬于參考文檔的參考數(shù)據(jù)塊和所屬于編輯后文檔的編輯后數(shù)據(jù)塊。如圖l所示,為本發(fā)明電子文檔編輯后生成增量文檔的方法的一實施例的流程示意圖。在本實施例中的增量文檔生成流程包括以下基本步驟步驟IOI、從參考文檔中將預設容量V的數(shù)據(jù)讀入內(nèi)存,并以預設長度L劃分讀入的數(shù)據(jù);步驟102、計算劃分出的每個參考數(shù)據(jù)塊對應的索引值,并將所述索引值與對應的參考數(shù)據(jù)塊進行關(guān)聯(lián);步驟103、從編輯后文檔中依次將預設長度L的編輯后數(shù)據(jù)塊讀入內(nèi)存,并計算對應的索引值;步驟104、將每次讀取的參考數(shù)據(jù)塊對應的索引值與讀取的各個編輯后數(shù)據(jù)塊對應的索引值進行比較;步驟105、判斷是否匹配,是則執(zhí)行步驟106,否則執(zhí)行步驟107;步驟106、將所述參考文檔匹配的位置以及匹配標記寫入增量文檔;步驟107、將所述編輯后文檔中不匹配段、不匹配長度以及不匹配標記寫入該增量文檔。在本實施例中,預設容量V可以根據(jù)編輯性文檔的一般大小進行設定,主要考慮到適當?shù)木彺嫒萘考忍岣呤褂眯剩植恢抡加眠^多的內(nèi)存開銷的因素。在另一實施例中,如果步驟101中參考文檔的容量低于預設容量V,則讀取所述參考文檔的數(shù)據(jù)直到結(jié)尾。預設長度L通常可以被設定為大于3的整數(shù)值。在后面的例子中為了方便介紹,預設容量V被設定為8MB,預設長度L被設定為128字節(jié),應注意的是,這里的設定值僅為方便后面舉例,不應理解為對預設容量和預設長度的具體限定。接下來舉例對上述實施例進行更詳細地說明,如圖2所示,為本發(fā)明電子文檔編輯后生成增量文檔的方法的另一實施例的流程示意圖。相比上一實施例,本實施例中加入了一些優(yōu)化的步驟,具體如下步驟201、打開參考文檔(文檔#1)、編輯后文檔(文檔#2),并創(chuàng)建增量文檔(文檔#3)。步驟202、從文檔#1讀取預設容量V(本實施例取8MB)數(shù)據(jù)入內(nèi)存,如果文檔弁1小于8MB,則直接讀取到文檔#1的結(jié)尾。步驟203、對從文檔#1讀入內(nèi)存的數(shù)據(jù)進行邏輯劃分,以預設長度L(本實施例取128字節(jié))劃分為多個參考數(shù)據(jù)塊,并計算每個參考數(shù)據(jù)塊的索引值,具體計算方法在下文說明。在劃分參考數(shù)據(jù)塊后,還對每個參考數(shù)據(jù)塊對應的索引值進行符合預設數(shù)據(jù)結(jié)構(gòu)的管理,以便進行索引值的比較。這里可采用的數(shù)據(jù)結(jié)構(gòu)包括樹、鏈表、Hash表等,在本實施例中采用一種搜索樹(例如Radix-Tree)進行管理,以便進行索引值的比較。步驟204、獲取文檔#2中尚未處理的前預設長度L(本實施例取128字節(jié))的數(shù)據(jù),即編輯后數(shù)據(jù)塊。步驟205、判斷是否能夠獲取到128字節(jié)的數(shù)據(jù),這種情況主要針對于是否訪問到文檔#2的結(jié)尾,是則執(zhí)行步驟206,否則執(zhí)行步驟216。步驟206、計算該編輯后數(shù)據(jù)塊的索引值(索引值#1),然后在搜索樹Radix-Tree中查找與該索引值相同的索引值(索引值#2)。步驟207、判斷是否有匹配的索引值,是則執(zhí)行步驟208,否則執(zhí)行步驟210。步驟208、對于荻取索引值#2對應的內(nèi)容,可能有多條,逐一比較直到找到內(nèi)容相同的塊或所有比較都完成。步驟209、判斷是否找到內(nèi)容完全匹配的內(nèi)容,是則執(zhí)行步驟211,否則執(zhí)行步驟210。步驟210、檢測不匹配內(nèi)容是否達到預設長度Lp(本實施例中取1MB),如果達到,則將該1MB的數(shù)據(jù)編碼,并寫入增量文檔#3,然后向后偏移l個字節(jié),并返回步驟204,如果未達到,則直接返回步驟204。步驟211、將編輯后文檔中不匹配段、不匹配長度以及不匹配標記寫入文檔#3,其中不匹配段即編碼后的不匹配的內(nèi)容。步驟212、將參考文檔匹配的位置以及匹配標記寫入文檔#3,編碼成數(shù)據(jù)塊記錄。步驟213、調(diào)整搜索樹Radix-Tree的內(nèi)容,清除內(nèi)存中參考文檔匹配的位置即匹配項前面(包括匹配項)的參考數(shù)據(jù)塊,并追加文檔#1中讀取未讀入的相應數(shù)量的數(shù)據(jù),并滿足預設容量V。如果所述參考文檔中未讀入的數(shù)據(jù)在追加后容量仍低于預設容量V,則讀取所述參考文檔的數(shù)據(jù)直到結(jié)尾。步驟214、是否到達文檔#2的結(jié)尾,是則執(zhí)行步驟216,否則執(zhí)行步驟215;步驟215、在文檔#2向后偏移128字節(jié),即一個編輯后數(shù)據(jù)塊,然后返回步驟204。步驟216、清除搜索樹Radix-Tree的內(nèi)容,將文檔#2剩余內(nèi)容編碼,寫入文檔#3,從而完成增量分析過程,生成增量文件。在上述實施例中,首先需要從參考文檔中讀取直到結(jié)尾或讀取8MB數(shù)據(jù)到內(nèi)存中,也就是說,內(nèi)存中最多保持8MB的參考比較數(shù)據(jù)。然后將每個參考數(shù)據(jù)塊按照一定的算法,計算出一個32位的值,并通過結(jié)構(gòu)體(或者類)將此值與塊序號聯(lián)系在一起,同時,將該結(jié)構(gòu)體(或者類)用數(shù)據(jù)結(jié)構(gòu)Radix-Tree管理起來(Radix-Tree是一種有較高效率的樹型結(jié)構(gòu)算法,能夠通過基值來進行快速檢索,在本發(fā)明中采用其它數(shù)據(jù)結(jié)構(gòu)管理也可以,比如鏈表、隊列、哈希表等)。對于將128字節(jié)的數(shù)據(jù)塊變成一個32位的值,計算方法可以有很多種,簡單的方法比如,將128字節(jié)數(shù)據(jù)都當成32位的數(shù),簡單相加,高于32位的進位拋棄,最后得到的就是一個32位的數(shù)字;復雜的方法比如計算出該128字節(jié)的MD5碼,得到128位數(shù)據(jù),然后將這128位數(shù)據(jù)分成4組,進行某種運算,比如異或。優(yōu)選的計算方式可以結(jié)合編輯后文件的使用辦法進行選擇,例如下列計算方法,即將128字節(jié)分成4組(A、B、C、D組),如表l表示(表中的數(shù)字是塊中字節(jié)的序號,以0代表第一個)。<table>tableseeoriginaldocumentpage10</column></row><table>表1塊分組方式將每組對應的字節(jié)相加(高于8位的進位拋棄或者用16位的數(shù)字類型,最后取低8位),每組得到一個8位的數(shù)據(jù),然后用如下算法得到一個32位的數(shù)據(jù),32位的結(jié)果=(A《24)+(B《16)+(C8)+D。在本實施例中,在索引值寬度的選擇上,對于32位計算機來說,優(yōu)選32位的數(shù)據(jù),這主要考慮到以下幾點首先大部分個人電腦(包括PC、筆記本、掌上設備)是32位機器,釆用32位比較常見;第二是當位數(shù)越多,管理索引的樹形結(jié)構(gòu)的層次結(jié)構(gòu)就越多,中間變量越大,則內(nèi)存消耗會更多的增加,訪問速度也會降低;第三是內(nèi)存中最大容許8MB的參考文檔內(nèi)容,那么至多只有216條記錄(223/27),對于32位的樣本空間的記錄來說,發(fā)生多條記錄基值相同的概率不算高。在前面提到的預設容量V的選擇上,如果內(nèi)存條件允許,增加更多的緩存通常對實際的應用來說會有更大的幫助,但還需要考慮到以下幾種因素第一,如果主要處理的是一般性的編輯性文檔,這些編輯性文檔都不會太大,一般都在幾KB到幾MB之間,偶爾才會有大于數(shù)十MB的文檔;第二,在設定預設容量V時,還需要考慮實際在內(nèi)存中的其它因素,比如數(shù)據(jù)結(jié)構(gòu)(例如Radix-Tree)的建立,再加上其它開銷,可能造成較多的內(nèi)存占用,因此不適宜選擇過大的預設容量V,以免占用太多內(nèi)存,影響用戶其它軟件的使用。在前面兩個實施例中,對于與索引值關(guān)聯(lián)的索引內(nèi)容,可以按以下方式進行處理即在搜索樹Radix-Tree的葉節(jié)點關(guān)聯(lián)一個鏈表,對應的鏈表掛接著所有相同索引值的參考數(shù)據(jù)塊。當檢索時發(fā)現(xiàn)有所要索引值的記錄時,編輯后文檔中的編輯后數(shù)據(jù)塊與鏈表中的對應的參考數(shù)據(jù)塊逐一進行比較分析,確認其內(nèi)容是完全一致,才會記錄它們的映射,索引值的目的包括兩個一是快速檢索可能匹配塊;二是縮小比較范圍。在本發(fā)明中,編輯后文檔是增量分析方法的主要對象,在增量文件生成流程中,編輯后文檔按字節(jié)進行偏移處理,例如,如果第n個字符為首字符的塊,不存在滿足條件的匹配塊,則檢查從n+l個字節(jié)開始的塊,依次類推;如果遇到匹配的塊,則記錄該塊在參考文檔中的位置及前面不匹配的內(nèi)容,并調(diào)整參考文檔建立的塊內(nèi)容,下一次編輯后文檔的塊從n+L字節(jié)開始。接下來,再說明一種可選的參考數(shù)據(jù)塊的退出機制,如圖3所示,為本發(fā)明參考文檔和編輯后文檔內(nèi)容匹配情況的簡化示意圖。在該示意圖中,編輯后文檔中共有5個塊內(nèi)容與參考文檔一致。如果備份文檔的#1塊找到匹配項后,參考文檔的#4塊從Radix-Tree中退出,然后把參考文檔#4塊及其前面的塊全部從緩存中去除,同時增加參考文檔后面的內(nèi)容(如果有的話),滿足緩存是8MB。這樣方式刪除掉了可能永遠沒有被匹配的參考文檔的#0塊和#3塊,這種方式確實可能導致某些編輯后數(shù)據(jù)塊(#2塊)失去匹配的機會,但是根據(jù)文檔編輯的特性,經(jīng)常做的操作更多在于插入、替換、刪除等,而內(nèi)容倒換相對比較少,編輯后文檔與參考文檔相同的內(nèi)容通常在物理順序存在一致性,即以兩個文檔的匹配點為參考,設想備份文檔的匹配塊都落在參考文檔的匹配點的后面。經(jīng)過如此處理之后,那么從圖3可以看出,編輯后文檔的#2和#10塊都將因為參考文檔緩存的退出而失去匹配機會;而實際能夠匹配到的是備份文檔的#1、#3、#8和#10塊。盡管這樣操作的方式將會損失部分匹配項,但建立起了參考文檔緩存的退出機制,適應了更大容量的參考文檔的要求,進而增強了系統(tǒng)的可用性。在本實施例中,對編輯后文檔要計算編輯后數(shù)據(jù)塊對應的32位值,這里需要考慮計算32位值的效率,這將在一定程度上影響系統(tǒng)的易用性。下來給出了一種編輯后數(shù)據(jù)塊的索引值的計算方法的例子,首先將128字節(jié)的塊內(nèi)容分成4組,將每組相加,如下所示a=ai=4n(n=0,l,2...31)i=4n+l(n=0,l,2...31)i=4n+2(n=0,l,2...31)d=&i=4n+3(n=0,l,2...31)上述塊的分組計算方法中,ki代表了組內(nèi)的每個字節(jié)。那么我們設想一下,如果備份文檔的第n個字節(jié)為首的塊不能匹配,但已經(jīng)計算出了32位值,假設為An、Bn、Cn、Dn,那么就需要考察第n+1個字節(jié)為首的塊的32位值,即計算Aw、Bn+1、Cn+1、Dn+1。為簡單起見,將第n個字節(jié)編為序號0,則能得到第n字節(jié)為首的塊的32位值計算表(如表2所示)和第n+l字節(jié)為首的的32位值計算表(如表3所示)。<table>tableseeoriginaldocumentpage13</column></row><table>表3第n+l字節(jié)為首的塊計算32位值通過這兩張表,我們很容易得出這兩組32位值得關(guān)系,即An+1二BnBn+i=CnDn+i=An-k0+k128需要特別提示的是,D^的計算中,可以直接計算加法和減法(按無符號值進行計算),只要取低8位即可;如果想避免歧義,有關(guān)A、B、C、D的計算可以采用16或32位整型值進行,最后塊的32位值依次取A、B、C、D各自的低8位即可(32個8位值最大是OxlFEO)。通過這種算法,對于不匹配的內(nèi)容,其計算量將非常小,只有一個加運算和一個減運算,如果A、B、C、D用數(shù)組或指針組,則再加上一個下標(或指)針偏移,如果A、B、C、D用直接賦值方式,則是加上3個賦值運算,所以整體上將會是一個極小的運算代價;另外就是在Radix-Tree上的匹配比較運算,所以,Radix-Tree數(shù)的基值位數(shù)不宜過大。在本實施例的增量文檔中,主要包括兩部分基本內(nèi)容,一部分是匹配段,一部分是不匹配段。對于匹配段,可以包含以下二元組<匹配標記,參考文檔內(nèi)匹配的位置(即偏移量)>。參考文檔的緩存設計為8MB,共216個塊,且這些塊在參考文件中的位置是可以計算出來的,所以,參考文檔內(nèi)的偏移只需要16位,即2個字節(jié)就能表示。對于不匹配段,不匹配段的長度可能是任意值,則其包含的內(nèi)容是<不匹配標記,不匹配長度,不匹配內(nèi)容>,如果允許不匹配長度Lp為無限大(即遠大于實際文件大小),我們很容易得出如下增量文件模型不匹配段的后面要么是文件結(jié)尾,要么是匹配段。匹配標記和不匹配標記均只需1位就能表示,在實際應用中,匹配標記和不匹配標記可以通過取不同值的同一字節(jié)進行標識。考慮到長度溢出的可能,可以在將不匹配段寫入增量文檔時,采用劃分段的方式,比如以64KB為最大的段(即預設不匹配長度Lp),長度大于64KB則分成多個不匹配段,這種方式十分簡潔,且不需要多次從磁盤讀取。綜合上述,不匹配段的采用二元組后續(xù)跟隨不匹配內(nèi)容,即l位的不匹配標記、16位的長度、不匹配數(shù)據(jù)。上述分析了匹配段(塊)和不匹配段的表示方法,理論上,其前綴標記都只需要17位就能表示,但考慮到匹配標記要求后續(xù)的內(nèi)容必須做位移處理,比如匹配段的偏移標記,不匹配段的長度標記和不匹配內(nèi)容,這樣會犧牲掉大量的CPU處理能力,因此優(yōu)選將匹配標記設計為l個字符寬度,即8位,這樣后續(xù)的內(nèi)容就不需要做位移處理。這樣,前綴標記便都是3個字節(jié)。這樣也滿足了網(wǎng)絡傳輸?shù)囊?。下面給出兩種極限情況下的效率分析,第一種是完全不匹配;另一種是備份文件內(nèi)容完全被匹配上(比如文件中刪除了部分內(nèi)容,且恰好滿足邊界和長度都是128的倍數(shù))。14對于完全不匹配的情況,它會增加存儲空間和網(wǎng)絡流量,那么分析其造成的損失是多大。根據(jù)前面所設計,每64KB會增加3字節(jié)的二元組,所以,其增量分析效率(減少量)為e=-3B/64KB*100%-0.0046%很顯然,相對于編輯后文檔,這點額外的數(shù)據(jù)量是微不足道的。如果編輯后文檔與參考文檔幾乎完全匹配,那么每128字節(jié)只需要存儲和傳輸3個字節(jié)就能表示,其效率是非常高的,增量分析效率(減少量)為e=(128-3)B/128B*100%97.66%比較這兩組數(shù)據(jù),在極壞的情況下,只增加了大約0.0046%的大小,而最好的情況,則能節(jié)約97.66%存儲和網(wǎng)絡帶寬。除此之外,在其他實施例中,還可以進行以下步驟的優(yōu)化1、如果參考文檔和編輯后文檔中任意一個遠小于預設容量V,例如不到4KB,則可以不進行增量分析,因為這樣的文檔分析的價值不大。2、如果參考文檔已經(jīng)到了結(jié)尾,或者參考文檔的容量遠小于編輯后文檔的容量,例如只是編輯后文檔未處理的10%左右,則放棄繼續(xù)處理,因為很可能最后幾個已經(jīng)不會匹配,而為了增量分析,還必須花費不少CPU計算能力,且很可能計算出來的效果是將備份文檔略有增加。3、識別文檔是否為固定內(nèi)容在備份環(huán)境下,首次備份的文件都當作固定內(nèi)容(避免參考文件的建立),如果文件一直未被編輯,則無需傳輸和另外備份。4、主動識別可否增量分析在異地(指存儲或者PC)備份環(huán)境下,第一次不需要設置參考文件,如果在下一次備份過程中,發(fā)現(xiàn)某個文檔已經(jīng)被編輯,試圖計算其增量文件,并建立參考文件作為副本),如果連續(xù)多次增量文件沒有產(chǎn)生效益或者效益很小,則將其作為不可增量分析文件,避免后續(xù)處理時候浪費計算資源。根據(jù)前述各實施例得到的增量文件可以用來備份、網(wǎng)絡傳輸?shù)?,如果需要恢復編輯后文檔,則可以通過圖4的實施例實現(xiàn),具體包括以下步驟步驟301、依次識別增量文檔中的匹配標記及不匹配標記;步驟302、對于不匹配標記,則從增量文檔中讀出該不匹配標記對應的不匹配段,并寫入編輯后文檔;步驟303、對于匹配標記,則計算出該匹配標記在參考文檔中的位置,并從參考文檔中讀取從該位置起預設長度L的參考數(shù)據(jù)塊,并寫入編輯后文檔。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應當說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其限制;盡管參照較佳實施例對本發(fā)明進行了詳細的說明,所屬領(lǐng)域的普通技術(shù)人員應當理解依然可以對本發(fā)明的具體實施方式進行修改或者對部分技術(shù)特征進行等同替換;而不脫離本發(fā)明技術(shù)方案的精神,其均應涵蓋在本發(fā)明請求保護的技術(shù)方案范圍當中。權(quán)利要求1、一種電子文檔編輯后生成增量文檔的方法,包括以下步驟從參考文檔中將預設容量V的數(shù)據(jù)讀入內(nèi)存,并以預設長度L劃分讀入的數(shù)據(jù);計算劃分出的每個參考數(shù)據(jù)塊對應的索引值,并將所述索引值與對應的參考數(shù)據(jù)塊進行關(guān)聯(lián);從編輯后文檔中依次將預設長度L的編輯后數(shù)據(jù)塊讀入內(nèi)存,并計算對應的索引值;將每次讀取的參考數(shù)據(jù)塊對應的索引值與讀取的各個編輯后數(shù)據(jù)塊對應的索引值進行比較,如果匹配則將所述參考文檔匹配的位置以及匹配標記寫入增量文檔,否則將所述編輯后文檔中不匹配段、不匹配長度以及不匹配標記寫入該增量文檔。2、根據(jù)權(quán)利要求1所述的電子文檔編輯后生成增量文檔的方法,其中如果參考文檔的容量低于預設容量V,則讀取所述參考文檔的數(shù)據(jù)直到結(jié)尾。3、根據(jù)權(quán)利要求1所述的電子文檔編輯后生成增量文檔的方法,其中在計算從參考文檔中劃分出的每個參考數(shù)據(jù)塊對應的索引值之后,還包括對所述每個參考數(shù)據(jù)塊對應的索引值進行符合預設數(shù)據(jù)結(jié)構(gòu)的管理,以便進行索引值的比較。4、根據(jù)權(quán)利要求3所述的電子文檔編輯后生成增量文檔的方法,的管理的操作具體為釆用搜索樹對所述每個參考數(shù)據(jù)塊對應的索引值進行管理。5、根據(jù)權(quán)利要求4所述的電子文檔編輯后生成增量文檔的方法,其中所述搜索樹還管理著具有相同索引值的每個數(shù)據(jù)塊,在所述將每次從所述編輯后文檔中讀取的數(shù)據(jù)塊對應的索引值與從所述參考文檔中讀取的各個數(shù)據(jù)塊對應的索引值進行比較之后,如果索引值相同,的每個數(shù)據(jù)塊進行逐一比較,判斷內(nèi)容是否完全匹配。6、根據(jù)權(quán)利要求1所述的電子文檔編輯后生成增量文檔的方法,應的索引值匹配時,清除內(nèi)存中所述參考文檔匹配的位置及該位置之前的數(shù)據(jù),并追加所述參考文檔中未讀入的數(shù)據(jù),并滿足預設容量V,如果所述參考文檔中未讀入的數(shù)據(jù)在追加后容量仍低于預設容量V,則讀取所述參考文檔的數(shù)據(jù)直到結(jié)尾。7、根據(jù)權(quán)利要求1所述的電子文檔編輯后生成增量文檔的方法,其中在將所述編輯后文檔中不匹配段、不匹配長度以及不匹配標記寫入該增量文檔時,如果不匹配長度大于預設不匹配長度Lp時,則按照所述預設不匹配長度Lp分為多個不匹配段,并寫入該增量文檔。8、根據(jù)權(quán)利要求2所述的電子文檔編輯后生成增量文檔的方法,其中如果參考文檔的容量遠低于預設容量V,則退出生成增量文檔的操作。9、根據(jù)權(quán)利要求2所述的電子文檔編輯后生成增量文檔的方法,其中如果參考文檔的容量遠低于編輯后文檔的容量,則退出生成增量文檔的操作。10、一種根據(jù)增量文檔恢復編輯后文檔的方法,包括依次識別增量文檔中的匹配標記及不匹配標記,對于不匹配標記,則從增量文檔中讀出該不匹配標記對應的不匹配段,并寫入編輯后文檔;對于匹配標記,則計算出該匹配標記在參考文檔中的位置,并從參考文檔中讀取從該位置起預設長度L的參考數(shù)據(jù)塊,并寫入編輯后文檔。全文摘要本發(fā)明涉及一種電子文檔編輯后生成增量文檔的方法,包括從參考文檔中將數(shù)據(jù)讀入內(nèi)存并劃分;計算劃分出的參考數(shù)據(jù)塊對應的索引值,并進行關(guān)聯(lián);依次將編輯后數(shù)據(jù)塊讀入內(nèi)存,并計算對應的索引值;將參考數(shù)據(jù)塊對應的索引值與編輯后數(shù)據(jù)塊對應的索引值進行比較,匹配則將參考文檔匹配的位置以及匹配標記寫入增量文檔,否則將編輯后文檔中不匹配段、不匹配長度以及不匹配標記寫入該增量文檔。本發(fā)明還涉及一種根據(jù)增量文檔恢復編輯后文檔的方法。本發(fā)明通過對編輯前后的兩個文檔進行比較建立映射關(guān)系,再根據(jù)記錄的映射關(guān)系生成增量文檔,在數(shù)據(jù)存儲、歸檔、備份等方面只需要處理增量文檔來替代處理編輯后文檔,以次減少存儲或網(wǎng)絡傳輸?shù)呢摀?。文檔編號G06F11/14GK101482839SQ20091007836公開日2009年7月15日申請日期2009年2月26日優(yōu)先權(quán)日2009年2月26日發(fā)明者楊耀敏,蔣建平申請人:北京世紀互聯(lián)寬帶數(shù)據(jù)中心有限公司