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| 日本www色视频| 伊人狠狠丁香婷婷综合色| 四虎成人在线视频| 亚洲成在线观看| 国产国产人成免费视频77777 | 中国成人在线视频| 超碰aⅴ人人做人人爽欧美| 久久天天躁夜夜躁狠狠| 不卡无码h在线观看| 激情爆乳一区二区| 97人人做人人爽香蕉精品| 国产高清又黄又嫩的免费视频网站| 国产日韩欧美视频| 中文字幕在线观| 色综合狠狠操| julia中文字幕久久亚洲| 精品国产aⅴ一区二区三区| 国产精品19p| 很黄的网站在线观看| 91伊人国产| 色成人亚洲| 婷婷综合色| 婷婷亚洲最大| 久久精品视频亚洲| 色呦呦手机在线精品| 中文字幕第4页| 亚洲国产成人自拍| 亚洲小视频网站| 无码精品福利一区二区三区| 精品国产欧美精品v| 国产精品中文免费福利| 国产天天色| 18禁色诱爆乳网站| 国产成人综合在线观看| 亚洲av中文无码乱人伦在线r| 午夜一区二区三区| 四虎综合网| 久久国产精品无码hdav| 在线a网站| 亚洲欧美日本国产综合在线| 日韩乱码免费一区二区三区| 婷婷六月天激情| 亚洲综合婷婷激情| 美女国产在线| 99ri国产在线| 免费观看亚洲人成网站| 国内精品视频在线| 色爽网免费视频| 青青操国产视频| 日韩欧美高清视频| 亚洲欧美日韩久久精品| 97人人做人人爽香蕉精品| 国产成人夜色91| h视频在线播放| 久久精品国产国语对白| 国产av无码日韩av无码网站| 午夜精品区| 91成人精品视频| 性网站在线观看| 久久精品丝袜| 狠狠亚洲五月天| 99re精彩视频| 粉嫩国产白浆在线观看| 精品五夜婷香蕉国产线看观看| 国模沟沟一区二区三区| 中文字幕佐山爱一区二区免费| 88av在线看| 2018日日摸夜夜添狠狠躁| 国产精品护士| 美女一级免费毛片| 亚洲色成人www在线观看| 国产真实乱人视频| www.99精品视频在线播放| 国产电话自拍伊人| 国产乱子伦精品视频| 国产99视频在线| 亚洲色欲色欲www网| 五月婷婷伊人网| 巨熟乳波霸若妻中文观看免费| 91黄视频在线观看|