999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于位圖技術(shù)創(chuàng)建HBASE二級索引的實踐

2021-07-19 11:11:54晏學(xué)義
信息通信技術(shù) 2021年3期
關(guān)鍵詞:用戶

王 飛 張 明 晏學(xué)義

中國聯(lián)合網(wǎng)絡(luò)通信有限公司濟(jì)南軟件研究院 濟(jì)南 250100

引言

現(xiàn)代社會是一個高速發(fā)展的社會,科技發(fā)達(dá),信息流通,人們之間的交流越來越密切,生活也越來越方便,大數(shù)據(jù)就是這個高科技時代的產(chǎn)物。數(shù)據(jù)的增長急需數(shù)據(jù)庫存儲容量的擴(kuò)充,現(xiàn)有的關(guān)系型數(shù)據(jù)庫很難在硬件上滿足數(shù)據(jù)瘋狂增長的需要[1]。

Apache HBASE是一個高性能、分布式、面向列、可伸縮的開源分布式NoSQL數(shù)據(jù)庫,它不同于一般的關(guān)系型數(shù)據(jù)庫,是一個適合于非結(jié)構(gòu)化數(shù)據(jù)存儲的數(shù)據(jù)庫[2]。HBASE是基于ROWKEY(行鍵)的有序存儲,在明確ROWKEY的條件下HBASE支持毫秒級的快速檢索[3]。然而,隨著HBASE的應(yīng)用的不斷深入,單純通過ROWKEY檢索數(shù)據(jù)的方式不再滿足應(yīng)用的需求。

對于多字段的復(fù)雜檢索,如果無法通過ROWKEY檢索,則需對HBASE全表數(shù)據(jù)進(jìn)行掃描,消耗大量時間,導(dǎo)致查詢效率極低。為此,業(yè)內(nèi)提出了建立HBASE二級索引的方案以提高多字段信息查詢效率。

1 傳統(tǒng)HBASE二級索引技術(shù)

目前,HBASE二級索引技術(shù)的方案中普遍存在兩大特點。

1.1 以空間換時間

現(xiàn)有的HBASE二級索引方案都是根據(jù)查詢常用屬性創(chuàng)建索引表,這就意味著每個索引表都是建立在固定的屬性條件下的。因此,當(dāng)實際調(diào)取某種多樣屬性信息時,需要按照多重屬性條件依次檢索不同的索引表。從不同的索引表中獲取的ROWKEY再進(jìn)行比對去重,最終得到符合所有查詢條件的ROWKEY,然后再根據(jù)篩選出的ROWKEY在HBASE表進(jìn)行提取,以完成多重條件信息的查詢。此種方案雖然避免了HBASE數(shù)據(jù)的全表掃描,節(jié)省了查詢時間,但需要根據(jù)不同的條件或條件組合創(chuàng)建多索引表,同時HBASE中的ROWKEY將會重復(fù)保存在不同索引表中,這將需要使用較大的存儲空間用以存放大量的索引表數(shù)據(jù)。

1.2 數(shù)據(jù)變更成本高

二級索引表是根據(jù)屬性條件建立的,因此當(dāng)需要更新HBASE中的ROWKEY時,一旦ROWKEY中的數(shù)據(jù)內(nèi)容發(fā)生變化,就需要更新所涉及到的所有索引表。尤其當(dāng)索引表較多或關(guān)聯(lián)關(guān)系較復(fù)雜時,勢必要消耗較高的成本來修改所有涉及的二級索引表。

鑒于以上二級索引的局限性,本文在兼顧多條件查詢效率的同時,最大化減少了存儲二級索引所占用的數(shù)據(jù)空間。在使用過程中如果HBASE發(fā)送小范圍數(shù)據(jù)變更無需修正本文所設(shè)計的二級索引內(nèi)容,也可保證數(shù)據(jù)查詢的準(zhǔn)確性[4]。

2 HBASE位圖索引技術(shù)

2.1 HBASE位圖索引技術(shù)

位圖技術(shù)是一種常用的數(shù)據(jù)存儲方式,可以看作是存儲了大量bit位的bit序列,每個bit位都代表一個特定的屬性含義,bit位只有0/1兩種狀態(tài),分別代表屬性是否存在[5]。

