Phoenix:全局索引設計實踐

概述

全局索引是Phoenix的重要特性,合理的使用二級索引能降低查詢延時,讓集群資源得以充分利用。 本文將講述如何高效的設計和使用索引。

全局索引說明

全局索引的根本是通過單獨的HBase表來存儲數據表的索引數據。我們通過如下示例看索引數據和主表數據的關系。

clipboard.png

當寫入數據到主表時,索引數據也會被同步到索引表中。索引表中的主鍵將會是索引列和數據表主鍵的組合值,include的列被存儲在索引表的普通列中,其目的是讓查詢更加高效,只需要查詢一次索引表就能夠拿到數據,而不用去回查主表。其過程入下圖:

clipboard.png

Phoenix表就是HBase表,而HBase Rowkey都是通過二進制數據的字典序排列存儲,也就意味著Row key前綴匹配度越高就越容易排在一起。

全局索引設計

我們繼續使用DATA_TABLE作為示例表,創建如下組合索引。之前我們已經提到索引表中的Row key是字典序存儲的,什么樣的查詢適合這樣的索引結構呢?

CREATE INDEX B_C_D_IDX ON DATA_TABLE(B,C,D);

所有字段條件以=操作符為例:

clipboard.png

注:上表查詢中and條件不一定要和索引組合字段順序一致,可以任意組合。

在實際使用中我們也只推薦使用1~4,遵循前綴匹配原則,避免觸發掃全表。5~7條件就要掃描全表數據才能過濾出來符合這些條件的數據,所以是極力不推薦的。

其它

? 對于order by字段或者group by字段仍然能夠使用二級索引字段來加速查詢。

? 盡量通過合理的設計數據表的主鍵規避建更多的索引表,因為索引表越多寫放大越嚴重。

? 使用了ROW_TIMESTAMP特性后不能使用全局索引

? 對索引表適當是的使用加鹽特性能提升查詢寫入性能,避免熱點。

本文作者:瑾謙

閱讀原文

本文為云棲社區原創內容,未經允許不得轉載。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537908.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537908.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537908.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php 美顏,懷念以前無濾鏡美顏的影視劇

