重要
由於開源HBase API的一些限制,使用HBase API相容的二級索引存在一系列限制和問題,因此該功能不再維護,不推薦新使用者使用。歡迎大家通過Lindorm SQL使用二級索引。
二級索引簡介
HBase原生提供了主鍵索引,即按Rowkey的二進位排序的索引。Scan可基於此Rowkey索引高效的執行整行匹配、首碼匹配、範圍查詢等操作。但若需要使用Rowkey之外的列進行查詢,則只能使用filter在指定的Rowkey範圍內進行逐行過濾。若無法指定Rowkey範圍,則需進行全表掃描,不僅浪費大量資源,查詢RT也無法保證。
有多種解決方案可解決HBase的多維查詢的問題。例如以要查詢的列再單獨寫一張表(使用者自己維護二級索引),或者將資料匯出到Solr或者ES這樣的外部系統進行索引。
Solr/ES固然強大,但對於大部分列較少且有固定查詢模式的情境來說,有”殺雞用牛刀”之感。為此,HBase增強版推出了原生的全域二級索引解決方案,以更低的成本解決此類問題。因內建於HBase,提供了強大的吞吐與效能。這個索引方案在阿里內部使用多年,經歷了多次雙11考驗,尤其適合解決海量資料的全域索引情境。下圖給出了HBase增強版與Phoenix在索引情境下的效能對比: