HBase應(yīng)用(五):二級索引

HBase提供了檢索數(shù)據(jù)的功能趣效,不過原有系統(tǒng)僅提供了通過rowkey檢索數(shù)據(jù)的功能糟红,過于單一艾帐,不夠靈活乌叶,一旦查詢條件改變了,往往涉及到要全表掃描過濾柒爸,極大浪費機器物理資源准浴,又達不到實時效果;HBase二級索引功能解決了原有HBase系統(tǒng)中僅能夠通過rowkey檢索數(shù)據(jù)的問題捎稚,使得用戶能夠指定多種條件乐横,在HBase表中進行數(shù)據(jù)的實時檢索與統(tǒng)計,提供了強大的數(shù)據(jù)檢索功能今野。

HBase只提供了一個基于字典序的主鍵索引葡公,在查詢中只能通過行鍵或掃描全表來獲取數(shù)據(jù)。如下圖条霜,需求是查找符合F:C1=C11的F:C2的值催什,因為不知道rowkey,所以就需要掃描全表蛔外,但是如果這時候蛆楞,我們新建一張索引表,這張表的rowkey是F:C1的value(C11,C12,C13)夹厌,column列是源表中的C11對應(yīng)的rowkey(RK1)豹爹,這時候,再查詢就可以先從索引表中根據(jù)rowkey查到RK1矛纹,然后使用RK1去原表中查找value臂聋。這樣性能會提高很多


image.png

實現(xiàn)方案一:使用HBase Coprocessor協(xié)處理器
CoProcessor相當于HBase的Observer+hook,目前支持MasterObserver或南、RegionObserver和WALObserver孩等,基本上對于HBase Table的管理、數(shù)據(jù)的Put/Delete/Get等操作都可以找到對應(yīng)的pre*和post采够。這樣如果需要對于某一項Column建立Second indexing肄方,就可以在Put/delete的時候,將其信息更新到另外一張索引表中蹬癌。對于Indexing里面的value值是否存儲的問題权她,可以根據(jù)需要進行控制,如果value的空間開銷不大逝薪,逆向的檢索又比較繁瑣隅要,可以直接存儲在Indexing table中,反之則避免這種情況董济。

image.png

實現(xiàn)方案二:由客戶端發(fā)起對主表和索引表的Put步清、Delete操作的雙重操作
1、設(shè)置主表的TTL(Time To Live)比索引表小一點,讓其略早一點消亡
2廓啊、不要在IndexingTable存儲value值
3欢搜、Put操作時,對于操作的主表的所有列谴轮,先使用同一的Local TimeStamp的值更新到IndexIng Table狂巢,然后使用該TimeStamp插入主表數(shù)據(jù)
4、Delete操作時书聚,首先操作主表的數(shù)據(jù),然后再去更新Indexing Table的數(shù)據(jù)

實現(xiàn)方案三:Phoenix
Phoenix是一個開源的HBASE SQL層藻雌。它不僅可以使用標準的JDBC API替代HBASE client API創(chuàng)建表雌续,插入和查詢HBASE,也支持二級索引胯杭、事物以及多種SQL層優(yōu)化;
可以參考https://yq.aliyun.com/articles/574090

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驯杜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子做个,更是在濱河造成了極大的恐慌鸽心,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件居暖,死亡現(xiàn)場離奇詭異顽频,居然都是意外死亡,警方通過查閱死者的電腦和手機太闺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門糯景,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人省骂,你說我怎么就攤上這事蟀淮。” “怎么了钞澳?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵怠惶,是天一觀的道長。 經(jīng)常有香客問我轧粟,道長策治,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任逃延,我火速辦了婚禮览妖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揽祥。我一直安慰自己讽膏,他們只是感情好,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布拄丰。 她就那樣靜靜地躺著府树,像睡著了一般俐末。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奄侠,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天卓箫,我揣著相機與錄音,去河邊找鬼垄潮。 笑死烹卒,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的弯洗。 我是一名探鬼主播旅急,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牡整!你這毒婦竟也來了藐吮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤逃贝,失蹤者是張志新(化名)和其女友劉穎谣辞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沐扳,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡泥从,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沪摄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歉闰。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卓起,靈堂內(nèi)的尸體忽然破棺而出和敬,到底是詐尸還是另有隱情,我是刑警寧澤戏阅,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布昼弟,位于F島的核電站,受9級特大地震影響奕筐,放射性物質(zhì)發(fā)生泄漏舱痘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一离赫、第九天 我趴在偏房一處隱蔽的房頂上張望芭逝。 院中可真熱鬧,春花似錦渊胸、人聲如沸旬盯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胖翰。三九已至接剩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萨咳,已是汗流浹背懊缺。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留培他,地道東北人鹃两。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像舀凛,于是被迫代替她去往敵國和親怔毛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 為什么需要Secondary Index 對于HBase而言腾降,如果想精確地定位到某行記錄,唯一的辦法是通過rowk...
    4ea0af17fd67閱讀 10,956評論 0 5
  • 一碎绎、簡介 Hbase:全名Hadoop DataBase螃壤,是一種開源的,可伸縮的筋帖,嚴格一致性(并非最終一致性)的分...
    菜鳥小玄閱讀 2,395評論 0 12
  • 在HBase中奸晴,表格的Rowkey按照字典排序,Region按照RowKey設(shè)置split point進行shar...
    Albert陳凱閱讀 4,206評論 0 5
  • 本文首先簡單介紹了HBase,然后重點講述了HBase的高并發(fā)和實時處理數(shù)據(jù) 日麸、HBase數(shù)據(jù)模型寄啼、HBase物理...
    達微閱讀 2,736評論 1 13
  • 簡介 HBase是高可靠性,高性能代箭,面向列墩划,可伸縮的分布式存儲系統(tǒng),利用HBase技術(shù)可在廉價PC Serve...
    九世的貓閱讀 2,199評論 1 6