本文利用位圖技術(shù)在內(nèi)存數(shù)據(jù)庫中以K-V形式存儲數(shù)據(jù)。其中“主屬性”保存在KEY中,而“從屬性”以位圖的形式保存在VALUE中。同時從屬性在位圖中的bit位需要另外用位圖字典來記錄,VAULE中實際顯示的是相關(guān)從屬性的具體值,即0或1。以圖1為例,手機(jī)號代表主屬性,VALUE中包含兩類從屬性,即手機(jī)號碼歸屬業(yè)務(wù)和手機(jī)號碼歸屬省份。兩類從屬性在VALUE中各占用一段存儲空間,分別保存著以位圖形式顯示的屬性數(shù)據(jù),即1或0[6]。

當(dāng)使用HBASE位圖索引對HBASE進(jìn)行查詢時,首先通過位圖索引完成用戶范圍的查找,然后根據(jù)用戶范圍在HBASE中完成最終數(shù)據(jù)的檢索,參見圖2。

圖2 HBASE位圖索引查詢圖

當(dāng)需要查詢漫游到河南省的4 G 業(yè)務(wù)的總金額時,即查詢條件為多重查詢,包括省份查詢(河南省)及業(yè)務(wù)查詢(4G業(yè)務(wù)),首先根據(jù)位圖字典(如圖1所示)查到“河南省”在二級索引中的bit位置,即“河南省”在二級索引中的第2bit位,4G業(yè)務(wù)在二級索引中的第40 bit位。然后在內(nèi)存中檢索第2位和第40位都為“1”的用戶有哪些(1代表“是”,0代表“否”)。最終得到手機(jī)號碼1XX05316666和1XX05316667用戶符合查詢條件。然后再從H B A S E 中查詢手機(jī)號碼1XX05316666和1XX05316667的所有屬性,找出符合漫游到河南省的4 G 業(yè)務(wù)的數(shù)據(jù)并累加金額,得到總金額為1.59元。

圖1 位圖數(shù)據(jù)存儲和位圖字典對應(yīng)圖

2.2 HBASE位圖索引技術(shù)使用

HBASE位圖索引采用二次查詢的方式進(jìn)行檢索,通過從位圖索引中檢索出數(shù)據(jù)范圍,然后根據(jù)數(shù)據(jù)范圍從HBASE中查詢出最終數(shù)據(jù)結(jié)果。

2.2.1 位圖索引創(chuàng)建

所述位圖索引的創(chuàng)建主要包含兩個步驟:位圖索引模板參數(shù)配置和REDIS內(nèi)存創(chuàng)建。位圖索引模板參數(shù)一般存放在主流的關(guān)系型數(shù)據(jù)庫中如Oracle;而REDIS內(nèi)存的創(chuàng)建需要四臺主機(jī),形成一主三從的結(jié)構(gòu)(主節(jié)點用于更新,從節(jié)點用于查詢)。

所述位圖索引模板參數(shù)主要包含四張表:位圖大類表、位圖字典表、業(yè)務(wù)表、業(yè)務(wù)索引維度表。前兩張表的內(nèi)容對任何HBASE表格都是通用的,后兩張表的內(nèi)容是針對某特定HBASE表格而配置的。

位圖大類表主要用于記錄位圖索引包含哪些用于檢索的業(yè)務(wù)類。

位圖字典表主要用于記錄某業(yè)務(wù)類包含哪些屬性值。每個屬性值占用一位,每類業(yè)務(wù)創(chuàng)建一個位圖起止范圍,即位圖所占位數(shù)。起止范圍應(yīng)預(yù)留部分空bit位以減少屬性的增加對位圖索引的干擾,因為每當(dāng)增加新的屬性值時會占用更多的bit位。

業(yè)務(wù)表主要用于記錄某HBASE表格的特定配置模板,主要包括表模板名、主屬性(如用戶)在HBASE表格中的位置(即處于哪個列族、列名)。

業(yè)務(wù)索引維度表主要記錄某HBASE表格所包含的檢索業(yè)務(wù)的配置信息。對于每個檢索業(yè)務(wù),主要記錄了該業(yè)務(wù)使用了位圖大類表中的哪個業(yè)務(wù)類,該檢索業(yè)務(wù)的屬性值位于HBASE表格中的位置(即處于哪個列族、列名)。

