複製鏈接
請複製以下鏈接發送給好友

高表

鎖定
高表(high table),是HBase模型設計中與寬表對應的一種設計模式。
中文名
高表
外文名
high table
寬表:一行中包含很多列。
高表:一種新模式,每一行代表一個關係。
舉個栗子來説:
應業務需要在HBase中要設計一張表來存儲這樣的關係(關注-被關注),那麼使用寬表設計如下:
高表 高表
[1] 
由於follows列族已經定義,而列限定符可以動態添加,所以“張三”想要關注新的成員的時候,就只要在列族“follows”裏增加列即可,在這裏使用“1”作為單元值。取消關注時,就將這一列刪除。
HBase模式的簡單和靈活允許你做出這種優化。
而使用高表設計則是這樣的:
高表 高表
高表設計的優點:
  1. 使用短的的列族和列限定符,可以減少網絡IO,因為KeyValue對象變小了。試想寬表設計時,如果某個人關注了1W個用户,那麼在獲取他的關注列表時會有網絡問題的。
  2. MD5後的rowkey,可以使數據均勻分佈在region上,避免了熱點問題 [2] 
  3. rowkey的長度統一,方便預測讀寫性能,同時更加容易掃描計算起始和停止鍵
總地來説,就是高表可以大大提升讀數據的性能。
人有悲歡離合,月有陰晴圓缺,凡事都有其不足,高表設計帶來的缺點:破壞了原子性原則。在上面的栗子中,因為應用不需要原子性,所以是可行的。但是其他使用場景可能需要這種原子性,那時寬表更合適。
參考資料