亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        王 飛 張 明 晏學(xué)義

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

        引言

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

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

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

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

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

        1.1 以空間換時(shí)間

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

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

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

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

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

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

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

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

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

        圖2 HBASE位圖索引查詢圖

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

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

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

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

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

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

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

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

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

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

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

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

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

        2.2.2 位圖索引的更新

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

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

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

        2.2.3 查詢

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

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

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

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

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

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

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

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

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

        3 結(jié)語(yǔ)

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

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

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

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

        猜你喜歡
        表格檢索用戶
        《現(xiàn)代臨床醫(yī)學(xué)》來(lái)稿表格要求
        統(tǒng)計(jì)表格的要求
        統(tǒng)計(jì)表格的要求
        統(tǒng)計(jì)表格的要求
        2019年第4-6期便捷檢索目錄
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        專利檢索中“語(yǔ)義”的表現(xiàn)
        專利代理(2016年1期)2016-05-17 06:14:36
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        如何獲取一億海外用戶
        9久久婷婷国产综合精品性色| 国产真实乱XXXⅩ视频| 人妻风韵犹存av中文字幕| 美女扒开腿露内裤免费看| 国产成人午夜无码电影在线观看| 国产精品99久久久久久宅男| 国产精品麻豆A啊在线观看| 国产黄色一级大片一区二区| 亚洲精品一区二区三区麻豆| 内射少妇36p九色| 日韩在线不卡一区在线观看| 中文字幕一区二区三区| 欧美大屁股xxxx高潮喷水| 一本大道久久香蕉成人网| 国产亚洲欧美另类久久久| 爱爱免费视频一区二区三区| 欧美乱大交xxxxx潮喷| 天堂网在线最新版www中文网| 丰满人妻AV无码一区二区三区| 国产麻豆一区二区三区在| 国产尤物精品视频| 亚洲性无码av在线| 国产精品亚洲av国产| 久久久精品人妻一区二区三区妖精| 久久久久久人妻一区精品| 国产一级毛片卡| 国产激情在线观看视频网址| 99久久久无码国产精品性| a亚洲va欧美va国产综合| 99日本亚洲黄色三级高清网站| 麻豆国产精品一区二区三区| 中文无码精品a∨在线观看不卡 | 欧美精品欧美人与动人物牲交 | 日本一区二区三区精品不卡| 永久免费毛片在线播放| 日韩好片一区二区在线看| 国产精品制服一区二区| 日本久久久免费观看视频| 亚洲av最新在线网址| 亚洲av成人一区二区三区网址 | 蜜桃视频一区二区三区在线观看|