本文選用REDIS內(nèi)存數(shù)據(jù)庫存儲位圖索引[7],REDIS內(nèi)存庫采用主從模式進(jìn)行部署。通過REDIS的主從模式對位圖索引進(jìn)行讀寫分離,其中主機(jī)用于索引數(shù)據(jù)寫入,從機(jī)用于索引數(shù)據(jù)查詢。REDIS每條記錄的key包含了主屬性,而Value值即存放了該主屬性如用戶的位圖。

位圖索引創(chuàng)建時根據(jù)HBASE中的同一主屬性(如用戶)的多條數(shù)據(jù)信息生成此用戶的位圖數(shù)據(jù),然后將所有用戶的位圖屬性存儲到REDIS中,完成位圖索引的創(chuàng)建。位圖索引的數(shù)據(jù)量取決于HBASE中主屬性(如用戶)的數(shù)量,和HBASE中的數(shù)據(jù)總量無關(guān)。

2.2.2 位圖索引的更新

位圖索引的更新分為全量更新和增量更新。所述全量更新即為對某張完整的HBASE表的位圖索引重新創(chuàng)建;所述增量更新指隨著HBASE表的記錄增添而更新位圖索引的信息。

對于全量更新,僅僅需要對每個主屬性搜集位圖信息并記錄到REDIS即可。

對于增量更新,每當(dāng)HBASE有新記錄插入時,需要對位圖索引進(jìn)行更新。更新時,首先需要找到該記錄的主屬性值,然后生成該記錄的位圖。對于位圖中每個bit位為1的位都要在REDIS中進(jìn)行設(shè)置,也就是將該記錄的位圖與REDIS中的舊位圖進(jìn)行按位或運算后重新存入[8]。

2.2.3 查詢

總的查詢過程分為兩步:位圖索引查詢和HBASE查詢。

所述位圖索引查詢,即首先根據(jù)檢索條件生成檢索條件的位圖。然后根據(jù)位圖全量掃描REDIS內(nèi)存記錄,找到符合位圖記錄的主屬性(如用戶)。最后將所有用戶列表傳遞給接下來的處理程序——HBASE查詢。

HBASE根據(jù)用戶生成ROWKEY范圍,對每個ROWKEY范圍查詢。如果支撐多條主屬性的ROWKEY范圍查詢需要多個HBASE查詢連接進(jìn)行,且因為用戶主屬性在HBASE分布式集群中存儲在不同的主機(jī)上,導(dǎo)致直接使用HBASE查詢接口是效率較低。為了加快HBASE中對多范圍數(shù)據(jù)的查詢效率,對HBASE做出以下優(yōu)化:

1)在每臺主機(jī)上部署查詢程序;

2)對用戶按存儲主機(jī)進(jìn)行分類;

3)查詢時按照用戶邊查詢邊匯總,并輸出本主機(jī)的查詢結(jié)果到HDFS;

4)最終將每臺主機(jī)的查詢結(jié)果下載后匯總,然后將最終結(jié)果輸出到HDFS。

2.3 HBASE位圖索引技術(shù)效率

位圖索引技術(shù)的效率主要取決于查詢條件能否落在位圖索引上或者落在位圖索引上的多少。查詢條件落在位圖索引上越多,HBASE位圖索引技術(shù)效率越高;查詢條件落在位圖索引上越少,HBASE位圖索引技術(shù)效率越低。因此合理設(shè)計位圖索引的業(yè)務(wù)類和合理設(shè)計每張HBASE表的檢索業(yè)務(wù)尤為關(guān)鍵。

3 結(jié)語

下面是普通HBASE查詢與基于位圖索引的HBASE查詢速度對比(基于同一個查詢過濾條件)。

如表1所示,表格行數(shù)與普通HBASE查詢耗時呈現(xiàn)線性相關(guān),而基于位圖索引的HBASE查詢不太受表格行數(shù)的影響。前者是由于普通HBASE查詢需要掃描全表,耗時自然與表格行數(shù)有關(guān)。后者是因為位圖索引大小與表格行數(shù)無關(guān),僅與表格主屬性相關(guān),所以索引查找耗時不會隨表格行數(shù)的增加而變化;由于索引查找得出的是ROWKEY范圍,當(dāng)表格行數(shù)增加時,ROWKEY范圍并不會產(chǎn)生變化,只是每個ROWKEY范圍的行數(shù)可能變多,所以HBASE掃描耗時也不會增加太多。