濾鏡是為了照片質量更高一些,色彩更真實突出的一種補助工具。自從有了美顏和濾鏡后,大家的生活都變成了彩色。開了濾鏡美顏,小伙伴們有木有感覺生活水平變高了?但影視劇,好像變成了單色?!(注意&…

select2控件動態更新option

原文連接:https://blog.csdn.net/u010784959/article/details/77893674 ----------------------------------------------------------------------------- 根據輸入框中內容,動態更新select2組件中option內容 監聽輸入框內容變化事件,先銷…

在Python中定義和使用抽象類的方法

https://www.jb51.net/article/87710.htm 像java一樣python也可以定義一個抽象類。 在講抽象類之前,先說下抽象方法的實現。 抽象方法是基類中定義的方法,但卻沒有任何實現。在java中,可以把方法申明成一個接口。而在python中實現一個抽象方法…

把 Rational Rose 的圖表保存為圖片文件

原文連接:https://blog.csdn.net/xiaobing_122613/article/details/56485456 ------------------------------------------------ Rational Rose 本身沒有保存為 JPG/GIF 圖片格式的功能。 1. 可以通過全選、復制、粘貼可以把圖表直接粘貼到打開的 Word 文檔里 …

lppl模型 matlab,對LPPL模型的思考

2013-05-10 16:19:29最近,LPPL模型在金融市場中的運用越來越廣,LPPL模型認為金融市場處于自組織臨界狀態,泡沫的產生往往伴隨著市場參與者之間行為的正反饋作用,泡沫也會因此越來越大,并在奇點處崩潰,詳細介…

代碼質量管理工具】——sonar

原文地址:https://blog.csdn.net/luckystar689/article/details/53871821 ------------------------------------------------------------------------ 【前言】 bug越改越多,程序一換數據就崩,這就是目前我們系統的一個現狀。在這之前&am…

馬凱軍201771010116《面向對象程序設計(java)》第二周學習總結

第一部分:理論知識學習部分 (1)基本知識:簡單應用程序的結構;Java環境里的注釋方式; (2)數據類型(4種整型、2種浮點型、1種字符型‘char’、真值型‘Boolean’。 &#x…

【代碼質量管理工具】-由sonar引發的思考

原文路徑:https://blog.csdn.net/luckystar689/article/details/53968102 ---------------------------------------------------------------------------------------- 之前,在看《笑傲江湖》的時候,郭德綱在給一對夫妻的表演做評審的時候…

php curl 模擬多線程,php利用curl 多線程 模擬 并發的詳解

php利用curl 多線程 模擬 并發的詳解發布于 2014-12-07 10:17:25 | 265 次閱讀 | 評論: 0 | 來源: 網友投遞PHP開源腳本語言PHP(外文名: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點&…

新版DAEMON Tools Lite打不開 bin 文件解決方法

DAEMON Tools Lite 支持打開 *.cue 解決方法很簡單:將*.bin 重命名為 *.cue 就可以打開

Linux集群架構(LVS DR模式搭建、keepalived + LVS)

為什么80%的碼農都做不了架構師?>>> LVS DR模式搭建 準備工作:三臺機器 分發器,也叫調度器(簡寫為dir):192.168.248.128 rs1 :192.168.248.129 rs2 : 192.168.248.130 vip : 192.16…

java手機狀態欄圓形圖標,android實現狀態欄添加圖標的函數實例

本文實例講述了android實現狀態欄添加圖標的函數。分享給大家供大家參考。具體如下:private void showNotification() {// 創建一個NotificationManager的引用NotificationManager notificationManager (NotificationManager)AutoFile.this.getSystemService(andro…

Windows下SVN回滾到舊版本(TortoiseSVN)

原文地址:https://www.cnblogs.com/tommy-huang/p/4729634.html ---------------------------------------- 當發現新提交的代碼有問題,然后想將某個舊的版本作為最新的版本時,可以使用回滾, 操作步驟如下: 1. 簽出…

看懂架構設計中的服務隔離

前言 我們在做系統架構設計的時候,經常離不開的一個話題就是進行服務的隔離設計。 那什么是「服務隔離」呢? 顧名思義,它是指將系統按照一定的原則劃分為若干個服務模塊,各個模塊之間相對獨立,無強依賴。當有故障發生時…

2018最新蘋果APP上架App Store流程(超詳細)

內容很豐富,點擊查看博文 https://blog.csdn.net/xxw888/article/details/73618837/

[五] JavaIO之InputStream OutputStream簡介 方法列表說明

InputStream 和 OutputStream 對于字節流的輸入和輸出 是作為協議的存在 所以有必要了解下這兩個類提供出來的基本約定 這兩個類是抽象類,而且基本上沒什么實現,都是依賴于子類具體的去實現 但是他是對于其子類 協議綱領一般的存在 了解清楚每一個方法含義,對于后續具體的子類將…

Mysql yum 安裝后,一些重要的文件路徑

默認配置文件路徑: 配置文件:/etc/my.cnf 日志文件:/var/log//var/log/mysqld.log 服務啟動腳本:/usr/lib/systemd/system/mysqld.service socket文件:/var/run/mysqld/mysqld.pid #(a)數據庫目錄 /var/lib/mysql…

mysql雙機熱備 配置文件,MYSQL 雙機熱備配置手冊()

[原創] MYSQL 雙機熱備配置手冊[原創]http://www.chinaunix.net 作者:squall1 發表于:2007-07-23 19:01:43【發表評論】【查看原文】【存儲備份之家討論區】【關閉】作者:CU-squall發表于:2005年4月18日 8:21 可以不經作者同意自由傳播&…

[轉]資本經營董事長班告訴你:不只企業有商業模式,個人商業價值更重要

本文轉自:http://blog.sina.com.cn/s/blog_181b5b47e0102xz4v.html 東方財智-資本經營董事長班>>> 經營者如何輕松駕馭金融工具為企業發展加速、升級互聯網工具實現品牌營銷裂變、利用管理工具優化公司內部結構,把握前沿視角,實現快…

CentOS 7添加開機啟動服務腳本

原文路徑:https://blog.csdn.net/wang123459/article/details/79063703 --------------------------------------------------------- 一、添加開機自啟服務 在CentOS 7中添加開機自啟服務非常方便,只需要兩條命令(以Jenkins為例): system…