數(shù)據(jù)存儲、查詢方法和裝置的制造方法
【技術領域】
[0001] 本發(fā)明涉及計算機技術領域,特別是涉及一種數(shù)據(jù)存儲、查詢方法和裝置。
【背景技術】
[0002] 隨著計算機技術的進步,計算機技術對人們的生活、工作產(chǎn)生了極大的影響,產(chǎn)生 了大量的數(shù)據(jù)需要計算機存儲和處理。目前,計算機所要存儲的數(shù)據(jù)已經(jīng)由原來的MB (兆 字節(jié))、GB (千兆字節(jié))數(shù)量級,上升到了 TB (萬億字節(jié))、甚至PB (千萬億字節(jié))數(shù)量級,面 對數(shù)據(jù)的爆炸式增長,如何降低數(shù)據(jù)存儲成本已成為人們急需解決的問題。
[0003] 傳統(tǒng)的降低數(shù)據(jù)存儲成本的手段,一般是直接對數(shù)據(jù)進行壓縮處理后存儲,然而, 這種犧牲了計算時間來換取地存儲空間的方式,降低了數(shù)據(jù)的使用效率,比如查詢數(shù)據(jù)時 必須將壓縮的數(shù)據(jù)全部解壓縮才能使用。
【發(fā)明內(nèi)容】
[0004] 基于此,有必要針對傳統(tǒng)的壓縮數(shù)據(jù)的方法降低了數(shù)據(jù)的使用效率的問題,提供 一種數(shù)據(jù)存儲方法和裝置、數(shù)據(jù)查詢方法和裝置。
[0005] -種數(shù)據(jù)存儲方法,待存儲數(shù)據(jù)包括原始數(shù)據(jù)標識和與所述原始數(shù)據(jù)標識對應的 原始數(shù)據(jù)內(nèi)容,所述方法包括:
[0006] 根據(jù)所述原始數(shù)據(jù)標識對所述待存儲數(shù)據(jù)進行聚類,每一類分別對應一個數(shù)據(jù) 塊,并根據(jù)所述數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)標識生成數(shù)據(jù)塊標識;
[0007] 將所述數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)內(nèi)容進行壓縮,將壓縮數(shù)據(jù)內(nèi)容存儲 在所述數(shù)據(jù)塊的數(shù)據(jù)區(qū),并獲得所述壓縮數(shù)據(jù)內(nèi)容的地址標識;
[0008] 根據(jù)所述數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)標識和所述地址標識生成索引,并 將所述索引存儲于所述數(shù)據(jù)塊的索引區(qū)。
[0009] -種數(shù)據(jù)存儲裝置,待存儲數(shù)據(jù)包括原始數(shù)據(jù)標識和與所述原始數(shù)據(jù)標識對應的 原始數(shù)據(jù)內(nèi)容,所述裝置包括:
[0010] 數(shù)據(jù)塊生成模塊,用于根據(jù)所述原始數(shù)據(jù)標識對所述待存儲數(shù)據(jù)進行聚類,每一 類分別對應一個數(shù)據(jù)塊,并根據(jù)所述數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)標識生成數(shù)據(jù)塊 標識;
[0011] 原始數(shù)據(jù)內(nèi)容壓縮模塊,用于將所述數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)內(nèi)容進 行壓縮,將壓縮數(shù)據(jù)內(nèi)容存儲在所述數(shù)據(jù)塊的數(shù)據(jù)區(qū),并獲得所述壓縮數(shù)據(jù)內(nèi)容的地址標 識;
[0012] 索引生成模塊,用于根據(jù)所述數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)標識和所述地 址標識生成索引,并將所述索引存儲于所述數(shù)據(jù)塊的索引區(qū)。
[0013] 上述數(shù)據(jù)存儲方法和裝置,將待存儲數(shù)據(jù)進行聚類后,每一類待存儲數(shù)據(jù)分別對 應一個數(shù)據(jù)塊,并根據(jù)數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)標識生成數(shù)據(jù)塊標識,而數(shù)據(jù) 塊包括索引區(qū)和數(shù)據(jù)區(qū),數(shù)據(jù)區(qū)存儲了壓縮數(shù)據(jù)內(nèi)容,索引區(qū)存儲了根據(jù)原始數(shù)據(jù)標識和 數(shù)據(jù)區(qū)中壓縮數(shù)據(jù)內(nèi)容的地址標識生成的索引。查詢數(shù)據(jù)時,可以直接根據(jù)查詢數(shù)據(jù)標識 確定查詢數(shù)據(jù)所在的數(shù)據(jù)塊,根據(jù)數(shù)據(jù)塊中的索引獲得查詢數(shù)據(jù)內(nèi)容的地址標識,從而可 以根據(jù)該地址標識從數(shù)據(jù)區(qū)中獲取壓縮查詢數(shù)據(jù)內(nèi)容,解壓縮后便可獲得壓縮查詢數(shù)據(jù)內(nèi) 容。既可以達到很好的壓縮效果,減少存儲數(shù)據(jù)所占的空間,又能快速定位數(shù)據(jù)所在位置, 實現(xiàn)快速查詢數(shù)據(jù),而無需將所有壓縮數(shù)據(jù)解壓縮,極大地提高了數(shù)據(jù)的使用效率。
[0014] 一種數(shù)據(jù)查詢方法,所述方法包括:
[0015] 獲取原始查詢數(shù)據(jù)標識;
[0016] 根據(jù)所述原始查詢數(shù)據(jù)標識和預存的數(shù)據(jù)塊標識確定所述原始查詢數(shù)據(jù)標識所 對應的數(shù)據(jù)塊;
[0017] 根據(jù)所述數(shù)據(jù)塊的索引區(qū)中的索引,獲得與所述原始查詢數(shù)據(jù)標識對應的地址標 識;
[0018] 根據(jù)所述地址標識從所述數(shù)據(jù)塊的數(shù)據(jù)區(qū)獲取壓縮查詢數(shù)據(jù)內(nèi)容,解壓縮所述壓 縮查詢數(shù)據(jù)內(nèi)容,獲得查詢數(shù)據(jù)內(nèi)容。
[0019] 一種數(shù)據(jù)查詢裝置,所述裝置包括:
[0020] 原始查詢數(shù)據(jù)標識獲取模塊,用于獲取原始查詢數(shù)據(jù)標識;
[0021] 數(shù)據(jù)塊確定模塊,用于根據(jù)所述原始查詢數(shù)據(jù)標識和預存的數(shù)據(jù)塊標識確定所述 原始查詢數(shù)據(jù)標識所對應的數(shù)據(jù)塊;
[0022] 地址標識獲取模塊,用于根據(jù)所述數(shù)據(jù)塊的索引區(qū)中的索引,獲得與所述原始查 詢數(shù)據(jù)標識對應的地址標識;
[0023] 查詢數(shù)據(jù)內(nèi)容獲取模塊,用于根據(jù)所述地址標識從所述數(shù)據(jù)塊的數(shù)據(jù)區(qū)獲取壓縮 查詢數(shù)據(jù)內(nèi)容,解壓縮模塊,用于解壓縮所述壓縮查詢數(shù)據(jù)內(nèi)容,獲得查詢數(shù)據(jù)內(nèi)容。
[0024] 上述數(shù)據(jù)查詢方法和裝置,獲取原始查詢數(shù)據(jù)標識后,通過該原始查詢數(shù)據(jù)標識 和預存的數(shù)據(jù)塊標識可以確定原始查詢數(shù)據(jù)標識所對應的數(shù)據(jù)塊,則確定了查詢數(shù)據(jù)所在 的數(shù)據(jù)塊,從數(shù)據(jù)塊中的索引區(qū)中獲得與原始查詢數(shù)據(jù)標識對應的地址標識,從而根據(jù)該 地址標識可以從數(shù)據(jù)塊中的數(shù)據(jù)區(qū)獲取壓縮查詢數(shù)據(jù)內(nèi)容,將壓縮查詢數(shù)據(jù)內(nèi)容解壓縮便 可獲得查詢數(shù)據(jù)內(nèi)容??煽焖俣ㄎ粩?shù)據(jù)所在位置,實現(xiàn)快速檢索,而無需將所有壓縮數(shù)據(jù)解 壓縮,極大地提高了數(shù)據(jù)的使用效率。
【附圖說明】
[0025] 圖1為一個實施例中數(shù)據(jù)存儲方法的流程示意圖;
[0026] 圖2為一個實施例中從數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)標識中截去低位部 分,獲得壓縮數(shù)據(jù)標識,并將壓縮數(shù)據(jù)標識和壓縮數(shù)據(jù)內(nèi)容的地址標識對應存儲于數(shù)據(jù)塊 的索引區(qū)的步驟的流程示意圖;
[0027] 圖3為一個實施例中將數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)內(nèi)容進行壓縮,將壓 縮數(shù)據(jù)內(nèi)容存儲在數(shù)據(jù)塊的數(shù)據(jù)區(qū),并獲得壓縮數(shù)據(jù)內(nèi)容的地址標識的步驟的流程示意 圖;
[0028] 圖4為一個實施例中生成解碼加速表的步驟的流程示意圖;
[0029] 圖5為一個具體應用場景中數(shù)據(jù)塊的結(jié)構(gòu)框圖;
[0030] 圖6為一個實施例中數(shù)據(jù)查詢方法的流程示意圖;
[0031] 圖7為一個實施例中截去原始查詢數(shù)據(jù)標識的低位部分,獲得壓縮查詢數(shù)據(jù)標 識,獲取數(shù)據(jù)塊的索引區(qū)中存儲的壓縮查詢數(shù)據(jù)標識對應的地址標識的步驟的流程示意 圖;
[0032] 圖8為一個具體應用場景中哈夫曼樹和解碼加速表的示意圖;
[0033] 圖9為一個實施例中數(shù)據(jù)存儲裝置的結(jié)構(gòu)框圖;
[0034] 圖10為一個實施例中索引生成模塊的結(jié)構(gòu)框圖;
[0035] 圖11為一個實施例中原始數(shù)據(jù)內(nèi)容壓縮模塊的結(jié)構(gòu)框圖;
[0036] 圖12為另一個實施例中數(shù)據(jù)存儲裝置的結(jié)構(gòu)框圖;
[0037] 圖13為一個實施例中數(shù)據(jù)查詢裝置的結(jié)構(gòu)框圖;
[0038] 圖14為一個實施例中地址標識獲取模塊的結(jié)構(gòu)框圖;
[0039] 圖15為一個實施例中第一獲取模塊的結(jié)構(gòu)框圖;
[0040] 圖16為另一個實施例中第一獲取模塊的結(jié)構(gòu)框圖;
[0041] 圖17為一個實施例中查詢數(shù)據(jù)內(nèi)容獲取模塊的結(jié)構(gòu)框圖;
[0042] 圖18為一個實施例中能實現(xiàn)本發(fā)明實施例的一個計算機系統(tǒng)的模塊圖。
【具體實施方式】
[0043] 為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。
[0044] 可以理解,本發(fā)明所使用的術語"第一"、"第二"等可在本文中用于描述各種元件, 但這些元件不受這些術語限制。這些術語僅用于將第一個元件與另一個元件區(qū)分。舉例來 說,在不脫離本發(fā)明的范圍的情況下,可以將第一預設位數(shù)稱為第二預設位數(shù),且類似地, 可將第二預設位數(shù)稱為第一預設位數(shù)。第一預設位數(shù)和第二預設位數(shù)兩者都是預設位數(shù), 但其不是同一預設位數(shù)。
[0045] 除非上下文另有特定清楚的描述,本發(fā)明中的元件和組件,數(shù)量既可以單個的形 式存在,也可以多個的形式存在,本發(fā)明并不對此進行限定。本發(fā)明中的步驟雖然用標號進 行了排列,但并不用于限定步驟的先后次序,除非明確說明了步驟的次序或者某步驟的執(zhí) 行需要其他步驟作為基礎,否則步驟的相對次序是可以調(diào)整的??梢岳斫?,本文中所使用的 術語"和/或"涉及且涵蓋相關聯(lián)的所列項目中的一者或一者以上的任何和所有可能的組 合。
[0046] 如圖1所示,在一個實施例中,提供了一種數(shù)據(jù)存儲方法,該方法包括:
[0047] 步驟102,根據(jù)原始數(shù)據(jù)標識對待存儲數(shù)據(jù)進行聚類,每一類分別對應一個數(shù)據(jù) 塊,并根據(jù)數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)標識生成數(shù)據(jù)塊標識。
[0048] 待存儲數(shù)據(jù)包括原始數(shù)據(jù)標識和與原始數(shù)據(jù)標識對應的原始數(shù)據(jù)內(nèi)容。"原始"表 示數(shù)據(jù)原本的狀態(tài),未經(jīng)壓縮或其它處理。原始數(shù)據(jù)標識可以是待存儲數(shù)據(jù)的鍵(key),可 用于區(qū)分不同的待存儲數(shù)據(jù)。對待存儲數(shù)據(jù)進行聚類,可以將具有公共部分的原始數(shù)據(jù)標 識集中存儲,并將各個原始數(shù)據(jù)標識的公共部分抽取出來,不再重復存儲,存儲原始數(shù)據(jù)標 識時可只存儲非公共部分,達到對原始數(shù)據(jù)標識進行定長壓縮的目的。而定長壓縮后的數(shù) 據(jù)依然具備隨機訪問的特性,便于查找。
[0049] 數(shù)據(jù)塊是一組或按順序連續(xù)排列在一起的幾組記錄,是主存儲器與輸入、輸出設 備或外存儲器之間進行傳輸?shù)囊粋€數(shù)據(jù)單位??梢詫?shù)據(jù)塊存儲于計算機的內(nèi)存中。將待 存儲數(shù)據(jù)根據(jù)原始數(shù)據(jù)標識進行聚類后,每一類對應一個數(shù)據(jù)塊,并根據(jù)數(shù)據(jù)塊對應的待 存儲數(shù)據(jù)的原始數(shù)據(jù)標識生成數(shù)據(jù)塊標識。這樣在查詢數(shù)據(jù)時,可根據(jù)查詢數(shù)據(jù)標識便可 定位數(shù)據(jù)所在的數(shù)據(jù)塊,從而達到快速查找的目的。
[0050] 步驟104,將數(shù)據(jù)塊對應的待存儲數(shù)據(jù)的原始數(shù)據(jù)內(nèi)容進行壓縮,將壓縮數(shù)據(jù)內(nèi)容 存儲在數(shù)據(jù)塊的數(shù)據(jù)區(qū),并獲得壓縮數(shù)據(jù)內(nèi)容的地址標識。
[0051] 為了獲得較大的壓縮率,可使用變長編碼對原始數(shù)據(jù)內(nèi)容進行壓縮。變長編碼就 是熵編碼,它是以每個數(shù)據(jù)單元的出現(xiàn)概率或頻率為依據(jù)的一種編碼方式,讓出現(xiàn)最多的 碼字符用最短的編碼標識,這樣盡可能的縮短了編碼長度;最后的編碼結(jié)果是