表1 普通HBASE查詢與基于位圖索引的HBASE查詢測試結(jié)果

本文針對HBASE全表查詢速度慢的缺點,設(shè)計了一種基于位圖索引的查詢方案。該方案通過對常用檢索業(yè)務(wù)添加位圖索引,有效縮小了HBASE掃描范圍,即由全表掃描縮小為ROWKEY范圍掃描,大大降低了查詢的時間成本。同時,位圖索引所額外占用的資源量極少,以1億用戶2000個屬性進(jìn)行估算,其占用的內(nèi)存資源僅為:100,000,000*2000/8/1024/1024/1024=23G B。這與傳統(tǒng)的二級索引技術(shù)相比其資源的耗用基本可以忽略不記。由于采用了2次查詢的方式,在使用過程中如果HBASE發(fā)送小范圍數(shù)據(jù)變更無需修正本發(fā)明所設(shè)計的二級索引內(nèi)容,也可保證數(shù)據(jù)查詢的準(zhǔn)確性,進(jìn)一步減少了方案中數(shù)據(jù)的使用、維護(hù)成本。因此基于位圖索引技術(shù)創(chuàng)建HBASE二級索引的實踐在資源的使用和后期的維護(hù)無疑是極具性價比的、高效的HBASE查詢的方案。

猜你喜歡
用戶
雅閣國內(nèi)用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網(wǎng)新媒體用戶之間有何差別
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應(yīng)用
Camera360:拍出5億用戶
100萬用戶
主站蜘蛛池模板: 免费无码AV片在线观看中文| 免费一级α片在线观看| 8090午夜无码专区| 91国内在线观看| 精品少妇人妻无码久久| 欧美日本不卡| 久草热视频在线| 91麻豆精品视频| 久久久久国色AV免费观看性色| 中文国产成人精品久久| AV在线天堂进入| 国产一在线观看| 多人乱p欧美在线观看| 久久综合婷婷| 国产成人综合欧美精品久久 | 国产另类视频| 97国内精品久久久久不卡| 亚洲高清国产拍精品26u| аv天堂最新中文在线| 国产高清无码第一十页在线观看| 国产精品妖精视频| 国产精品人成在线播放| 一级毛片免费播放视频| 国产va视频| www中文字幕在线观看| 国产成人综合久久精品下载| 女人18一级毛片免费观看| 久99久热只有精品国产15| 一级毛片无毒不卡直接观看| 中文字幕资源站| 中文字幕欧美日韩| 99国产精品免费观看视频| 国产人人干| 久久亚洲高清国产| 人禽伦免费交视频网页播放| 国产自在线播放| 青青青草国产| 亚洲综合精品香蕉久久网| 成人精品视频一区二区在线| 毛片手机在线看| 18禁不卡免费网站| 亚洲首页国产精品丝袜| 国产真实乱了在线播放| 四虎永久免费在线| 91无码人妻精品一区| 午夜福利无码一区二区| 久久久久久久久18禁秘| 青青热久麻豆精品视频在线观看| 欧美不卡视频在线观看| 国内自拍久第一页| 久久精品国产999大香线焦| 中文字幕乱码二三区免费| 日韩av无码DVD| 婷婷开心中文字幕| 伊人无码视屏| 色综合久久88| 美女一区二区在线观看| 亚洲视频在线观看免费视频| 美女一区二区在线观看| 99尹人香蕉国产免费天天拍| 国产色爱av资源综合区| 久久五月天国产自| 曰AV在线无码| 色综合久久无码网| 98超碰在线观看| 99久久精彩视频| 国产菊爆视频在线观看| 在线播放精品一区二区啪视频| 欧美一级大片在线观看| 在线无码九区| 亚洲经典在线中文字幕| 天堂亚洲网| 3344在线观看无码| 青青热久免费精品视频6| 日本三级欧美三级| 噜噜噜综合亚洲| 中文字幕自拍偷拍| 日本高清成本人视频一区| 国产精品视频久| 亚洲精品国产自在现线最新| 成人国产一区二区三区| 亚洲一区二区黄色|