HBase行鍵設計
3分鐘瞭解HBase行鍵設計
HBase行鍵需要滿足如下原則:
唯一原則:行鍵對應關係型資料庫的唯一鍵,系統設計之初必須考慮有足夠的唯一行鍵去支援業務的資料量。
長度原則:長度適中,一般從幾十到一百位元組,建議使用定長,方便從行鍵提取所需資料,而無須查詢出資料內容以節省網路開銷。
雜湊原則:避免遞增,否則讀寫負載都會集中在某個熱點分割槽,降低效能,甚至引起分割槽伺服器過載而當機。
HBase行鍵設計技巧
由於HBase不支援二級索引,所以HBase行鍵作為唯一的也是最有效的索引,需要儘可能多的糅合各種查詢條件以提高查詢效率,常見的設計技巧有:
反轉補齊:對於用來儲存實體資料的表,通常將實體ID(如使用者ID)反轉補齊位數後作為行鍵的開始,這樣首先滿足了對該實體資料查詢的需求,同時由於反轉了實體ID,所以最近產生的實體以及其資料不會落到同一個Region,避免了熱點區間的產生。
使用GeoHash:GeoHash演算法可以用來將多維資料對映為一維字串,尤其是基於空間的經緯度資料,空間上靠近的經緯度點對映後的一維字串在字典順序上也靠近(當然會有特殊的臨界問題)。
OpenTSDB: OpenTSDB是基於HBase的一個儲存時序資料的資料庫應用,通常用來儲存一些系統的監控資料或者系統日誌,OpenTSDB的行鍵設計類似對HBase的行鍵做了一個二次索引,格式為:
UID___matric___+TimeBase+UID___tag1key___+UID___tag1value___+UID___tag2key___+UID___tag2value___+UID___tagNkey___+UID___tagNvalue___
其行鍵設計會將所有的監控指標或者需要查詢的業務標籤均對映到一個等長的UID,然後將監控指標的UID作為行鍵的開始,這樣設計有幾個好處:
- 因為通常查詢監控資料的時候都會選定一個監控指標(如CPU、記憶體等),這樣相同監控指標的資料會相鄰儲存,提供查詢效率。
- 將監控指標對映為等長的UID可以減少行鍵的長度與重複度,減少儲存空間,同時可以方便的從行鍵根據偏移量反向推演出監控指標。
相關文章
- 架構師必備:HBase行鍵設計與應用架構
- Hbase表設計
- Hbase 設計原則
- HBase的RowKey設計原則
- Hbase的二級索引和RowKey的設計索引
- HBase的表結構你設計得不對!
- hbase統計表的行數的三種方法
- 90-50-010-原始碼-hbase的rowkey設計原始碼
- 銀行容器雲平臺建設的關鍵設計 | 資料
- 用HBase做高效能鍵值查詢?
- HBase的架構設計為什麼這麼厲害!架構
- 淺談Hbase與中間的一些設計策略
- HBase+Elasticsearch,百億級資料中心架構設計實踐Elasticsearch架構
- HBase高階特性、rowkey設計以及熱點問題處理
- 程式設計師的鍵盤程式設計師
- 行式填報之主鍵設定
- hbase之hbase shell
- '林子雨大資料' 實驗3 HBase操作與介面程式設計大資料程式設計
- 好程式設計師大資料學習路線Hbase總結程式設計師大資料
- Java併發程式設計序列之執行緒間通訊-synchronized關鍵字-volatile關鍵字Java程式設計執行緒synchronized
- redis自學(46)鍵值設計Redis
- 6-Windows程式設計 -鍵盤Windows程式設計
- Hbase(二)Hbase常用操作
- [平臺建設] HBase平臺建設實踐
- Spark+Hbase 億級流量分析實戰(日誌儲存設計)Spark
- hbase - [04] java訪問hbaseJava
- HBase 教程:什麼是 HBase?
- 關於迴圈主鍵的設計
- vim設定一鍵執行python程式碼Python
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師大資料培訓分享HBase Filter過濾器概述程式設計師大資料Filter過濾器
- 好程式設計師大資料培訓分享如何區分Hive與HBase程式設計師大資料Hive
- 好程式設計師大資料紀實:HBase知識點集中總結程式設計師大資料
- HBase
- HBase 系列(五)——HBase常用 Shell 命令
- 資料表設計之主鍵自增、UUID或聯合主鍵UI
- Java併發程式設計volatile關鍵字Java程式設計
- DevOps平臺之一鍵釋出設計dev