91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase二級索引的解決方法

發布時間:2021-12-06 09:32:54 來源:億速云 閱讀:279 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關HBase二級索引的解決方法,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

HBase一個令人惋惜的地方,就是不支持二級索引。因此,社區有了很多補充方案來填補HBase的二級索引能力的缺陷。

今天,我們就來看看有哪些二級索引方案,通過對比各個方案的優缺點,并結合我們的具體場景做出二級索引方案選型。

1.為什么需要二級索引

HBase系統單純從解決大數據實時讀寫問題角度出發,重點關注于分布式存儲的擴展性、容錯性、讀寫性能等方面,為此也犧牲了很多傳統關系型數據庫的功能,比如事務,SQL表達與分析等。

實際上,這是NoSQL最初的含義,以解決大數據的實時存取為首要目標,提供簡單的Get,Put,Scan接口,解決用戶的大數據量存儲的需求。因此,HBase完全是一個非常優秀的大數據實時存取引擎,解決了傳統數據庫的容量問題。

就目前官方的HBase系統來說,并不支持二級索引,只有rowkey作為一級索引, 如果要對庫里的非rowkey字段進行數據檢索和查詢, 往往要通過MapReduce/Spark等分布式計算框架進行,硬件資源消耗和時間延遲都會比較高。

為了HBase的數據查詢更高效、適應更多的場景, 諸如使用非rowkey字段檢索也能做到秒級響應,或者支持各個字段進行模糊查詢和多字段組合查詢等, 因此需要在原生HBase基礎上構建二級索引, 以滿足現實中更復雜多樣的業務需求。一般有以下三類方案:

  • 基于HBase的Coprocessor的方案(典型代表phoenix)

  • 云廠商自研的二級索引(阿里云目前有自研增強版二級索引)

  • 基于搜索平臺的索引方案(如solr、ES等)。

2.如何選擇二級索引方案

我們從讀寫性能、使用限制、學習成本、社區活躍等角度,對三類方案做對比。

基于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。

3.簡單了解下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二級索引的解決方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平潭县| 南涧| 新竹市| 连城县| 罗江县| 独山县| 射洪县| 武夷山市| 内丘县| 志丹县| 松原市| 开原市| 昭觉县| 大名县| 咸丰县| 斗六市| 方山县| 登封市| 合山市| 鸡泽县| 张北县| 沈阳市| 芜湖市| 内黄县| 汉源县| 江口县| 河南省| 闽侯县| 清流县| 临城县| 夏河县| 乌鲁木齐县| 东阳市| 桃园县| 潮安县| 密山市| 綦江县| 昌图县| 利津县| 泽普县| 赤峰市|