您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關HBase二級索引的解決方法,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
HBase一個令人惋惜的地方,就是不支持二級索引。因此,社區有了很多補充方案來填補HBase的二級索引能力的缺陷。
今天,我們就來看看有哪些二級索引方案,通過對比各個方案的優缺點,并結合我們的具體場景做出二級索引方案選型。
HBase系統單純從解決大數據實時讀寫問題角度出發,重點關注于分布式存儲的擴展性、容錯性、讀寫性能等方面,為此也犧牲了很多傳統關系型數據庫的功能,比如事務,SQL表達與分析等。
實際上,這是NoSQL最初的含義,以解決大數據的實時存取為首要目標,提供簡單的Get,Put,Scan接口,解決用戶的大數據量存儲的需求。因此,HBase完全是一個非常優秀的大數據實時存取引擎,解決了傳統數據庫的容量問題。
就目前官方的HBase系統來說,并不支持二級索引,只有rowkey作為一級索引, 如果要對庫里的非rowkey字段進行數據檢索和查詢, 往往要通過MapReduce/Spark等分布式計算框架進行,硬件資源消耗和時間延遲都會比較高。
為了HBase的數據查詢更高效、適應更多的場景, 諸如使用非rowkey字段檢索也能做到秒級響應,或者支持各個字段進行模糊查詢和多字段組合查詢等, 因此需要在原生HBase基礎上構建二級索引, 以滿足現實中更復雜多樣的業務需求。一般有以下三類方案:
基于HBase的Coprocessor的方案(典型代表phoenix)
云廠商自研的二級索引(阿里云目前有自研增強版二級索引)
基于搜索平臺的索引方案(如solr、ES等)。
我們從讀寫性能、使用限制、學習成本、社區活躍等角度,對三類方案做對比。
基于HBase的Coprocessor的方案(典型代表phoenix)
官方文檔:http://phoenix.apache.org/secondary_indexing.html
讀寫性能:有一定讀寫性能損害,索引越多,寫入性能影響越大
TTL功能:支持比較好
索引的使用限制:一個表的索引數不要超過10個
索引類型:全局索引、本地索引、覆蓋索引
學習成本:類JDBC的sql語法,多參考官方的語法(http://phoenix.apache.org/language/index.html)
開源/社區活躍程度:開源,目前社區不太活躍
優點:社區文檔多、使用簡單、實時查詢無延遲
缺點:非商業化方案,沒有專門的技術支持
云廠商自研的二級索引(典型代表阿里云自研增強版二級索引)
官方文檔:https://help.aliyun.com/document_detail/144577.html?spm=a2c4g.11174283.6.576.4999363f2uZWt0
讀寫性能:二級索引內置于HBase,官方的性能評測文檔說比Phoenix好
TTL功能:只能在單列索引上生效
索引的使用限制:一個表的索引個數最多不超過5個、組合索引的列最多不要超過3個
索引類型:全局索引、本地索引、覆蓋索引
學習成本:內部封裝的很簡單,在使用上就是HBase的原生用法
開源/社區活躍程度:非開源、阿里云私有
優點:性能好、實時查詢無延遲
缺點:被云廠商鎖定
基于搜索平臺的二級索引方案(以Solr為例)
官方文檔:http://phoenix.apache.org/secondary_indexing.html
讀寫性能:有一定讀寫性能損害、數據同步的延遲需要考慮
TTL功能:HBase是單個KV過期,而Solr中只能按照Document(對應HBase的一行)過期,過期的時間不完全一致
索引的使用限制:沒有限制,完全取決于solr
索引類型:非常靈活
學習成本:需要熟悉solr語法
開源/社區活躍程度:開源 社區活躍
優點:查詢方式更加靈活
缺點:引入搜索引擎組件、太重了,而且有明顯的延遲問題
總結一下(特別重要的技術選型策略):
為了不被云廠商鎖定,所以不采用云廠商獨有的二級索引方案
對于實時性要求高、索引數量少的場景,完全可以使用phoenix,簡單而又絲滑
對于實時性要求不高、搜索場景比較復雜的,需要引入搜索引擎,如solr或者es進行索引構建
一般來說,為了滿足實時需求,我們會使用phoenix。
為了讓HBase更強大,更好用,門檻更低,讓HBase幫助更多的用戶解決他們遇到的實際問題。于是,phoenix帶著SQL誕生了。眾所周知,SQL是數據處理領域的語言標準,簡單,好用,表達力強,用戶使用廣泛。當然,HBase SQL的實現和發展跟傳統單機數據庫有很多不同,便于區別,我們稱之為NewSQL。這也是社區嘗試HBase二級索引的初衷,如果說HBase是功能強大的存儲引擎,那么支持NewSQL之后,就變成了新一代的大飛機。
Phoenix作為應用層和HBASE之間的中間件,以下特性使它在大數據量的簡單查詢場景有著獨有的優勢
二級索引支持(global index + local index)
編譯SQL成為原生HBASE的可并行執行的scan
在數據層完成計算,server端的coprocessor執行聚合
下推where過濾條件到server端的scan filter上
skip scan功能提高掃描速度
關于HBase二級索引的解決方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。