[轉]HBASE 二級索引


 

1.二級索引的核心思想是什么?2.二級索引由誰來管理?3.在主表中插入某條數據后,hbase如何將索引列寫到索引表中去?4.scan查詢的時候,coprocessor鈎子的作用是什么?5.在split的時候,索引表在什么時候對數據划分?


本文是以華為二級索引為例:
華為在HBTC 2012上由其高級技術經理Anoop Sam John透露了其二級索引方案,這在業界引起極大的反響,甚至有人認為,如果華為早點公布這個方案,hbase的某些問題早就解決了。其核心思想是保證索引表和主表在同一個region server上。更新:目前該方案華為已經開源,詳見:https://github.com/Huawei-Hadoop/hindex下面來對其方案做一個分析。1.整體架構這個架構在Client Ext中設定索引細節,在Balancer中收集信息,在Coprocessor中管理二級索引數據。<ignore_js_op> 
2.表創建在創建表的時候,在同一個region server上創建索引表,且一一對應。<ignore_js_op> 
3.插入操作在主表中插入某條數據后,用Coprocessor將索引列寫到索引表中去,寫道索引表中的數據的主鍵為:region開始key+索引名+索引列值+主表row key。這么做,是為了讓其在同一個分布規則下,索引表會跟主表在通過region server上,在查詢的時候就可以少一次rpc。<ignore_js_op> 4.scan操作一個查詢到來的時候,通過coprocessor鈎子,先從索引表中查詢范圍row,然后再從主表中相關row中掃描獲得最終數據。<ignore_js_op> 5. split操作處理為了使主表和索引表在同一個RS上,要禁用索引表的自動和手動split,只能由主表split的時候觸發,當主表split的時候,對索引表按其對應數據進行划分,同時,對索引表的第二個daughter split的row key的前面部分修改為對應的主鍵的row key。<ignore_js_op> 6. 性能查詢性能極大提升,插入性能下降10%左右<ignore_js_op> <ignore_js_op> 總結,本文對華為hbase使用coprocessor進行二級索引的方案的創建表,插入數據,查詢數據的步驟進行了一個粗略分析,以窺其全貌。在使用的時候,可以作為一個參考。
###############################################################轉載自鄧的博客 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM