一種數(shù)據(jù)存儲方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)存儲方法及裝置。一種數(shù)據(jù)存儲方法包括:預先選取編碼算法,并對編碼的取值區(qū)間進行分段;利用所述編碼算法,對目標數(shù)據(jù)文件的標識信息進行編碼;根據(jù)編碼結果,對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲。應用本發(fā)明實施例提供的技術方案,預先選取適當?shù)木幋a方式并且對編碼的取值空間進行分段,然后根據(jù)對數(shù)據(jù)文件標識的編碼結果,對處于同一分段中的數(shù)據(jù)文件進行整合存儲。與現(xiàn)有技術相比,整合存儲的方式減少了文件碎片,能夠顯著提高存儲效率以及查詢效率。
【專利說明】一種數(shù)據(jù)存儲方法及裝置
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲【技術領域】,特別是涉及一種數(shù)據(jù)存儲方法及裝置。
【背景技術】
[0002]隨著互聯(lián)網(wǎng)的迅速發(fā)展,網(wǎng)絡上的資源類型和數(shù)量不斷增加。對于擁有數(shù)據(jù)資源的網(wǎng)站而言,對數(shù)據(jù)處理的各方面要求也在不斷提高。例如,在海量數(shù)據(jù)的應用場景下,如何提高數(shù)據(jù)資源的存儲效率、查詢效率、處理效率、如何保證數(shù)據(jù)資源的穩(wěn)定性,等等。
[0003]以圖片系統(tǒng)的數(shù)據(jù)存儲為例,對于大規(guī)模的網(wǎng)站應用,例如用于改進圖片搜索效果的圖片標注系統(tǒng),其需要處理的圖片可能達到上百億張甚至更高,這些圖片分別從其他網(wǎng)站抓取,在圖片標注系統(tǒng)進行處理后存儲。這些圖片的特點是數(shù)量大,且每個圖片文件的體積相對較小,從存儲的角度而言,大量以“碎片”形式的文件必然會影響存儲效率。另一方面,存儲的數(shù)據(jù)量越大,對于查詢速度的影響也就越明顯。
【發(fā)明內容】
[0004]為解決上述技術問題,本發(fā)明實施例提供一種數(shù)據(jù)存儲方法及裝置,技術方案如下:
[0005]本發(fā)明實施例提供一種數(shù)據(jù)存儲方法,該方法包括:
[0006]預先選取編碼算法,并對編碼的取值區(qū)間進行分段;
[0007]利用所述編碼算法,對目標數(shù)據(jù)文件的標識信息進行編碼;
[0008]根據(jù)編碼結果,對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲。
[0009]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲,包括:
[0010]將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個或多個文件數(shù)據(jù)包。
[0011]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個文件數(shù)據(jù)包,包括:
[0012]在文件數(shù)據(jù)包大小超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分;
[0013]在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
[0014]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個文件數(shù)據(jù)包,包括:
[0015]在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分;
[0016]在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
[0017]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為多個文件數(shù)據(jù)包,包括:
[0018]在文件數(shù)據(jù)包大小超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
[0019]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲多個文件數(shù)據(jù)包,包括:
[0020]在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
[0021]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述方法還包括:
[0022]為所述文件數(shù)據(jù)包生成索引信息,所述索引信息中至少包括:數(shù)據(jù)文件的索引鍵值、以及數(shù)據(jù)文件在文件數(shù)據(jù)包中的存儲地址。
[0023]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述數(shù)據(jù)文件的索引鍵值為:
[0024]該數(shù)據(jù)文件的標識信息、或者標識信息的編碼值。
[0025]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述方法還包括:
[0026]在生成索引信息后,根據(jù)數(shù)據(jù)文件的索引鍵值,對當前的索引信息進行排序。
[0027]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述方法還包括:
[0028]根據(jù)編碼取值空間的分段結果以及對目標數(shù)據(jù)文件的編碼結果,生成針對目標文件的多個任務包,所述任務包用于分配給不同的分布式任務執(zhí)行模塊。
[0029]本發(fā)明實施例還提供一種數(shù)據(jù)存儲裝置,包括:
[0030]分段單元,用于預先選取編碼算法,并對編碼的取值區(qū)間進行分段;
[0031]編碼單元,用于利用所述編碼算法,對目標數(shù)據(jù)文件的標識信息進行編碼;
[0032]存儲單元,用于根據(jù)編碼結果,對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲。
[0033]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述存儲單元,具體用于:
[0034]將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個或多個文件數(shù)據(jù)包。
[0035]根據(jù)本發(fā)明方案的一種【具體實施方式】,
[0036]所述分段單元具體用于:在文件數(shù)據(jù)包大小超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分;
[0037]所述存儲單元具體用于:在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
[0038]根據(jù)本發(fā)明方案的一種【具體實施方式】,
[0039]所述分段單元具體用于:在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分;
[0040]所述存儲單元具體用于:在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
[0041]根據(jù)本發(fā)明方案的一種【具體實施方式】,
[0042]所述存儲單元具體用于:在文件數(shù)據(jù)包大小超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
[0043]根據(jù)本發(fā)明方案的一種【具體實施方式】,
[0044]所述存儲單元具體用于:在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
[0045]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述裝置還包括:[0046]索引信息生成單元,用于為所述文件數(shù)據(jù)包生成索引信息,所述索引信息中至少包括:數(shù)據(jù)文件的索引鍵值、以及數(shù)據(jù)文件在文件數(shù)據(jù)包中的存儲地址。
[0047]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述數(shù)據(jù)文件的索引鍵值為:
[0048]該數(shù)據(jù)文件的標識信息、或者標識信息的編碼值。
[0049]根據(jù)本發(fā)明方案的一種【具體實施方式】,
[0050]所述索引信息生成單元,還用于在生成索引信息后,根據(jù)數(shù)據(jù)文件的索引鍵值,對當前的索引信息進行排序。
[0051]根據(jù)本發(fā)明方案的一種【具體實施方式】,所述裝置還包括:
[0052]任務分配單元,用于根據(jù)編碼取值空間的分段結果以及對目標數(shù)據(jù)文件的編碼結果,生成針對目標文件的多個任務包,所述任務包用于分配給不同的分布式任務執(zhí)行模塊。
[0053]應用本發(fā)明實施例提供的技術方案,預先選取適當?shù)木幋a方式并且對編碼的取值空間進行分段,然后根據(jù)對數(shù)據(jù)文件標識的編碼結果,對處于同一分段中的數(shù)據(jù)文件進行整合存儲。與現(xiàn)有技術相比,整合存儲的方式減少了文件碎片,能夠顯著提高存儲效率。
[0054]進一步地,對于一個確定標識信息的數(shù)據(jù)文件,一旦編碼方式確定,該數(shù)據(jù)文件所對應的分段也就確定了,那么在數(shù)據(jù)查詢過程中,應用本發(fā)明方案,可以首先根據(jù)目標文件標識的定位該目標文件所處的分段,然后在相應的分段中進行查詢,相對于現(xiàn)有技術在全量數(shù)據(jù)中進行查詢的方式而言,應用本發(fā)明所提供的方案也有利于獲得更高的查詢效率。
【專利附圖】
【附圖說明】
[0055]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
[0056]圖1為本發(fā)明實施例數(shù)據(jù)存儲方法的一種流程圖;
[0057]圖2為本發(fā)明實施例目標文件列表示意圖;
[0058]圖3為本發(fā)明實施例數(shù)據(jù)存儲方法的第二種流程圖;
[0059]圖4為本發(fā)明實施例文件數(shù)據(jù)包的一種索引結構示意圖;
[0060]圖5為本發(fā)明實施例文件數(shù)據(jù)包的另一種索引結構示意圖;
[0061]圖6為本發(fā)明實施例劃分子分段的一種示意圖;
[0062]圖7為本發(fā)明實施例數(shù)據(jù)存儲系統(tǒng)的三級索引結構示意圖;
[0063]圖8為本發(fā)明實施例分布式任務執(zhí)行系統(tǒng)的結構示意圖;
[0064]圖9為本發(fā)明實施例數(shù)據(jù)存儲裝置的一種結構示意圖;
[0065]圖10為本發(fā)明實施例數(shù)據(jù)存儲裝置的第二種結構示意圖;
[0066]圖11為本發(fā)明實施例數(shù)據(jù)存儲裝置的第三種結構示意圖。
【具體實施方式】
[0067]對于大規(guī)模的網(wǎng)站應用,例如前面所提到圖片系統(tǒng),需要存儲的數(shù)據(jù)量非常大,這些數(shù)據(jù)分散于不同的文件中,每個文件的體積并不大,但是文件的數(shù)據(jù)很多,在各種存儲體系中,過多的文件碎片都會對數(shù)據(jù)存儲效率造成較大的影響,例如,在UNIX操作系統(tǒng)中,使用inode (索引節(jié)點)來存放檔案及目錄的基本信息,包含時間、檔名、使用者及群組等。inode的本質是一種結構體,它包含了與文件系統(tǒng)中各個文件相關的一些重要信息。在UNIX中的文件系統(tǒng)中,每一個文件都需要對應創(chuàng)建一個inode,當需要存儲文件數(shù)量達到一定數(shù)量級時,會有相當一部分磁盤空間用于存儲inode,在一定程度上成造成了磁盤空間的浪費,而且為數(shù)據(jù)的管理和維護也帶來了難度。
[0068]針對上述問題,本發(fā)明實施例提供一種數(shù)據(jù)存儲方法,該方法可以包括以下步驟:
[0069]預先選取編碼算法,并對編碼的取值區(qū)間進行分段;
[0070]利用所述編碼算法,對目標數(shù)據(jù)文件的標識信息進行編碼;
[0071]根據(jù)編碼結果,對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲。
[0072]應用本發(fā)明實施例提供的技術方案,預先選取適當?shù)木幋a方式并且對編碼的取值空間進行分段,然后根據(jù)對數(shù)據(jù)文件標識的編碼結果,對處于同一分段中的數(shù)據(jù)文件進行整合存儲。與現(xiàn)有技術相比,整合存儲的方式減少了文件碎片,能夠顯著提高存儲效率。
[0073]進一步地,對于一個確定標識信息的數(shù)據(jù)文件,一旦編碼方式確定,該數(shù)據(jù)文件所對應的分段也就確定了,那么在數(shù)據(jù)查詢過程中,應用本發(fā)明方案,可以首先根據(jù)目標文件標識的定位該目標文件所處的分段,然后在相應的分段中進行查詢,相對于現(xiàn)有技術在全量數(shù)據(jù)中進行查詢的方式而言,應用本發(fā)明所提供的方案也有利于獲得更高的查詢效率。
[0074]為了使本領域技術人員更好地理解本發(fā)明中的技術方案,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行詳細地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員所獲得的所有其他實施例,都應當屬于本發(fā)明保護的范圍。
[0075]圖1所示為本發(fā)明實施例一種數(shù)據(jù)存儲方法的示意圖,該方法可以包括以下步驟:
[0076]S101,預先選取編碼算法,并對編碼的取值區(qū)間進行分段;
[0077]本發(fā)明的方案是,把需要存儲的目標數(shù)據(jù)文件的某種標識,按照統(tǒng)一的編碼體系進行編碼,從而能夠按照編碼結果對目標文件進行分類處理。
[0078]本發(fā)明實施例對于具體選擇的編碼方式并不需要進行限定,只需要保證:對于不同的文件資源(如圖片、音頻、網(wǎng)頁等等)標識,其編碼結果唯一即可,所以,至少應該保證:編碼的取值空間大小>待處理的文件數(shù)量大小。這里一般采用線性編碼方式,例如MD5等哈希算法,以64位二進制編碼為例,其編碼取值空間的大小為:
[0079]264=18,446,744,073,709,551,616
[0080]可見,對于百億至千億數(shù)量級別的文件存儲數(shù)量而言,64位編碼的取值空間足以保證不同文件標識的編碼值不同,一般來說,對于這種數(shù)量級的文件而言不會出現(xiàn)編碼值重復的情況。當然,對于理論上可能出現(xiàn)的編碼值重復情況,可以采用現(xiàn)有技術的中的編碼/簽名沖突解決算法來進行處理,保證最終的編碼值不重復,本發(fā)明實施例對此并不需要進行詳細介紹。
[0081]另外,根據(jù)實際使用需求,也可以通過調整編碼算法來控制取值空間的大小,例如將64位編碼方式更換為128位編碼方式、32位編碼方式等等,本發(fā)明實施例對此并不需要進行限定。[0082]確定編碼方式后,對編碼的取值區(qū)間進行分段。根據(jù)本發(fā)明方案,分段的數(shù)量直接影響整合存儲后的數(shù)量大小。在實施例中,采用簡單的一種方式:將整個編碼取值空間平均分為若干分段,每個分段對應一個整合存儲的文件數(shù)據(jù)包。
[0083]例如,對于大小為264的取值空間,按照以下方式分為8段:
【權利要求】
1.一種數(shù)據(jù)存儲方法,其特征在于,包括: 預先選取編碼算法,并對編碼的取值區(qū)間進行分段; 利用所述編碼算法,對目標數(shù)據(jù)文件的標識信息進行編碼; 根據(jù)編碼結果,對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲。
2.根據(jù)權利要求1所述的方法,其特征在于,所述對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲,包括: 將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個或多個文件數(shù)據(jù)包。
3.根據(jù)權利要求2所述的方法,其特征在于,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個文件數(shù)據(jù)包,包括: 在文件數(shù)據(jù)包大小超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分; 在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
4.根據(jù)權利要求2所述的方法,其特征在于,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個文件數(shù)據(jù)包,包括: 在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分; 在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
5.根據(jù)權利要求2所述的方法,其特征在于,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為多個文件數(shù)據(jù)包,包括: 在文件數(shù)據(jù)包大小超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
6.根據(jù)權利要求2所述的方法,其特征在于,所述將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲多個文件數(shù)據(jù)包,包括: 在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
7.根據(jù)權利要求2所述的方法,其特征在于,所述方法還包括: 為所述文件數(shù)據(jù)包生成索引信息,所述索引信息中至少包括:數(shù)據(jù)文件的索引鍵值、以及數(shù)據(jù)文件在文件數(shù)據(jù)包中的存儲地址。
8.根據(jù)權利要求2所述的方法,其特征在于,所述數(shù)據(jù)文件的索引鍵值為: 該數(shù)據(jù)文件的標識信息、或者標識信息的編碼值。
9.根據(jù)權利要求7所述的方法,其特征在于,所述方法還包括: 在生成索引信息后,根據(jù)數(shù)據(jù)文件的索引鍵值,對當前的索引信息進行排序。
10.根據(jù)權利要求1所述的方法,其特征在于,所述方法還包括: 根據(jù)編碼取值空間的分段結果以及對目標數(shù)據(jù)文件的編碼結果,生成針對目標文件的多個任務包,所述任務包用于分配給不同的分布式任務執(zhí)行模塊。
11.一種數(shù)據(jù)存儲裝置,其特征在于,包括: 分段單元,用于預先選取編碼算法,并對編碼的取值區(qū)間進行分段; 編碼單元,用于利用所述編碼算法,對目標數(shù)據(jù)文件的標識信息進行編碼; 存儲單元,用于根據(jù)編碼結果,對編碼值位于相同分段的多個數(shù)據(jù)文件進行整合存儲。
12.根據(jù)權利要求11所述的裝置,其特征在于,所述存儲單元,具體用于: 將編碼值位于相同分段的多個數(shù)據(jù)文件整合存儲為一個或多個文件數(shù)據(jù)包。
13.根據(jù)權利要求12所述的裝置,其特征在于, 所述分段單元具體用于:在文件數(shù)據(jù)包大小超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分; 所述存儲單元具體用于:在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
14.根據(jù)權利要求12所述的裝置,其特征在于, 所述分段單元具體用于:在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,對當前文件數(shù)據(jù)包所對應的分段進行再次劃分; 所述存儲單元具體用于:在新劃分得到的分段中,分別生成新的文件數(shù)據(jù)包并存儲。
15.根據(jù)權利要求12所述的裝置,其特征在于, 所述存儲單元具體用于:在文件數(shù)據(jù)包大小超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
16.根據(jù)權利要求12 所述的裝置,其特征在于, 所述存儲單元具體用于:在文件數(shù)據(jù)包所包含的數(shù)據(jù)文件數(shù)量超過預設閾值的情況下,在當前文件數(shù)據(jù)包所對應的分段中生成新的文件數(shù)據(jù)包并存儲。
17.根據(jù)權利要求12所述的裝置,其特征在于,所述裝置還包括: 索引信息生成單元,用于為所述文件數(shù)據(jù)包生成索引信息,所述索引信息中至少包括:數(shù)據(jù)文件的索引鍵值、以及數(shù)據(jù)文件在文件數(shù)據(jù)包中的存儲地址。
18.根據(jù)權利要求12所述的裝置,其特征在于,所述數(shù)據(jù)文件的索引鍵值為: 該數(shù)據(jù)文件的標識信息、或者標識信息的編碼值。
19.根據(jù)權利要求17所述的裝置,其特征在于, 所述索引信息生成單元,還用于在生成索引信息后,根據(jù)數(shù)據(jù)文件的索引鍵值,對當前的索引信息進行排序。
20.根據(jù)權利要求11所述的裝置,其特征在于,所述裝置還包括: 任務分配單元,用于根據(jù)編碼取值空間的分段結果以及對目標數(shù)據(jù)文件的編碼結果,生成針對目標文件的多個任務包,所述任務包用于分配給不同的分布式任務執(zhí)行模塊。
【文檔編號】G06F17/30GK103678293SQ201210314126
【公開日】2014年3月26日 申請日期:2012年8月29日 優(yōu)先權日:2012年8月29日
【發(fā)明者】阮星華 申請人:百度在線網(wǎng)絡技術(北京)有限公司