專利名稱:支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)區(qū)塊的查詢方法,特別涉及一種支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法。
背景技術(shù):
重復(fù)數(shù)據(jù)刪除是一種數(shù)據(jù)縮減技術(shù),通常用于基于磁盤的備份系統(tǒng),主要目的在于減少存儲系統(tǒng)中使用的存儲容量。它的工作方式是在某個時間周期內(nèi)查找不同文件中不同位置的可變大小的重復(fù)數(shù)據(jù)塊。重復(fù)的數(shù)據(jù)塊用指示符取代。由于存儲系統(tǒng)中總是充斥著大量的冗余數(shù)據(jù)。為了解決這個問題,節(jié)省還多空間,“重復(fù)刪除”技術(shù)便順理成章地成了人們關(guān)注的焦點。采用“重復(fù)刪除”技術(shù)可以將存儲的數(shù)據(jù)縮減為原來的1/20,從而讓出還多的備份空間,不僅可以使存儲系統(tǒng)上的備份數(shù)據(jù)保存還長的時間,而且還可以節(jié)約離線存儲時所需的大量的帶寬。為能達到數(shù)據(jù)完整保存的目的,所以在進行重復(fù)數(shù)據(jù)刪除的過程中,會對輸入文件進行切分的處理。輸入文件在經(jīng)過切分處理后會產(chǎn)生多個數(shù)據(jù)區(qū)塊。為了能有效管理數(shù)據(jù)區(qū)塊,所以在進行切分的過程中會利用索引文件來記錄所有的數(shù)據(jù)區(qū)塊的各項存儲信肩、ο客戶端對整個輸入文件進行了切分處理(定長或者變長)后,隨即產(chǎn)生數(shù)據(jù)區(qū)塊相應(yīng)的哈希值。隨后客戶端向服務(wù)端發(fā)出查詢請求,使用哈希值向服務(wù)端訊問是否已經(jīng)存在有相同的哈希值。服務(wù)端會對每次查詢請求在哈希索引表中進行搜索,然后通過網(wǎng)絡(luò)返回查詢結(jié)果。請參考圖1所示,其為現(xiàn)有技術(shù)的查詢數(shù)據(jù)區(qū)塊的示意圖。當客戶端110查詢的數(shù)據(jù)量非常大時,哈希索引表也會隨之劇增,有可能出現(xiàn)服務(wù)端120內(nèi)存不足以存放哈希索引表,這樣的話哈希索引表就要涉及到從文件存取速度較慢的存儲設(shè)備進行查詢,將會極大的拖緩整個系統(tǒng)的運行速度。
發(fā)明內(nèi)容
鑒于以上的問題,本發(fā)明所要解決的技術(shù)問題在于提供一種支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法,應(yīng)用在經(jīng)過重復(fù)數(shù)據(jù)刪除程序所產(chǎn)生的多筆數(shù)據(jù)區(qū)塊,并對數(shù)據(jù)區(qū)塊進行查詢的處理,進而提高數(shù)據(jù)區(qū)塊的查詢速度。為達到上述目的,本發(fā)明所揭露的支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法包括以下步驟在服務(wù)端中儲存哈希索引列表,在哈希索引列表中記錄多組哈希值;客戶端中加載輸入文件,并產(chǎn)生相應(yīng)輸入文件的數(shù)據(jù)區(qū)塊與相應(yīng)每一數(shù)據(jù)區(qū)塊的哈希值;客戶端向服務(wù)端發(fā)送查詢請求,在查詢請求中記錄相應(yīng)數(shù)據(jù)區(qū)塊的哈希值,用以向服務(wù)端查詢是否存在有相同的哈希值;當服務(wù)端的哈希索引列表中未儲存哈希值,則服務(wù)端向客戶端發(fā)送儲存要求,用以將哈希值所相應(yīng)的數(shù)據(jù)區(qū)塊傳送至服務(wù)端中儲存,并且服務(wù)端將所接收到的哈希值依序加入哈希索引列表中;對哈希索引列表中的哈希值建立相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索弓丨列表,并在關(guān)聯(lián)數(shù)據(jù)索引列表中記錄哈希值相關(guān)的其它哈希值;當服務(wù)端中儲存哈希值,則服務(wù)端根據(jù)哈希值將相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表中的哈希值一并返回給客戶端;客戶端下一次查詢數(shù)據(jù)區(qū)塊的哈希值時,客戶端從所接收的關(guān)聯(lián)數(shù)據(jù)索引列表查詢是否已存在哈希值;當客戶端所接收的關(guān)聯(lián)數(shù)據(jù)索引列表中已存在哈希值,則由關(guān)聯(lián)數(shù)據(jù)索引列表中取得哈希值信息或哈希值相關(guān)數(shù)據(jù)塊的描述信息,例如該數(shù)據(jù)塊已經(jīng)被引用次數(shù),可根據(jù)引用需要進行增加;當客戶端所接收的關(guān)聯(lián)數(shù)據(jù)索引列表中不存在哈希值,則客戶端向服務(wù)端進行哈希值的查詢。由于關(guān)聯(lián)數(shù)據(jù)索引列表能夠表明數(shù)據(jù)區(qū)塊的關(guān)聯(lián)性(前后關(guān)聯(lián)),而且在使用過程中服務(wù)端可以根據(jù)統(tǒng)計信息不斷調(diào)整該聯(lián)數(shù)據(jù)索引列表。所以可以在一定程度上保證客戶端在本地內(nèi)存中查詢的命中率。服務(wù)端可以使用一次訪問慢速存儲設(shè)備的代價獲得大量的相關(guān)記錄,這樣大大減少了客戶端反復(fù)進行查詢請求而引起服務(wù)端不斷在慢速存儲設(shè)備進行讀取查詢的問題。同時一次通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)索引集也減少了網(wǎng)絡(luò)中來回請求/確認而進行網(wǎng)絡(luò)存取的耗時。以下結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。
圖1為現(xiàn)有技術(shù)的查詢數(shù)據(jù)區(qū)塊的示意圖;圖2為本發(fā)明的架構(gòu)示意圖;圖3為本發(fā)明的運作流程示意圖;圖4為本發(fā)明的記錄相關(guān)數(shù)據(jù)索引集的示意圖。其中,附圖標記110客戶端120服務(wù)端210服務(wù)端211哈希索引列表212關(guān)聯(lián)數(shù)據(jù)索引列表220客戶端
具體實施例方式下面結(jié)合附圖對本發(fā)明的結(jié)構(gòu)原理和工作原理作具體的描述請參考圖2所示,其為本發(fā)明的架構(gòu)示意圖。本發(fā)明包括服務(wù)端210與客戶端220。 客戶端220可以通過因特網(wǎng)(Internet)或企業(yè)內(nèi)網(wǎng)(intranet)的方式連接于服務(wù)端210, 也可以將客戶端220與服務(wù)端210同時運行于同一臺計算器裝置上服務(wù)端210還包括哈希索引列表211,哈希索引列表211記錄多組哈希值??蛻舳?20向服務(wù)端210發(fā)出對一輸入文件中某一數(shù)據(jù)區(qū)塊哈希值的查詢要求時,服務(wù)端210根據(jù)哈希索引列表211所記載的內(nèi)容并通過下述方式進行查詢的動作。請參考圖3所示,其為本發(fā)明的運作流程示意圖。步驟S310 在服務(wù)端中儲存哈希索引列表,在哈希索引列表中記錄多組哈希值;步驟S320 客戶端加載輸入文件,并產(chǎn)生相應(yīng)輸入文件的數(shù)據(jù)區(qū)塊與相應(yīng)每一數(shù)據(jù)區(qū)塊的哈希值;步驟S330 客戶端向服務(wù)端發(fā)送查詢請求,在查詢請求中記錄相應(yīng)數(shù)據(jù)區(qū)塊的哈希值,用以向服務(wù)端查詢是否存在有相同的哈希值;步驟S340 當服務(wù)端的哈希索引列表中未儲存哈希值,則服務(wù)端向客戶端發(fā)送儲存要求,用以將哈希值所相應(yīng)的數(shù)據(jù)區(qū)塊傳送至服務(wù)端中儲存,并且服務(wù)端將所接收到的哈希值依序加入哈希索引列表中;步驟S350 對哈希索引列表中的哈希值建立相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表,并在關(guān)聯(lián)數(shù)據(jù)索引列表中記錄哈希值相關(guān)的其它哈希值;以及步驟S360 當服務(wù)端中儲存哈希值,則服務(wù)端根據(jù)哈希值將相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表中的哈希值一并返回給客戶端。由客戶端220中加載輸入文件,客戶端220對輸入文件進行切分處理,并產(chǎn)生相應(yīng)輸入文件的數(shù)據(jù)區(qū)塊與相應(yīng)每一數(shù)據(jù)區(qū)塊的哈希值。哈希值計算的算法可以是但不局限于 SHA-I或MD5。而數(shù)據(jù)區(qū)塊是根據(jù)固定長度方式(fixed-size partition)或基于內(nèi)容變長度分割方式(content-defined chunking, CDC)。定長切分算法采用預(yù)先定義好的數(shù)據(jù)區(qū)塊大小對輸入文件進行切分。定長分塊算法的優(yōu)點是簡單、性能高。內(nèi)容定義切分算法是一種變長分塊算法,它應(yīng)用指紋數(shù)據(jù)(如Rabin指紋)將文件分割成長度大小不等的分塊策略。與定長切分算法不同,內(nèi)容定義切分算法是基于文件內(nèi)容進行數(shù)據(jù)區(qū)塊切分的,因此數(shù)據(jù)區(qū)塊大小是可變化的。接著,客戶端220向服務(wù)端210發(fā)送查詢請求,在查詢請求中記錄相應(yīng)數(shù)據(jù)區(qū)塊的哈希值,用以向服務(wù)端210查詢是否存在有相同的哈希值。當服務(wù)端210的哈希索引列表 211中未儲存哈希值,則服務(wù)端210向客戶端220發(fā)送儲存要求,用以將哈希值所相應(yīng)的數(shù)據(jù)區(qū)塊傳送至服務(wù)端210中儲存,并且服務(wù)端210將所接收到的哈希值依序加入哈希索引列表211中。并對哈希索引列表211中的哈希值建立相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表212,并在關(guān)聯(lián)數(shù)據(jù)索引列表212中記錄哈希值相關(guān)的數(shù)據(jù)區(qū)塊的信息。舉例來說,在關(guān)聯(lián)數(shù)據(jù)索引列表212中可以儲存數(shù)據(jù)區(qū)塊的哈希值或是數(shù)據(jù)區(qū)塊的編號值,也或數(shù)據(jù)區(qū)塊存儲位置的索弓I fe息O假設(shè)從輸入文件的第一個數(shù)據(jù)區(qū)塊進行查詢的處理說明,且服務(wù)端210沒有紀錄過輸入文件的任一數(shù)據(jù)區(qū)塊??蛻舳?20首先將輸入文件的第一數(shù)據(jù)區(qū)塊轉(zhuǎn)換為第一哈希值hashl (對應(yīng)為第一哈希值hashl),并將第一哈希值hashl向服務(wù)端210提出查詢請求。 由于服務(wù)端210中并未儲存輸入文件的任何數(shù)據(jù)區(qū)塊的哈希值,所以服務(wù)端210將所接收到的第一哈希值hashl (第一數(shù)據(jù)區(qū)塊)寫入到服務(wù)端210。同理,第二數(shù)據(jù)區(qū)塊(對應(yīng)為第二哈希值hasM)仍然按照上面的過程寫入到服務(wù)端210時。服務(wù)端210根據(jù)兩個數(shù)據(jù)區(qū)塊的前后關(guān)系來判定第一哈希值hashl與第二哈希值hash2是具有關(guān)聯(lián)性。服務(wù)端210 將第二哈希值hash2放入第一哈希值hashl的關(guān)聯(lián)數(shù)據(jù)索引列表212中。請參考圖4所示, 其為本發(fā)明的記錄相關(guān)數(shù)據(jù)索引集的示意圖。對于其它數(shù)據(jù)區(qū)塊的哈希值也依照其順序?qū)懭氲降谝还V礹ashl的關(guān)聯(lián)數(shù)據(jù)索引列表212。在本發(fā)明中關(guān)聯(lián)數(shù)據(jù)索引列表212的容量大小有一定限制。當關(guān)聯(lián)數(shù)據(jù)索引列表212中的哈希值的數(shù)量符合門坎值時,服務(wù)端210除了會向下一關(guān)聯(lián)數(shù)據(jù)索引列表 212中繼續(xù)進行存放哈希值的處理之外,也可以將查詢后經(jīng)過最久的哈希值從關(guān)聯(lián)數(shù)據(jù)索引列表212中刪除,將最新查詢的該哈希值記錄在該關(guān)聯(lián)數(shù)據(jù)索引列表212中。舉例來說,若關(guān)聯(lián)數(shù)據(jù)索引列表212的最大容量為記錄10組哈希值,則第一哈希值hashl的相關(guān)索引記錄是第二哈希值hash2 第十一哈希值hashll (換言之就是第一數(shù)據(jù)區(qū)塊后的連續(xù)十個數(shù)據(jù)區(qū)塊)。當?shù)谑V礹ashl2產(chǎn)生后,服務(wù)端210會將第十二哈希值hashl2存放在第十一哈希值hashll的關(guān)聯(lián)數(shù)據(jù)索引列表212中。此外,若是某一組哈希值同時與其它哈希值都存在關(guān)聯(lián)時,可根據(jù)相關(guān)特性采用存放在哪個哈希值的關(guān)聯(lián)數(shù)據(jù)索引列表212中?;蚴菍⑺邪l(fā)生相關(guān)的關(guān)聯(lián)數(shù)據(jù)索引列表212中都保存一份。以上所述狀況為服務(wù)端210中未存儲可被查詢到的哈希值。當服務(wù)端210中儲存哈希值,則服務(wù)端210根據(jù)哈希值將相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表212中的哈希值一并返回給客戶端220。承接上例。當客戶端220欲查詢第五數(shù)據(jù)區(qū)塊(意即查詢第五哈希值hash5), 由于服務(wù)端210中第五哈希值hash5是被歸類在第一哈希值hashl所相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表212中。所以服務(wù)端210除了將所查詢到的第五哈希值hash5返還給客戶端220外, 服務(wù)端210同時也會將第一哈希值hashl的關(guān)聯(lián)數(shù)據(jù)索引列表212—并傳送給客戶端220??蛻舳?20在接收到關(guān)聯(lián)數(shù)據(jù)索引表后,客戶端220將關(guān)聯(lián)數(shù)據(jù)索引表儲存于內(nèi)存中。使得客戶端220在下一次查詢數(shù)據(jù)區(qū)塊的哈希值時,客戶端220會先從所接收的關(guān)聯(lián)數(shù)據(jù)索引列表212中開始查詢是否已存在欲查詢的哈希值。當客戶端220所接收的關(guān)聯(lián)數(shù)據(jù)索引列表212中已存在哈希值,則由關(guān)聯(lián)數(shù)據(jù)索引列表212中取得哈希值。被查詢的數(shù)據(jù)區(qū)塊可能是連續(xù),因此通過關(guān)聯(lián)數(shù)據(jù)索引列表212可以有效地降低客戶端220與服務(wù)端210間的存取時間,進而提高存取的效率。反之,當客戶端220所接收的關(guān)聯(lián)數(shù)據(jù)索引列表212中不存在哈希值,則客戶端220重新向服務(wù)端210進行步驟S330 步驟S360的哈希值查詢處理。由于關(guān)聯(lián)數(shù)據(jù)索引列表212能夠表明數(shù)據(jù)區(qū)塊的關(guān)聯(lián)性(意即前后順序的關(guān)聯(lián)), 而且在使用過程中服務(wù)端210可以根據(jù)統(tǒng)計信息不斷調(diào)整關(guān)聯(lián)數(shù)據(jù)索引列表212。所以可以在一定程度上保證客戶端220在本地內(nèi)存中查詢的命中率。服務(wù)端210可以使用一次訪問慢速存儲設(shè)備的代價獲得大量的相關(guān)記錄,這樣大大減少了客戶端220反復(fù)進行查詢請求而引起服務(wù)端210不斷在慢速存儲設(shè)備進行讀取查詢的問題。同時一次通過網(wǎng)絡(luò)發(fā)送數(shù)據(jù)索引集也減少了網(wǎng)絡(luò)中來回請求/確認而進行網(wǎng)絡(luò)存取的耗時。當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1.一種支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法,應(yīng)用在經(jīng)過一重復(fù)數(shù)據(jù)刪除程序所產(chǎn)生的多筆數(shù)據(jù)區(qū)塊,并對該數(shù)據(jù)區(qū)塊進行查詢的處理,其特征在于,該支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法包括以下步驟在一服務(wù)端中儲存一哈希索引列表,在該哈希索引列表中記錄多組哈希值; 一客戶端加載一輸入文件,并產(chǎn)生相應(yīng)該輸入文件的該些數(shù)據(jù)區(qū)塊與相應(yīng)每一該數(shù)據(jù)區(qū)塊的該哈希值;該客戶端向該服務(wù)端發(fā)送一查詢請求,在該查詢請求中記錄相應(yīng)該些數(shù)據(jù)區(qū)塊的該哈希值,用以向該服務(wù)端查詢是否存在有相同的該哈希值;當該服務(wù)端的該哈希索引列表中未儲存該哈希值,則該服務(wù)端向該客戶端發(fā)送一儲存要求,用以將該哈希值所相應(yīng)的該數(shù)據(jù)區(qū)塊傳送至該服務(wù)端中儲存,并且該服務(wù)端將所接收到的該哈希值依序加入該哈希索引列表中;對該哈希索引列表中的該哈希值建立相應(yīng)的一關(guān)聯(lián)數(shù)據(jù)索引列表,并在該關(guān)聯(lián)數(shù)據(jù)索引列表中記錄該哈希值相關(guān)的其它該些哈希值;當該服務(wù)端中儲存該哈希值,則該服務(wù)端根據(jù)該哈希值將相應(yīng)的該關(guān)聯(lián)數(shù)據(jù)索引列表中的該些哈希值一并返回給該客戶端;該客戶端下一次查詢該數(shù)據(jù)區(qū)塊的該哈希值時,該客戶端從所接收的該關(guān)聯(lián)數(shù)據(jù)索引列表查詢是否已存在該哈希值;當該客戶端所接收的該關(guān)聯(lián)數(shù)據(jù)索引列表中已存在該哈希值,則由該關(guān)聯(lián)數(shù)據(jù)索引列表中取得該哈希值;以及當該客戶端所接收的該關(guān)聯(lián)數(shù)據(jù)索引列表中不存在該哈希值,則該客戶端向該服務(wù)端進行該哈希值的查詢。
2.根據(jù)權(quán)利要求1所述的支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法,其特征在于, 產(chǎn)生的該些數(shù)據(jù)區(qū)塊根據(jù)一固定長度方式或一基于內(nèi)容變長度分割方式。
3.根據(jù)權(quán)利要求1所述的支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法,其特征在于, 該關(guān)聯(lián)數(shù)據(jù)索引列表中的該些哈希值的數(shù)量符合一門坎值時,則將查詢后經(jīng)過最久的該哈希值從該關(guān)聯(lián)數(shù)據(jù)索引列表中刪除,將最新查詢的該哈希值記錄在該關(guān)聯(lián)數(shù)據(jù)索引列表中。
4.根據(jù)權(quán)利要求1所述的支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法,其特征在于, 該關(guān)聯(lián)數(shù)據(jù)索引列表中的該些哈希值的數(shù)量符合一門坎值時,則該服務(wù)端會向下一該關(guān)聯(lián)數(shù)據(jù)索引列表中繼續(xù)進行存放該哈希值的處理。
全文摘要
一種支持重復(fù)數(shù)據(jù)刪除程序的數(shù)據(jù)區(qū)塊查詢方法,提高重復(fù)數(shù)據(jù)刪除程序查詢數(shù)據(jù)區(qū)塊的速度。查詢方法包括在服務(wù)端中儲存哈希索引列表;客戶端中根據(jù)輸入文件產(chǎn)生數(shù)據(jù)區(qū)塊與哈希值;客戶端向服務(wù)端發(fā)送查詢請求,查詢請求中記錄相應(yīng)數(shù)據(jù)區(qū)塊的哈希值;當服務(wù)端中未儲存哈希值,服務(wù)端向客戶端發(fā)送儲存要求,將所接收到的哈希值加入哈希索引列表;對哈希索引列表建立相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表,在關(guān)聯(lián)數(shù)據(jù)索引列表中記錄哈希值相關(guān)連的數(shù)據(jù)區(qū)塊的信息;當服務(wù)端中儲存哈希值,則根據(jù)哈希值將相應(yīng)的關(guān)聯(lián)數(shù)據(jù)索引列表中的哈希值返回給客戶端。
文檔編號G06F17/30GK102467572SQ20101057614
公開日2012年5月23日 申請日期2010年11月17日 優(yōu)先權(quán)日2010年11月17日
發(fā)明者劉威, 王云松, 陳志豐 申請人:英業(yè)達股份有限公司