這個是華爲的二級索引方案,已經開放源代碼了,下面是網上的一篇講解原理的帖子,發出來和你們共享一下。html
通過本人認真閱讀了一下代碼,發現這個源碼僅供參考,想要集成到原有的集羣當中是有點兒難度的,它對hbase的源碼進行很多的修改。git
源碼地址:https://github.com/Huawei-Hadoop/hindexgithub
下面來對其方案作一個分析。架構
1.總體架構oop
這個架構在Client Ext中設定索引細節,在Balancer中收集信息,在Coprocessor中管理二級索引數據。性能
2.表建立spa
在建立表的時候,在同一個region server上建立索引表,且一一對應。開放源代碼
3.插入操做orm
在主表中插入某條數據後,用Coprocessor將索引列寫到索引表中去,寫道索引表中的數據的主鍵爲:region開始key+索引名+索引列值+主表row key。這麼作,是爲了讓其在同一個分佈規則下,索引表會跟主表在經過region server上,在查詢的時候就能夠少一次rpc。server
4.scan操做
一個查詢到來的時候,經過coprocessor鉤子,先從索引表中查詢範圍row,而後再從主表中相關row中掃描得到最終數據。
5. split操做處理
爲了使主表和索引表在同一個RS上,要禁用索引表的自動和手動split,只能由主表split的時候觸發,當主表split的時候,對索引表按其對應數據進行劃分,同時,對索引表的第二個daughter split的row key的前面部分修改成對應的主鍵的row key。
6. 性能
查詢性能極大提高,插入性能降低10%左右
總結,本文對華爲hbase使用coprocessor進行二級索引的方案的建立表,插入數據,查詢數據的步驟進行了一個粗略分析,以窺其全貌。在使用的時候,能夠做爲一個參考。