本申請涉及計算機技術領域,尤其涉及一種數(shù)據(jù)操作方法及系統(tǒng)。
背景技術:
在計算機領域中存儲設備無處不在,存儲設備為用戶提供數(shù)據(jù)存儲功能。由于存儲設備可以服務于一個用戶或多個用戶,每個用戶均可以向存儲設備存儲數(shù)據(jù)。
在實際使用過程中會出現(xiàn)用戶向存儲設備存儲相同數(shù)據(jù)的過程,目前,存儲設備會將一份數(shù)據(jù)存儲多次。這樣會浪費存儲設備的存儲空間。
技術實現(xiàn)要素:
本申請?zhí)峁┝艘环N數(shù)據(jù)操作方法及系統(tǒng),提供了對目標對象的去重存儲過程,從而可以避免將相同對象進行重復存儲,從而保證存儲空間僅存儲一份目標對象,從而節(jié)省存儲空間。
為了實現(xiàn)上述目的,本申請?zhí)峁┝艘韵录夹g特征:
一種數(shù)據(jù)去重存儲方法,包括:
確定目標對象以及所述目標對象的目標哈希值;
若在哈希值和存儲次數(shù)的對應關系中未查找到所述目標哈希值,則基于所述目標哈希值存儲所述目標對象,并在哈希值和存儲次數(shù)的對應關系中增加所述目標哈希值和目標存儲次數(shù)的對應關系,并將所述目標存儲次數(shù)在初始值基礎上加一;
若在哈希值和存儲次數(shù)的對應關系中查找到所述目標哈希值,則不存儲所述目標對象,在哈希值和存儲次數(shù)的對應關系中,將所述目標哈希值對應的目標存儲次數(shù)加一。
可選的,所述確定目標對象包括:
接收目標對象標識和目標內容;
判斷哈希值和對象標識的對應關系中是否包括所述目標對象標識;其中,所述哈希值和對象標識的對應關系中的對象標識為已存儲對象的標識;
若不包括所述目標對象標識,則將所述目標內容確定為目標對象;
若包括所述目標對象標識,則獲取所述目標對象標識對應的目標哈希值,基于目標哈希值獲取已存儲對象,合并所述已存儲對象和所述目標內容,將合并后數(shù)據(jù)確定為所述目標對象。
可選的,在所述將合并后數(shù)據(jù)確定為所述目標對象之后,還包括:
在所述哈希值和對象標識的對應關系中刪除所述目標對象標識記錄;
在所述哈希值和存儲次數(shù)的對應關系中,將所述目標哈希值對應的目標存儲次數(shù)減一。
可選的,還包括:
在哈希值和對象標識的對應關系中,增加所述目標哈希值和所述目標對象的目標對象標識的對應關系。
可選的,還包括:
對所述哈希值和對象標識的對應關系和哈希值和存儲次數(shù)的對應關系進行存儲備份。
一種數(shù)據(jù)刪除方法,包括:
接收目標對象標識;
在哈希值和對象標識的對應關系中,獲取與所述目標對象標識對應的目標哈希值,并刪除該對應關系中所述目標對象標識的記錄;
在哈希值和存儲次數(shù)的對應關系中,將與所述目標哈希值對應的目標存儲次數(shù)減一;
在所述目標存儲次數(shù)為初始值的情況下,基于所述目標哈希值刪除所述目標對象標識對應的目標對象。
可選的,在哈希值和對象標識的對應關系中獲取與所述目標對象標識對應的目標哈希值之前,還包括:
判斷哈希值和對象標識的對應關系中是否包括所述目標對象標識;其中,所述哈希值和對象標識的對應關系中的對象標識為已存儲對象的標識;
若所述哈希值和對象標識的對應關系中包括所述目標對象標識,則執(zhí)行在哈希值和對象標識的對應關系中獲取與所述目標對象標識對應的目標哈希值的步驟;
若所述哈希值和對象標識的對應關系中不包括所述目標對象標識,則反饋錯誤提示信息。
一種數(shù)據(jù)讀取方法,包括:
接收目標對象標識;
在哈希值和對象標識的對應關系中,獲取與所述目標對象標識對應的目標哈希值;
基于所述目標哈希值讀取所述目標對象標識對應的目標對象。
可選的,在哈希值和對象標識的對應關系中獲取與所述目標對象標識對應的目標哈希值之前,還包括:
判斷哈希值和對象標識的對應關系中是否包括所述目標對象標識;其中,所述哈希值和對象標識的對應關系中的對象標識為已存儲對象的標識;
若所述哈希值和對象標識的對應關系中包括所述目標對象標識,則執(zhí)行在哈希值和對象標識的對應關系中獲取與所述目標對象標識對應的目標哈希值的步驟;
若所述哈希值和對象標識的對應關系中不包括所述目標對象標識,則反饋錯誤提示信息,其中,所述錯誤提示信息用于表示存儲設備中不存在所述目標對象標識。
一種數(shù)據(jù)操作系統(tǒng),包括:
終端,用于發(fā)送文件到分布式設備;
分布式設備,用于對文件執(zhí)行池化操作獲得多個對象,設置哈希值和存儲次數(shù)的對應關系和所述哈希值和對象標識的對應關系,利用哈希值和存儲次數(shù)的對應關系和所述哈希值和對象標識的對應關系,執(zhí)行數(shù)據(jù)去重存儲操作、數(shù)據(jù)刪除操作以及數(shù)據(jù)讀取操作。通過以上技術手段,可以實現(xiàn)以下有益效果:
本申請?zhí)峁┝藢δ繕藢ο蟮娜ブ卮鎯^程,從而可以避免將相同對象進行重復存儲,從而保證存儲空間僅存儲一份目標對象,從而節(jié)省存儲設備的存儲空間。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實施例公開的一種數(shù)據(jù)操作系統(tǒng)的結構示意圖;
圖2為現(xiàn)有技術中數(shù)據(jù)存儲方法的流程圖;
圖3為本申請實施例公開的一種數(shù)據(jù)去重存儲方法的流程圖;
圖4為本申請實施例公開的一種數(shù)據(jù)刪除方法的流程圖;
圖5為本申請實施例公開的一種數(shù)據(jù)讀取方法的流程圖。
具體實施方式
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
術語解釋:
分布式存儲:將數(shù)據(jù)分散存儲到多個數(shù)據(jù)存儲服務器上。
pg:placementgroups,放置組。分布式設備中的虛擬概念。
osd:object-basedstoragedevice,對象存儲設備。
哈希值:在本實施例中對對象執(zhí)行哈希操作后得到的數(shù)據(jù)值,稱為哈希值。
為了方便本領域技術人員了解本申請的應用場景,提供了一種數(shù)據(jù)操作系統(tǒng)。參見圖1,具體包括終端100和分布式設備200。
終端100用于發(fā)送文件至分布式設備200。
分布式設備200用于對文件執(zhí)行池化操作獲得多個對象,設置哈希值和存儲次數(shù)的對應關系和所述哈希值和對象標識的對應關系,利用哈希值和存儲次數(shù)的對應關系和所述哈希值和對象標識的對應關系,執(zhí)行數(shù)據(jù)去重存儲操作、數(shù)據(jù)刪除操作以及數(shù)據(jù)讀取操作。
為了方便對對象進行去重存儲操作、數(shù)據(jù)刪除操作以及數(shù)據(jù)讀取操作,本實施例為本預先建立兩個數(shù)據(jù)表:一個數(shù)據(jù)表存儲哈希值和存儲次數(shù)的對應關系,另一個數(shù)據(jù)表存儲哈希值和對象標識的對應關系。
哈希值為對對象執(zhí)行哈希操作后得到的數(shù)據(jù)值,用于唯一表示一個對象。對象標識為分布式設備中表示一個對象的標識。在分布式設備中,當一個對象被存儲至對象存儲設備后,在哈希值和對象標識的對應關系中建立該對象的對象標識和哈希值的對應關系。
由于用戶可以存儲相同對象,所以,利用存儲次數(shù)來表示相同數(shù)據(jù)的存儲次數(shù)。若對象相同則對象的哈希值也相同,所以構建哈希值和存儲次數(shù)的對應關系,以表示相同對象被重復存儲的次數(shù)。存儲次數(shù)主要在執(zhí)行數(shù)據(jù)刪除操作時使用。
首先,介紹分布式設備執(zhí)行數(shù)據(jù)去重存儲操作的執(zhí)行過程。
參見圖2,為現(xiàn)有技術中分布式設備的存儲流程。
分布式設備200對文件執(zhí)行池化操作獲得多個對象(oid),每個對象具有一個對象標識(oid_id),基于對象標識計算放置組pg標識(pg_id),通過pg標識確定對象存儲設備osd標識(osd_id),基于osd標識(osd_id)將對象存儲至對象存儲設備osd中。
本實施例中對原始數(shù)據(jù)流下發(fā)過程中的對象標識(oid_id)進行劫持并進行重定向,重定向對象標識后可以執(zhí)行去重存儲操作。
參見圖3,為本實施例提供的一種數(shù)據(jù)去重存儲方法,具體包括以下步驟:
步驟s101:接收目標對象標識和目標內容。
分布式設備200接收目標對象標識和目標內容。
步驟s102:判斷哈希值和對象標識的對應關系中是否包括所述目標對象標識;其中,所述哈希值和對象標識的對應關系中的對象標識為已存儲對象的標識。若是,則進入步驟s103,若否則進入步驟s105。
目標內容可能有兩種情況:第一情況,對已存儲對象進行修改的內容,第二情況,目標內容為新對象的內容。對目標內容不同情況其處理過程有所不同,所以需要確定目標內容屬于第一情況還是第二情況。
當一個對象已經(jīng)存儲至對象存儲設備后,在哈希值與對象標識的對應關系中便有該對象標識。因此,本實施例分布式設備200判斷在哈希值與對象標識的對應關系中是否包括目標對象標識。
步驟s103:若包括所述目標對象標識,則獲取所述目標對象標識對應的目標哈希值,基于目標哈希值獲取已存儲對象,合并所述已存儲對象和所述目標內容,將合并后數(shù)據(jù)確定為所述目標對象。
若在哈希值與對象標識的對應關系中包括目標對象標識,則說明目標對象標識已經(jīng)存儲過,因此,目標內容為第一情況(對已存儲對象進行修改的內容)。
在哈希值與對象標識的對應關系中,獲取與目標對象標識獲取對應的目標哈希值。通過目標哈希值計算得到pg標識,通過pg標識計算得到osd標識,利用osd標識在osd中獲取目標對象標識的已存儲對象。
將已存儲對象與目標內容進行合并,合并過程可以根據(jù)目標內容不同而不同。例如,若目標內容是對已存儲對象中原始部分數(shù)據(jù)進行替換,則將目標內容替換已存儲對象中的原始部分數(shù)據(jù)。若目標內容是對已存儲對象增加部分內容,則在已存儲對象中增加目標內容。關于此過程已為成熟技術,在此不再贅述。
將已存儲對象與目標內容進行合并后得到的合并數(shù)據(jù),確定為目標對象。
步驟s104:在所述哈希值和對象標識的對應關系中刪除所述目標對象標識記錄;在所述哈希值和存儲次數(shù)的對應關系中,將所述目標哈希值對應的目標存儲次數(shù)減一。然后,進入步驟s106。
由于目標對象標識對應的已存儲對象已經(jīng)修改,后續(xù)會重新進行對目標對象進行存儲,所以可以在哈希值和對象標識的對應關系中刪除目標對象標識的記錄。
在多個用戶具有多個對象標識,多個對象標識的數(shù)據(jù)內容相同,即已存儲對象相同。在其中一個用戶對已存儲對象進行修改后,還有其它用戶未對已存儲對象進行修改,所以不能刪除已存儲對象,而是將目標對象標識對應的已存儲對象的目標存儲次數(shù)減一。當目標存儲次數(shù)為初始值(或零)時,在對象存儲設備中刪除已存儲對象,從而釋放存儲空間。
步驟s105:若不包括所述目標對象標識,則將所述目標內容確定為目標對象。
若在哈希值與對象標識的對應關系中不包括目標對象標識,則說明目標對象標識未存儲過,因此,目標內容為第二情況(目標內容為新對象的內容)。
步驟s106:確定目標對象的目標哈希值。
分布式設備200計算目標對象執(zhí)行哈希操作,從而得到目標對象的目標哈希值。
步驟s107:在哈希值和存儲次數(shù)的對應關系中查找所述目標哈希值。若查找到,則進入步驟s108,否則進入步驟s109。
為了避免存儲重復,在對目標對象進行存儲之前,首先判斷目標對象對應哈希值是否已經(jīng)在哈希值和存儲次數(shù)的對應關系中,若存在則表示目標對象已經(jīng)存儲至對象存儲設備中;否則表示目標對象未存儲至對象存儲設備中。
步驟s108:若在哈希值和存儲次數(shù)的對應關系中未查找到所述目標哈希值,則基于所述目標哈希值存儲所述目標對象,并在哈希值和存儲次數(shù)的對應關系中增加所述目標哈希值和目標存儲次數(shù)的對應關系,并將所述目標存儲次數(shù)在初始值基礎上加一。然后進入步驟s110。
若在哈希值和存儲次數(shù)的對應關系中未查找到所述目標哈希值,則表示目標對象未存儲至對象存儲設備中。因此,基于目標哈希值存儲目標對象,具體而言,可以基于目標哈希值計算pg標識,利用pg標識計算osd標識,通過osd標識將目標數(shù)據(jù)存儲至對象存儲設備中。
然后,在哈希值和存儲次數(shù)的對應關系中,增加目標哈希值和目標存儲次數(shù)的對應關系,目標存儲次數(shù)首次創(chuàng)建時其數(shù)據(jù)值為初始值,優(yōu)選情況下為零。本步驟中目標對象已經(jīng)被存儲一次,所以存儲次數(shù)可以在初始值基礎上加一。
步驟s109:若在哈希值和存儲次數(shù)的對應關系中查找到所述目標哈希值,則不存儲所述目標對象,在哈希值和存儲次數(shù)的對應關系中,將所述目標哈希值對應的目標存儲次數(shù)加一。
若在哈希值和存儲次數(shù)的對應關系中查找到所述目標哈希值,則表示目標對象已經(jīng)存儲過,所以為了避免重復重復,不再存儲所述目標對象。
然后,在哈希值和存儲次數(shù)的對應關系中,將目標哈希值對應的目標存儲次數(shù)加一,以表示目標對象又被存儲一次。
步驟s110:在哈希值和對象標識的對應關系中,增加所述目標哈希值和所述目標對象的目標對象標識的對應關系。
分布式設備200在哈希值和對象標識的對應關系中,增加目標哈希值和所述目標對象的目標對象標識的對應關系,以便表明目標對象標識已經(jīng)具有已存儲對象,以便為下次目標對象標識寫數(shù)據(jù)時提供方便。
本申請?zhí)峁┝藢δ繕藢ο蟮娜ブ卮鎯^程,從而可以避免將相同對象進行重復存儲,從而保證存儲空間僅存儲一份目標對象,從而不浪費存儲空間。
在圖3所示的數(shù)據(jù)去重存儲的基礎上,本實施例還提供了數(shù)據(jù)刪除方法。參見圖4,具體包括以下步驟:
步驟s201:接收目標對象標識。
分布式設備200接收目標對象標識。
步驟s202:判斷哈希值和對象標識的對應關系中是否包括所述目標對象標識;其中,所述哈希值和對象標識的對應關系中的對象標識為已存儲對象的標識。若否,則進入步驟s203;若是則進入步驟s204。
步驟s203:若所述哈希值和對象標識的對應關系中不包括所述目標對象標識,則反饋錯誤提示信息。
若所述哈希值和對象標識的對應關系中不包括所述目標對象標識,則表示未存儲過目標對象標識對應的目標對象,因此向終端反饋錯誤提示信息,以提示用戶目標對象標識有誤。
步驟s204:若所述哈希值和對象標識的對應關系中包括所述目標對象標識,在哈希值和對象標識的對應關系中,獲取與所述目標對象標識對應的目標哈希值,并刪除該對應關系中所述目標對象標識的記錄。
若所述哈希值和對象標識的對應關系中包括所述目標對象標識,則表示已經(jīng)存儲過目標對象標識對應的目標對象。因此,在哈希值和對象標識的對應關系中,獲取與所述目標對象標識對應的目標哈希值。
由于目標對象標識對應的目標對象需要執(zhí)行刪除操作,因此,在所述哈希值和對象標識的對應關系中刪除所述目標對象標識的記錄。
步驟s205:在哈希值和存儲次數(shù)的對應關系中,將與所述目標哈希值對應的目標存儲次數(shù)減一。
在步驟s204中獲取目標哈希值后,在哈希值和存儲次數(shù)的對應關系中,將與所述目標哈希值對應的目標存儲次數(shù)減一,以表示對目標對象標識對應的目標對象執(zhí)行刪除操作。
步驟s206:在所述目標存儲次數(shù)為初始值的情況下,基于所述目標哈希值刪除所述目標對象標識對應的目標對象。
在目標哈希值對應的目標存儲次數(shù)為初始值的情況下,說明已經(jīng)沒有所有用戶均已經(jīng)刪除目標哈希值對應的目標對象。此情況下,可以基于目標哈希值刪除目標對象標識對應的目標對象,以便釋放存儲空間。
在圖3所示的數(shù)據(jù)去重存儲的基礎上,本實施例還提供了數(shù)據(jù)讀取操作,參見圖5具體包括以下步驟:
步驟s301:接收目標對象標識。
步驟s302:判斷哈希值和對象標識的對應關系中是否包括所述目標對象標識;其中,所述哈希值和對象標識的對應關系中的對象標識為已存儲對象的標識。若否,則進入步驟s303;若是則進入步驟s304。
步驟s303:若所述哈希值和對象標識的對應關系中不包括所述目標對象標識,則反饋錯誤提示信息。
步驟s304:在哈希值和對象標識的對應關系中,獲取與所述目標對象標識對應的目標哈希值,基于所述目標哈希值讀取所述目標對象標識對應的目標對象。
本實施例方法所述的功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算設備可讀取存儲介質中?;谶@樣的理解,本申請實施例對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲在一個存儲介質中,包括若干指令用以使得一臺計算設備(可以是個人計算機,服務器,移動計算設備或者網(wǎng)絡設備等)執(zhí)行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。
對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本申請。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。