基于分布式數(shù)據(jù)庫HBase的結(jié)構(gòu)化數(shù)據(jù)的快速檢索系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種結(jié)構(gòu)化數(shù)據(jù)的快速檢索系統(tǒng)及方法,尤其是一種基于分布式數(shù)據(jù)庫HBase的結(jié)構(gòu)化數(shù)據(jù)的快速檢索系統(tǒng)及方法,屬于結(jié)構(gòu)化數(shù)據(jù)處理的技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]隨著物聯(lián)網(wǎng)技術(shù)的進步,社會正朝著一個“物與物連接”模式發(fā)展,當(dāng)前全球智慧化項目的推廣也在不斷推動著物聯(lián)網(wǎng)技術(shù)的發(fā)展。物聯(lián)網(wǎng)指的是使物理對象和設(shè)備增加傳感、計算和通信能力,將它們互相連接形成一個網(wǎng)絡(luò),并利用這個網(wǎng)絡(luò)化對象產(chǎn)生集體效益。傳感設(shè)備產(chǎn)生的數(shù)據(jù)具有海量、實時采樣、高并發(fā)的特點,針對這些數(shù)據(jù)的存儲問題,傳統(tǒng)數(shù)據(jù)庫解決方案出現(xiàn)瓶頸,無法滿足數(shù)據(jù)的存儲要求。
[0003]分布式NoSQL (not only SQL非關(guān)系型)數(shù)據(jù)庫HBase解決方案的出現(xiàn)很好的解決數(shù)據(jù)的存儲問題,采用key-value (鍵-值)數(shù)據(jù)對的列式存儲也很好的解決了數(shù)據(jù)的字段伸縮性。雖然分布式數(shù)據(jù)庫HBase有許多的優(yōu)點,很好的解決了數(shù)據(jù)的存儲問題,但是分布式數(shù)據(jù)庫HBase在檢索方面存在一定的局限性。首先,分布式數(shù)據(jù)庫HBase只支持針對Rowkey (HBase中每行的主鍵也就是key-value對中的key)的數(shù)據(jù)檢索,不支持對value (值)的數(shù)據(jù)檢索,而結(jié)構(gòu)化的數(shù)據(jù)中的value才是數(shù)據(jù)的價值所在,分布式數(shù)據(jù)庫HBase只提供對RowKey的一級索引檢索,還有范圍(BeginRowkey,EndRowkey)的scan (掃描,HBase API的一種,可以對響應(yīng)的Rowkey數(shù)據(jù)做出快速響應(yīng))查詢。對Value檢索會導(dǎo)致MapReduce任務(wù)形式的全表的暴力檢索,非常的耗時;再者,分布式數(shù)據(jù)庫HBase不能很好的支持SQL語言,由于已經(jīng)積累了多年針對關(guān)系型數(shù)據(jù)庫的應(yīng)用經(jīng)驗,有豐富的面向SQL的應(yīng)用接口需求,把分布式數(shù)據(jù)庫HBase的優(yōu)點和SQL的易用性結(jié)合起來也是有待解決的冋題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的不足,提供一種基于分布式數(shù)據(jù)庫HBase的結(jié)構(gòu)化數(shù)據(jù)的快速檢索系統(tǒng)及方法,其能快速得到目標(biāo)數(shù)據(jù),加快檢索效率,實現(xiàn)對SQL語句的支持,達到對數(shù)據(jù)檢索操作的方便易用。
[0005]按照本發(fā)明提供的技術(shù)方案,所述基于分布式數(shù)據(jù)庫HBase的結(jié)構(gòu)化數(shù)據(jù)的快速檢索系統(tǒng),包括分布式數(shù)據(jù)庫HBase系統(tǒng);在所述分布式數(shù)據(jù)庫HBase系統(tǒng)與客戶端間設(shè)有二級索引系統(tǒng),所述二級索引系統(tǒng)包括用于與客戶端連接的SQL解析層以及用于與分布式數(shù)據(jù)庫HBase系統(tǒng)連接的DML數(shù)據(jù)操作接口 ;
所述SQL解析層能接收客戶端傳遞的SQL語句解析并轉(zhuǎn)換為對應(yīng)DML操作,DML數(shù)據(jù)操作接口根據(jù)SQL解析層轉(zhuǎn)換的DML操作對分布式數(shù)據(jù)庫HBase系統(tǒng)進行所需的讀寫操作。
[0006]通過DML數(shù)據(jù)操作接口向分布式數(shù)據(jù)庫HBase系統(tǒng)寫入結(jié)構(gòu)化數(shù)據(jù)時,將結(jié)構(gòu)化數(shù)據(jù)的ID前添加Hash前綴,并存儲在數(shù)據(jù)表格的數(shù)據(jù)主鍵內(nèi);同時,將結(jié)構(gòu)化數(shù)據(jù)的ID、需要索引的字段前添加Hash前綴,并存儲在索引表格的索引主鍵內(nèi)。
[0007]在將結(jié)構(gòu)化數(shù)據(jù)寫入數(shù)據(jù)表格內(nèi)時,每個結(jié)構(gòu)化數(shù)據(jù)的ID后面的字段轉(zhuǎn)化成列簇的字段,索引表格內(nèi)列簇的字段為空。
[0008]對分布式數(shù)據(jù)庫HBase系統(tǒng)數(shù)據(jù)的寫入包括實時數(shù)據(jù)的采集存儲以及連線數(shù)據(jù)的批量導(dǎo)入。
[0009]一種基于分布式數(shù)據(jù)庫HBase的結(jié)構(gòu)化數(shù)據(jù)的快速檢索方法,在所述分布式數(shù)據(jù)庫HBase系統(tǒng)與客戶端間設(shè)有二級索引系統(tǒng),所述二級索引系統(tǒng)包括用于與客戶端連接的SQL解析層以及用于與分布式數(shù)據(jù)庫HBase系統(tǒng)連接的DML數(shù)據(jù)操作接口 ;
所述SQL解析層能接收客戶端傳遞的SQL語句解析并轉(zhuǎn)換為對應(yīng)DML操作,DML數(shù)據(jù)操作接口根據(jù)SQL解析層轉(zhuǎn)換的DML操作對分布式數(shù)據(jù)庫HBase系統(tǒng)進行所需的讀寫操作;通過DML數(shù)據(jù)操作接口向分布式數(shù)據(jù)庫HBase系統(tǒng)寫入結(jié)構(gòu)化數(shù)據(jù)時,將結(jié)構(gòu)化數(shù)據(jù)的ID前添加Hash前綴,并存儲在數(shù)據(jù)表格的數(shù)據(jù)主鍵內(nèi);同時,將結(jié)構(gòu)化數(shù)據(jù)的ID、需要索引的字段前添加Hash前綴,并存儲在索引表格的索引主鍵內(nèi),以便快速檢索。
[0010]在將結(jié)構(gòu)化數(shù)據(jù)寫入數(shù)據(jù)表格內(nèi)時,每個結(jié)構(gòu)化數(shù)據(jù)的ID后面的字段轉(zhuǎn)化成列簇的字段,索引表格內(nèi)列簇的字段為空。
[0011]本發(fā)明的優(yōu)點:基于分布式數(shù)據(jù)庫HBase系統(tǒng)的非植入式開發(fā),不會增加分布式數(shù)據(jù)庫HBase系統(tǒng)的邏輯復(fù)雜性,擁有很好的擴展性和兼容性;大幅提升了分布式數(shù)據(jù)庫HBase系統(tǒng)中對value數(shù)據(jù)的檢索效率,能將SQL的易用性與分布式數(shù)據(jù)庫HBase系統(tǒng)完美結(jié)合,大大提升了分布式數(shù)據(jù)庫HBase系統(tǒng)的便捷性,同時也拓寬了分布式數(shù)據(jù)庫HBase系統(tǒng)的應(yīng)用領(lǐng)域。
【附圖說明】
[0012]圖1為本發(fā)明的結(jié)構(gòu)框圖。
[0013]圖2為本發(fā)明的流程圖。
[0014]圖3為本發(fā)明原始結(jié)構(gòu)化數(shù)據(jù)進行存儲后的示意圖。
[0015]圖4為本發(fā)明數(shù)據(jù)檢索的過程示意圖。
[0016]附圖標(biāo)記說明:1-客戶端、2-二級索引系統(tǒng)、3-分布式數(shù)據(jù)庫HBase系統(tǒng)、4-SQL解析層以及5-DML數(shù)據(jù)操作接口。
【具體實施方式】
[0017]下面結(jié)合具體附圖和實施例對本發(fā)明作進一步說明。
[0018]如圖1所示:能快速得到目標(biāo)數(shù)據(jù),加快檢索效率,實現(xiàn)對SQL語句的支持,達到對數(shù)據(jù)檢索操作的方便易用,本發(fā)明包括分布式數(shù)據(jù)庫HBase系統(tǒng)3 ;在所述分布式數(shù)據(jù)庫HBase系統(tǒng)3與客戶端I間設(shè)有二級索引系統(tǒng)2,所述二級索引系統(tǒng)2包括用于與客戶端I連接的SQL解析層4以及用于與分布式數(shù)據(jù)庫HBase系統(tǒng)3連接的DML數(shù)據(jù)操作接口 5 ;
所述SQL解析層4能接收客戶端I傳遞的SQL語句解析并轉(zhuǎn)換為對應(yīng)DML操作,DML數(shù)據(jù)操作接口 5根據(jù)SQL解析層4轉(zhuǎn)換的DML操作對分布式數(shù)據(jù)庫HBase系統(tǒng)3進行所需的讀寫操作。
[0019]具體地,二級索引系統(tǒng)2承接客戶端I與分布式數(shù)據(jù)庫HBase系統(tǒng)3之間的橋梁,封裝分布式數(shù)據(jù)庫HBase系統(tǒng)3的API,為客戶端I提供通用的使用接口。SQL解析層4針對SQL語句的解析層,負責(zé)將客戶端I通過RPC遠程調(diào)用傳遞過來的SQL語句進行語義解析,轉(zhuǎn)換成為一系列的DML (Data Manipulat1n Language,是數(shù)據(jù)操縱語言:它們是SELECT、UPDATE、INSERT、DELETE,這四條命令是用來對分布式數(shù)據(jù)庫HBase系統(tǒng)里的數(shù)據(jù)進行操作的語言)操作。DML數(shù)據(jù)操作接口 5主要是完成對HBase API的封裝,內(nèi)部分兩種接口,一種是數(shù)據(jù)的寫入接口,提供數(shù)據(jù)向分布式數(shù)據(jù)庫HBase系統(tǒng)3的數(shù)據(jù)輸入;還有一種是數(shù)據(jù)的檢索接口,提供通過檢索從分布式數(shù)據(jù)庫HBase系統(tǒng)3中輸出目標(biāo)數(shù)據(jù)。數(shù)據(jù)的寫入分為兩種形式,一種是通過實時的數(shù)據(jù)采集存儲,一種是離線的數(shù)據(jù)批量導(dǎo)入。
[0020]如圖2所示,為客戶端I的應(yīng)用層調(diào)用到分布式數(shù)據(jù)庫HBase系統(tǒng)3之間的整體的數(shù)據(jù)流程圖,其中包括兩種數(shù)據(jù)流程,一個是數(shù)據(jù)的寫入流程,另外一個是數(shù)據(jù)的檢索流程。首先,客戶端I通過RPC遠程調(diào)用,傳遞過來應(yīng)用層的SQL語句,SQL語句在SQL解析層4執(zhí)行語義分析,通過對SQL語義分析獲得的結(jié)果來判斷數(shù)據(jù)是寫入操作還是檢索操作,比如insert (插入)、update (更新)等都屬于寫入操作,而select (選擇)操作就屬于檢索操作。對于數(shù)據(jù)的寫入操作,由于不一定都是實時在線的數(shù)據(jù)寫入,又開辟了離線批量數(shù)據(jù)導(dǎo)入,其中,離線批量數(shù)據(jù)導(dǎo)入是通過將采集來的數(shù)據(jù)寫入到臨時文件,在集群任務(wù)比較空閑的時候,通過對文件的處理,進行數(shù)據(jù)的批量導(dǎo)入,是一個非實時的過程。
[002