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