專利名稱:一種在計算機存儲中識別重復(fù)數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計算機數(shù)據(jù)識別方法,尤其是涉及一種在計算機數(shù)據(jù)存儲、歸檔及備份中 識別重復(fù)數(shù)據(jù)的方法。
背景技術(shù):
目前,隨著我國信息化程度的提高,越來越多的企事業(yè)單位和組織利用建立本單位計算機 局域網(wǎng)絡(luò)來使其工作人員更好地共享信息與協(xié)同工作,然而,利用網(wǎng)絡(luò)辦公環(huán)境常常使內(nèi)容 相同的一份電子數(shù)據(jù)或以相同或不同的文件名或以相同或不同的文件形式(如郵件、工作文 檔等)在多臺計算機中保存。我們知道, 一個局域網(wǎng)內(nèi)的所有客戶端的數(shù)據(jù)通常會定期地在 服務(wù)器中集中歸檔、存儲或者進行備份。這樣在歸檔、存儲或者備份時,會產(chǎn)生大量完全重 復(fù)的數(shù)據(jù)。為了解決計算機重復(fù)數(shù)據(jù)的識別問題,現(xiàn)有技術(shù)通常將待處理數(shù)據(jù)的內(nèi)容分割為很多長度 固定的子數(shù)據(jù)塊,并為每一子數(shù)據(jù)塊生成一個相應(yīng)的標識符,然后保存數(shù)據(jù)塊內(nèi)容的同時保 存每一塊數(shù)據(jù)的標識符,再通過將數(shù)據(jù)塊的標識符在服務(wù)器中搜索標識符數(shù)據(jù)庫,判斷要存 儲或傳輸?shù)淖訑?shù)據(jù)塊是否已存在,如果存在,則判斷其為重復(fù)的數(shù)據(jù);如果不存在,則判斷 其為不重復(fù)的數(shù)據(jù)。然而,上述技術(shù)的不足之處在于,由于不同類型的文件的儲存結(jié)構(gòu)是完全不同的,例如文 本文件的存儲結(jié)構(gòu)是以原內(nèi)容方式保存,而字處理器軟件生成的文件則以對象的半結(jié)構(gòu)化方 式保存,數(shù)據(jù)庫系統(tǒng)生成的數(shù)據(jù)庫文件則以塊狀的結(jié)構(gòu)化方式保存,如果一律采用相同長度 分割待處理數(shù)據(jù),而不考慮不同類型數(shù)據(jù)的存儲結(jié)構(gòu)的差異,則在判斷分割后的子數(shù)據(jù)塊是 否為重復(fù)數(shù)據(jù)時常常會出現(xiàn)識別率不高的問題。發(fā)明內(nèi)容為了提高計算機存儲中重復(fù)數(shù)據(jù)的識別率,本發(fā)明提供了一種根據(jù)待處理數(shù)據(jù)的類型將 其分割為長度相等或不相等子數(shù)據(jù)塊的方法,并通過以下技術(shù)方案實現(xiàn)判斷待處理數(shù)據(jù)的類型;根據(jù)判斷出來的不同數(shù)據(jù)類型調(diào)用不同的數(shù)據(jù)分割器(即本發(fā) 明提供的一組程序模塊,其功能是分析待處理數(shù)據(jù)的存儲結(jié)構(gòu),并根據(jù)特定的存儲結(jié)構(gòu)將該 類型的待處理數(shù)據(jù)生成與該數(shù)據(jù)的存儲結(jié)構(gòu)相匹配的子數(shù)據(jù)塊)將待處理數(shù)據(jù)分割為若干長 度相同或不等的子數(shù)據(jù)塊;為每一子數(shù)據(jù)塊生成一個相應(yīng)的標識符;在存儲器中查找是否存 在相同的標識符;存在相同標識符,則為重復(fù)數(shù)據(jù);不存在相同標符,則不為重復(fù)數(shù)據(jù)。本發(fā)明的具體步驟是將待處理的計算機數(shù)據(jù)分為文件數(shù)據(jù)和應(yīng)用系統(tǒng)數(shù)據(jù)兩種類型;當待處理數(shù)據(jù)為文件數(shù)據(jù)類型時,根據(jù)文件的擴展名從配置文件中査找是否存在與其對 應(yīng)的數(shù)據(jù)分割器,若不存在該類型的數(shù)據(jù)分割器,則使用通用數(shù)據(jù)分割器(是一種無對應(yīng)類 型的數(shù)據(jù)分割器,其功能是將待處理數(shù)據(jù)分割成長度相等的若干子數(shù)據(jù)塊)將待處理數(shù)據(jù)分 割為大小相等且一定的子數(shù)據(jù)塊;若存在相應(yīng)類型的數(shù)據(jù)分割器,則獲得該數(shù)據(jù)分割器,并
由該數(shù)據(jù)分割器將待處理的文件數(shù)據(jù)分割為與該文件數(shù)據(jù)的存儲結(jié)構(gòu)相匹配的子數(shù)據(jù)塊;當待處理數(shù)據(jù)為應(yīng)用系統(tǒng)數(shù)據(jù)類型時,直接獲得該應(yīng)用系統(tǒng)的數(shù)據(jù)類型,并從配置文件 中査找是否存在與其對應(yīng)的數(shù)據(jù)分割器,若不存在該類型的數(shù)據(jù)分割器,則使用通用數(shù)據(jù)分 割器將待處理數(shù)據(jù)分割為大小相等且一定的子數(shù)據(jù)塊;若存在相應(yīng)類型的數(shù)據(jù)分割器,則獲 得該數(shù)據(jù)分割器,并由該數(shù)據(jù)分割器將待處理數(shù)據(jù)分割為與該應(yīng)用系統(tǒng)數(shù)據(jù)的存儲結(jié)構(gòu)相匹 配的子數(shù)據(jù)塊;如果存在網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)那闆r,可在數(shù)據(jù)傳輸前將待處理數(shù)據(jù)分割為若干子數(shù)據(jù)塊,并 將這些子數(shù)據(jù)塊逐個傳輸?shù)浇邮斩?;或者將待處理?shù)據(jù)傳輸?shù)浇邮斩撕?,再根?jù)傳輸?shù)拇?理數(shù)據(jù)類型在接收端査找是否存在相應(yīng)的數(shù)據(jù)分割器,并將待處理數(shù)據(jù)分割成若干子數(shù)據(jù)塊。與現(xiàn)有技術(shù)相比,本發(fā)明能有效地提高計算機中重復(fù)數(shù)據(jù)的識別率,尤其能提高對結(jié)構(gòu) 化重復(fù)數(shù)據(jù)的識別率。
圖1為某待處理數(shù)據(jù)的存儲結(jié)構(gòu)及其對應(yīng)的分割的方式圖2為獲得文件類型的數(shù)據(jù)分割器的流程3為獲是應(yīng)用系統(tǒng)類型的數(shù)據(jù)分割器的流程4為在網(wǎng)絡(luò)傳輸前識別重復(fù)數(shù)據(jù)的流程5為在網(wǎng)絡(luò)傳輸后識別重復(fù)數(shù)據(jù)的流程圖具體實施方式
下面結(jié)合附圖與具體實施方式
對本發(fā)明作進一步詳細描述如圖1所示,如果待處理數(shù)據(jù)釆用結(jié)構(gòu)化的存儲方式保存,且假設(shè)其文件頭長度為16KB, 其它數(shù)據(jù)塊(塊1、塊2、塊3、塊4…塊n)長度固定為8KB,則本發(fā)明提供的與該待處理 數(shù)據(jù)對應(yīng)的數(shù)據(jù)分割器分析出該數(shù)據(jù)的存儲結(jié)構(gòu)為文件頭16KB,其余數(shù)據(jù)塊8KB。數(shù)據(jù) 分割器即將待處理數(shù)據(jù)的第一塊子數(shù)據(jù)塊分割為16KB,其余的字數(shù)據(jù)塊則固定分割為8KB。 在將待處理數(shù)據(jù)塊分割為子數(shù)據(jù)塊時,數(shù)據(jù)分割器并不重新在內(nèi)存中創(chuàng)建新的子數(shù)據(jù)塊,而 是在待處理數(shù)據(jù)中采用位置參數(shù)0, 1, 2, 3, 4, 5...n來表示任一子數(shù)據(jù)塊的開始位置與結(jié) 束位置,上層調(diào)用者通過位置參數(shù)在原數(shù)據(jù)塊中定位到子數(shù)據(jù)塊。如圖2所示,待處理數(shù)據(jù)為文件數(shù)據(jù)類型時,首先獲得其文件名,然后根據(jù)文件名的擴 展名類型從配置文件splitter.dat中查找是否存在相應(yīng)類型的數(shù)據(jù)分割器,若不存在相應(yīng)類型 的數(shù)據(jù)分割器,則使用通用數(shù)據(jù)分割器替代。如圖3所示,待處理數(shù)據(jù)為應(yīng)用系統(tǒng)數(shù)據(jù)類型時,首先獲得應(yīng)用系統(tǒng)的類型,然后根據(jù) 該類型從配置文件splitter.dat中查找是否存在相應(yīng)的數(shù)據(jù)分割器,若不存在相應(yīng)的數(shù)據(jù)分割 器,則使用通用數(shù)據(jù)分割器替代。圖4和圖5表示在存在網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)拇鎯?、歸檔或備份時,可以在待處理數(shù)據(jù)傳輸前 或待處理數(shù)據(jù)傳輸后將待處理數(shù)據(jù)根據(jù)其數(shù)據(jù)類型分割為子數(shù)據(jù)塊。圖4所示的方法是對待處理數(shù)據(jù)在傳輸前進行數(shù)據(jù)分塊,其具體步驟是數(shù)據(jù)處理系統(tǒng)首先判斷其是否為文件數(shù)據(jù),如果是文件數(shù)據(jù),則根據(jù)圖2所示方法獲得
數(shù)據(jù)分割器,并將文件的內(nèi)容從硬盤中裝載到內(nèi)存中;如果是應(yīng)用系統(tǒng)數(shù)據(jù),則根據(jù)圖3所 示方法獲得數(shù)據(jù)分割器;將待處理數(shù)據(jù)傳入數(shù)據(jù)分割器并由數(shù)據(jù)分割器將待處理數(shù)據(jù)根分割為若干與其存儲結(jié)構(gòu) 相匹配的子數(shù)據(jù)塊,分割算法由獲得的數(shù)據(jù)分割器決定,可以是將待處理數(shù)據(jù)分割成長度相 等的子數(shù)據(jù)塊,也可以是將待處理數(shù)據(jù)分割成長度不相等的子數(shù)據(jù)塊;將每一子數(shù)據(jù)塊逐一按如下方式處理使用散列算法為子數(shù)據(jù)塊生成一個標識符,散列 算法可為MD5或SHA1、 SHA2等,該標識符與子數(shù)據(jù)塊是唯一對應(yīng)關(guān)系,再將該標識符發(fā) 送到接收存儲的目標計算機;目標計算機收到標識符后,再根據(jù)標識符在存儲器上査找是否已經(jīng)存在該標識符;如果不存在相同標識符,則在傳輸端將子數(shù)據(jù)塊發(fā)送到目標計算機;目標計算機接收子數(shù)據(jù)塊,將其保存在存儲器上,同時保存其位置及標識符以便再次查找;'如果存在相同標識符,則表明子數(shù)據(jù)塊已經(jīng)在存儲器上保存,則在目標計算機上僅保存 該標識符對應(yīng)的子數(shù)據(jù)塊在存儲器的位置,以避免相同內(nèi)容的子數(shù)據(jù)塊的再次傳輸以及存儲。 圖5所示的方法是對待處理數(shù)據(jù)在傳輸后進行數(shù)據(jù)分塊,其具體步驟是 對于待處理數(shù)據(jù),首先判斷其是否為文件數(shù)據(jù),如果是文件數(shù)據(jù),則根據(jù)圖2所示方法 獲得數(shù)據(jù)塊分割器,并將文件的內(nèi)容從硬盤中裝載到內(nèi)存中;如果是應(yīng)用系統(tǒng)數(shù)據(jù),則根據(jù) 圖3所示方法獲得數(shù)據(jù)塊分割器;將待處理數(shù)據(jù)及相應(yīng)的數(shù)據(jù)分割器類型發(fā)送到用于接收存儲的目標計算機; 目標計算機接收到待處理數(shù)據(jù)及其對應(yīng)的數(shù)據(jù)分割器類型后,首先根據(jù)數(shù)據(jù)分割器的類 型創(chuàng)建數(shù)據(jù)分割器,再將接收到的待處理數(shù)據(jù)傳入數(shù)據(jù)分割器并將其分割為若干與該數(shù)據(jù)的 存儲結(jié)構(gòu)匹配的子數(shù)據(jù)塊,分割算法由獲得的待處理數(shù)據(jù)的數(shù)據(jù)分割器決定??梢詫⒋幚?數(shù)據(jù)分割成長度相等子數(shù)據(jù)塊,也可以將待處理數(shù)據(jù)塊分割長度不相等的子數(shù)據(jù)塊。'將每一子數(shù)據(jù)塊逐一按如下方式處理使用散列算法為子數(shù)據(jù)塊生成一個標識符,散列 算法可為MD5或SHA1、 SHA2等,該標識符與子數(shù)據(jù)塊是唯一對應(yīng)關(guān)系,然后根據(jù)該標識符在目標計算機的存儲器上査找是否已經(jīng)存在該標識符;不存在相同標識符,則將子數(shù)據(jù)塊保存在存儲器上,同時保存其位置及標識符,以便下次査找;如果存在相同標識符,則表明該子數(shù)據(jù)塊已經(jīng)在目標計算機的存儲器上保存,僅獲得該 標識符對應(yīng)的子數(shù)據(jù)塊在存儲器的位置并保存,以避免了相同內(nèi)容的子數(shù)據(jù)塊再次存儲。
權(quán)利要求
1、一種在計算機存儲中識別重復(fù)數(shù)據(jù)的方法,其特征為以下步驟判斷待處理數(shù)據(jù)的類型;根據(jù)判斷出來的不同數(shù)據(jù)類型調(diào)用不同的數(shù)據(jù)分割器將待處理數(shù)據(jù)分割為若干子數(shù)據(jù)塊;為每一子數(shù)據(jù)塊生成一個相應(yīng)的標識符;在存儲器中查找是否存在相同的標識符;存在相同標識符,則為重復(fù)數(shù)據(jù);不存在相同標符,則不為重復(fù)數(shù)據(jù)。
2、 根據(jù)權(quán)利要求l所述的一種在計算機存儲中識別重復(fù)數(shù)據(jù)的方法,其特征是將待處理的計 算機數(shù)據(jù)分為文件數(shù)據(jù)和應(yīng)用系統(tǒng)數(shù)據(jù)兩種類型;
3、 根據(jù)權(quán)利要求2所述的一種在計算機存儲中識別重復(fù)數(shù)據(jù)的方法,當待處理數(shù)據(jù)為文件數(shù) 據(jù)類型時,根據(jù)文件的擴展名獲得對應(yīng)的數(shù)據(jù)分割器,若不存在該類型的數(shù)據(jù)分割器,則使 用通用類型的數(shù)據(jù)分割器;若存在相應(yīng)類型的數(shù)據(jù)分割器,則根據(jù)該數(shù)據(jù)分割器將待處理的 文件數(shù)據(jù)分割為若干子數(shù)據(jù)塊;當待處理數(shù)據(jù)為應(yīng)用系統(tǒng)數(shù)據(jù)類型時,獲得該應(yīng)用系統(tǒng)的數(shù)據(jù)類型,并根據(jù)數(shù)據(jù)類型獲得對 應(yīng)的數(shù)據(jù)分割器,若不存在該類型的數(shù)據(jù)分割器,則使用通用類型的數(shù)據(jù)分割器;若存在相 應(yīng)類型的數(shù)據(jù)分割器,則根據(jù)該數(shù)據(jù)分割器將待處理數(shù)據(jù)分割為若干子數(shù)據(jù)塊;
4、 根據(jù)權(quán)利要求l所述的一種在計算機存儲中識別重復(fù)數(shù)據(jù)的方法,其特征是根據(jù)待處理數(shù) 據(jù)的類型將一塊數(shù)據(jù)塊分割為長度相等且一定的若干子數(shù)據(jù)塊或者長度不等的若干子數(shù)據(jù) 塊;
5、 根據(jù)權(quán)利要求4所述的一種在計算機存儲中識別重復(fù)數(shù)據(jù)的方法,其特征是若根據(jù)待處理 數(shù)據(jù)的類型將數(shù)據(jù)塊分割為長度相等且一定的若干子數(shù)據(jù)塊,則這些子數(shù)據(jù)塊的長度由待處 理數(shù)據(jù)類型的數(shù)據(jù)格式或存放該數(shù)據(jù)類型的文件格式?jīng)Q定;若根據(jù)待處理數(shù)據(jù)的類型將其分 割為長度不等的若干子數(shù)據(jù)塊,則這些子數(shù)據(jù)塊的長度由待處理數(shù)據(jù)類型的數(shù)據(jù)格式或存放 該數(shù)據(jù)類型的文件格式?jīng)Q定。
6、 根據(jù)權(quán)利要求1所述的一種在計算機存儲中識別重復(fù)數(shù)據(jù)的方法,其特征是如果存在網(wǎng) 絡(luò)數(shù)據(jù)傳輸?shù)那闆r,則在數(shù)據(jù)傳輸前將待處理數(shù)據(jù)分割為若干子數(shù)據(jù)塊,并將這些子數(shù)據(jù)塊 逐個傳輸?shù)浇邮斩耍换蛘邔⒋幚頂?shù)據(jù)傳輸?shù)浇邮斩撕?,再根?jù)傳輸?shù)拇幚頂?shù)據(jù)類型在接 收端獲得相應(yīng)的數(shù)據(jù)分割器,并根據(jù)獲得的數(shù)據(jù)分割器將待處理數(shù)據(jù)分割成若干子數(shù)據(jù)塊。
全文摘要
本發(fā)明公開了一種在計算機數(shù)據(jù)存儲中根據(jù)待處理數(shù)據(jù)的類型來識別是否存在重復(fù)數(shù)據(jù)的方法,該方法旨在解決計算機存儲中對重復(fù)數(shù)據(jù)的識別問題,其特征是利用待處理數(shù)據(jù)的類型將其分割為長度不等的子數(shù)據(jù)塊并對每一子數(shù)據(jù)塊生成一個特定標識符來識別是否存在重復(fù)數(shù)據(jù)。本發(fā)明通常在計算機數(shù)據(jù)歸檔、存儲及備份中用來識別完全重復(fù)的數(shù)據(jù)并僅保存其中一份而忽略其余,以達到提高計算機存儲空間的有效利用率。
文檔編號G06F17/30GK101158954SQ20071004790
公開日2008年4月9日 申請日期2007年11月7日 優(yōu)先權(quán)日2007年11月7日
發(fā)明者賀鴻富 申請人:上海愛數(shù)軟件有限公司