一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法及裝置制造方法【專(zhuān)利摘要】本發(fā)明旨在提供一種在超大規(guī)模列存數(shù)據(jù)庫(kù)中快速定位及訪問(wèn)數(shù)據(jù)的方法。包括,將列存數(shù)據(jù)根據(jù)特征進(jìn)行數(shù)據(jù)塊劃分,對(duì)全部數(shù)據(jù)塊建立多階特征索引。本發(fā)明中數(shù)據(jù)的特征劃分使同類(lèi)數(shù)據(jù)相聚合,降低數(shù)據(jù)塊內(nèi)部離散度,訪問(wèn)更加精準(zhǔn)。而高階索引可以加快數(shù)據(jù)過(guò)濾速度,并有效控制對(duì)低階索引和數(shù)據(jù)的訪問(wèn)。以上兩種方式將大量減少內(nèi)存與I/O設(shè)備間的數(shù)據(jù)交換,提高數(shù)據(jù)庫(kù)運(yùn)行效率?!緦?zhuān)利說(shuō)明】一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法及裝置【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明屬于計(jì)算機(jī)技術(shù)應(yīng)用領(lǐng)域,特別是涉及到一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法。【
背景技術(shù):
】[0002]隨著社會(huì)和計(jì)算機(jī)技術(shù)的不斷發(fā)展,越來(lái)越多的數(shù)據(jù)被記錄下來(lái),以便于進(jìn)行深入分析為決策提供依據(jù)。同時(shí)用于記錄數(shù)據(jù)并提供查詢(xún)分析服務(wù)的數(shù)據(jù)庫(kù)系統(tǒng)也隨著需求不斷在進(jìn)行著演變。列存數(shù)據(jù)庫(kù)就是基于大數(shù)據(jù)分析需求而出現(xiàn)的一種新型數(shù)據(jù)庫(kù),主要是通過(guò)將數(shù)據(jù)按照邏輯列的形式集中進(jìn)行存儲(chǔ),減少數(shù)據(jù)訪問(wèn)時(shí)不必要的磁盤(pán)開(kāi)銷(xiāo)來(lái)提高查詢(xún)的響應(yīng)速度。同時(shí)列存數(shù)據(jù)庫(kù)也用到了一些跟行存數(shù)據(jù)庫(kù)通用的技術(shù),如索引。[0003]在列存數(shù)據(jù)庫(kù)中一種使用索引的方式是對(duì)小規(guī)模集合建立粗糙索引,以索引進(jìn)行數(shù)據(jù)過(guò)濾,但是會(huì)存在下述問(wèn)題:[0004](I)通常同一列的數(shù)據(jù)被劃分為若干個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊中的記錄個(gè)數(shù)或者形成存儲(chǔ)結(jié)構(gòu)的長(zhǎng)度相同,這樣做的好處是劃分簡(jiǎn)單,但帶來(lái)的問(wèn)題是數(shù)據(jù)組織比較雜亂,粗糙索引很多時(shí)候無(wú)法完成有效過(guò)濾。[0005](2)為了提高性能,通常索引是常駐內(nèi)存的,在一定的數(shù)據(jù)規(guī)模下這樣做沒(méi)有問(wèn)題。當(dāng)數(shù)據(jù)達(dá)到超大規(guī)模時(shí),索引也要耗費(fèi)大量的內(nèi)存空間。目前主要有兩種方式來(lái)解決,如圖1所示,一種是擴(kuò)大數(shù)據(jù)切塊的粒度,從而降低索引自身的信息量以保持索引常駐內(nèi)存狀態(tài)。另外一種就是按照需要在內(nèi)存只緩存部分索引,需要時(shí)內(nèi)存與存儲(chǔ)設(shè)備間進(jìn)行交換。前一種方法的缺點(diǎn)是數(shù)據(jù)塊被命中的幾率加大,過(guò)濾效率降低;后一種帶來(lái)的問(wèn)題是經(jīng)常在磁盤(pán)和內(nèi)存間進(jìn)行數(shù)據(jù)交換,而且在磁盤(pán)上頻繁小數(shù)據(jù)量的I/o會(huì)極大的影響性能。【
發(fā)明內(nèi)容】[0006]本發(fā)明主要解決的是如何在超大規(guī)模數(shù)據(jù)量的情況下仍然高效的進(jìn)行數(shù)據(jù)訪問(wèn),尤其是如何組織數(shù)據(jù)和索引,減小查詢(xún)時(shí)的系統(tǒng)開(kāi)銷(xiāo)。[0007]為了達(dá)到上述目的,本發(fā)明采取的技術(shù)方案為:一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法,其特征在于,包括如下步驟:[0008](I)基于數(shù)據(jù)特征的數(shù)據(jù)塊劃分;[0009](2)建立多階索引。[0010]優(yōu)選的,所述步驟(I)具體的操作方法為:[0011]a.將數(shù)據(jù)特征相近的數(shù)據(jù)進(jìn)行歸集;[0012]b.對(duì)最小數(shù)據(jù)塊和最大數(shù)據(jù)塊進(jìn)行限定;[0013]c.當(dāng)且僅當(dāng)在限定的最大最小值之間出現(xiàn)符合數(shù)據(jù)特征差異原則時(shí)才進(jìn)行切分,小于最小長(zhǎng)度不切分,等于最大長(zhǎng)度時(shí)強(qiáng)制切分。[0014]優(yōu)選的,所述步驟(2)建立多階索引的方法為:[0015]a.對(duì)應(yīng)步驟(I)中的數(shù)據(jù)塊建立低階索引;[0016]b.建立高階索引,每個(gè)高階索引元素由低階索引的若干元素聚合而成;[0017]c.高階索引常駐內(nèi)存。[0018]本發(fā)明的另一方面,一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)裝置,包括:[0019]數(shù)據(jù)塊劃分模塊,用于基于數(shù)據(jù)特征的數(shù)據(jù)塊劃分;[0020]多階索引建立模塊,用于建立多階索引。[0021]優(yōu)選的,所述數(shù)據(jù)塊劃分模塊包括:[0022]歸集模塊,用于將數(shù)據(jù)特征相近的數(shù)據(jù)進(jìn)行歸集;[0023]限定模塊,用于對(duì)最小數(shù)據(jù)塊和最大數(shù)據(jù)塊進(jìn)行限定;[0024]切分模塊,用于在限定的最大最小值之間出現(xiàn)符合數(shù)據(jù)特征差異原則時(shí)進(jìn)行切分。[0025]優(yōu)選的,所述多階索引建立模塊包括:[0026]低階索引建立模塊,用于對(duì)應(yīng)數(shù)據(jù)塊建立低階索引;[0027]高階索引建立模塊,用于由低階索引的若干元素聚合成高階索引元素;[0028]內(nèi)存模塊,用于在內(nèi)存中常駐高階索引。[0029]本發(fā)明的有益效果為:[0030]通過(guò)本發(fā)明地實(shí)施,按照數(shù)據(jù)特征進(jìn)行數(shù)據(jù)塊(集合)的劃分,使得內(nèi)容相近的數(shù)據(jù)被整合在一起,并被索引描述。同時(shí)針對(duì)超大規(guī)模數(shù)據(jù)索引信息無(wú)法全部常駐內(nèi)存的問(wèn)題,本發(fā)明才用多級(jí)索引方式對(duì)低階索引進(jìn)行聚合形成高階索引。高階索引常駐內(nèi)存,通過(guò)高階索引可以提高數(shù)據(jù)過(guò)濾效率,同時(shí)有效的控制低階索引在內(nèi)存和I/o設(shè)備間進(jìn)行交換的頻度,減小系統(tǒng)開(kāi)銷(xiāo),在超大規(guī)模數(shù)據(jù)量的列存數(shù)據(jù)庫(kù)上提高了數(shù)據(jù)過(guò)濾的效率,降低對(duì)系統(tǒng)硬件資源的占用。同時(shí)不需要重新組織已有數(shù)據(jù),大大降低了運(yùn)行及維護(hù)成本?!緦?zhuān)利附圖】【附圖說(shuō)明】[0031]圖1是現(xiàn)有技術(shù)的超大規(guī)模數(shù)據(jù)訪問(wèn)解決方法示意圖;[0032]圖2是本發(fā)明實(shí)施例中原數(shù)據(jù)塊劃分示意圖;[0033]圖3是本發(fā)明數(shù)據(jù)塊劃分示意圖;[0034]圖4是本發(fā)明建立多階索引示意圖。【具體實(shí)施方式】[0035]1.基于數(shù)據(jù)特征的數(shù)據(jù)塊(集合)劃分[0036]原有數(shù)據(jù)劃分是基于固定數(shù)據(jù)元素個(gè)數(shù)或者存儲(chǔ)長(zhǎng)度的,假如有這樣一列數(shù)據(jù),如圖2所示,則查詢(xún)語(yǔ)句為SELETE*FR0MtableWHEREa>l;[0037]按照索引檢索,數(shù)據(jù)塊I直接被過(guò)濾掉,數(shù)據(jù)塊2和3需要從磁盤(pán)中讀出并掃描全部數(shù)據(jù)完成過(guò)濾。共需要進(jìn)行10次判斷,有效結(jié)果數(shù)為6。[0038]本發(fā)明提出按照數(shù)據(jù)特征進(jìn)行分塊,如圖3所示,只需要將數(shù)據(jù)塊3從磁盤(pán)讀出,而I和2可以根據(jù)索引直接被過(guò)濾掉。共需進(jìn)行6次判斷,有效結(jié)果數(shù)為6。上面只是使用數(shù)值簡(jiǎn)單舉例,該方法只強(qiáng)調(diào)將特征相近的數(shù)據(jù)進(jìn)行歸集,不只限于數(shù)值比較的形式。[0039]另外一點(diǎn),為了避免極小和極大數(shù)據(jù)塊的出現(xiàn),可以對(duì)最小最大數(shù)據(jù)塊進(jìn)行限定。當(dāng)且僅當(dāng)在最大最小值之間出現(xiàn)符合數(shù)據(jù)特征差異原則時(shí)才進(jìn)行切分。小于最小長(zhǎng)度(或數(shù)據(jù)量)不切分,等于最大長(zhǎng)度(或數(shù)據(jù)量)時(shí)強(qiáng)制切分。[0040]2.多級(jí)(階)索引[0041]當(dāng)數(shù)據(jù)量足夠大時(shí),索引信息無(wú)法常駐內(nèi)存,執(zhí)行查詢(xún)命令時(shí)需要將整列的索引從磁盤(pán)調(diào)入到內(nèi)存中進(jìn)行過(guò)濾操作。而索引信息一般比較小,幾十到幾百字節(jié)。這樣頻繁的小數(shù)據(jù)量讀取操作非常耗時(shí)。例如查詢(xún)SQL:[0042]SELECT*FR0MtableWHEREa>5;[0043]如果只有低階索引那么整列的索引值都需要不斷的從磁盤(pán)讀取。[0044]本發(fā)明中采用多級(jí)(階)索引方案,高階索引常駐內(nèi)存,如圖4所示,圖中的數(shù)字表示該低階索引對(duì)應(yīng)數(shù)據(jù)塊中數(shù)據(jù)的最大值。[0045]還以上面的SQL為例,低階索引的前若干個(gè)元素共同匯總成高階索引的第一個(gè)值,高階索引的值為對(duì)應(yīng)前若干個(gè)低階索引值的最大值,圖中示例為前6個(gè)低階索引聚合成第一個(gè)高階索引元素,高階索引的值為對(duì)應(yīng)前6個(gè)低階索引值的最大值,查詢(xún)執(zhí)行時(shí)通過(guò)高階索引判定第一組低階索引對(duì)應(yīng)的數(shù)據(jù)不滿足WHERE條件,直接被過(guò)濾掉,既不需要讀取低階索引也不需要讀取數(shù)據(jù)。通過(guò)常駐內(nèi)存的高階索引就可以避免整列的讀取低階索引信息,減少磁盤(pán)與內(nèi)存的交互。同時(shí)高階索引一次性過(guò)濾掉6個(gè)數(shù)據(jù)塊。當(dāng)高階索引不能過(guò)濾時(shí)再讀取相應(yīng)的低階索引,進(jìn)行二次過(guò)濾。這樣也避免了僅僅通過(guò)擴(kuò)大數(shù)據(jù)塊而降低索引數(shù)量造成讀取大量數(shù)據(jù)塊的情況?!緳?quán)利要求】1.一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法,其特征在于,包括如下步驟:(1)基于數(shù)據(jù)特征的數(shù)據(jù)塊劃分;(2)建立多階索引。2.根據(jù)權(quán)利要求1所述的一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法,其特征在于,所述步驟(I)具體的操作方法為:a.將數(shù)據(jù)特征相近的數(shù)據(jù)進(jìn)行歸集;b.對(duì)最小數(shù)據(jù)塊和最大數(shù)據(jù)塊進(jìn)行限定;c.當(dāng)且僅當(dāng)在限定的最大最小值之間出現(xiàn)符合數(shù)據(jù)特征差異原則時(shí)才進(jìn)行切分,小于最小長(zhǎng)度不切分,等于最大長(zhǎng)度時(shí)強(qiáng)制切分。3.根據(jù)權(quán)利要求1所述的一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)方法,其特征在于,所述步驟(2)建立多階索引的方法為:a.對(duì)應(yīng)步驟(I)中的數(shù)據(jù)塊建立低階索引;b.建立高階索引,每個(gè)高階索引元素由低階索引的若干元素聚合而成;c.高階索引常駐內(nèi)存。4.一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)裝置,其特征在于,包括:數(shù)據(jù)塊劃分模塊,用于基于數(shù)據(jù)特征的數(shù)據(jù)塊劃分;多階索引建立模塊,用于建立多階索引。5.根據(jù)權(quán)利要求4所述的一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)裝置,其特征在于,所述數(shù)據(jù)塊劃分模塊包括:歸集模塊,用于將數(shù)據(jù)特征相近的數(shù)據(jù)進(jìn)行歸集;限定模塊,用于對(duì)最小數(shù)據(jù)塊和最大數(shù)據(jù)塊進(jìn)行限定;切分模塊,用于當(dāng)且僅當(dāng)在限定的最大最小值之間出現(xiàn)符合數(shù)據(jù)特征差異原則時(shí)進(jìn)行切分。6.根據(jù)權(quán)利要求4所述的一種適應(yīng)超大規(guī)模列存數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)裝置,其特征在于,所述多階索引建立模塊包括:低階索引建立模塊,用于對(duì)應(yīng)數(shù)據(jù)塊建立低階索引;高階索引建立模塊,用于由低階索引的若干元素聚合成高階索引元素;內(nèi)存模塊,用于在內(nèi)存中常駐高階索弓I?!疚臋n編號(hào)】G06F17/30GK104376119SQ201410729620【公開(kāi)日】2015年2月25日申請(qǐng)日期:2014年12月3日優(yōu)先權(quán)日:2014年12月3日【發(fā)明者】劉威,譚忠濤,鹿明,武新,崔維力申請(qǐng)人:天津南大通用數(shù)據(jù)技術(shù)股份有限公司