1. 程式人生 > >Hbase表設計

Hbase表設計

技術分享 設計 解決 寫入 bsp mil 一定的 mem 閾值

HBase與RDBMS的區別: Hbase的cell具有版本描述(versioned),行是有序的,列(Qualifier)在所屬列簇(column families)存在是,由客戶端添加。

  1. Hbase中沒有Joins的概念。如果要join,在設計的時候,要考慮用大表的思維解決。
  2. Row Keys設計: 主鍵,在region裏按字母順序排列(Byte數組)。寫入的時候要分散,避免造成數據只保存在幾個結點上,如order表 可以把order id 做reverse 操作用於row key。

註:多個條件查詢,可以選擇組合rowkey。

讀取數據時候,只能按rowkey或者scan全表

3.列簇CF設計:盡量CF的數量1-2個。設計hbase shema的時候。要盡量只有一個column family

Flush: MemStore 中的數據達到一定的閾值,被Flush成HDFS中的HFile文件。

Compaction: 可以把多個HFile的”交錯無序狀態“,變成單個Hfile的”有序狀態“,降低讀取時延。

技術分享圖片

引:http://baijiahao.baidu.com/s?id=1596690073555129451&wfr=spider&for=pc

案例:

1. 學生表,課程表,多對多。

RDBMS:

技術分享圖片

Hbase:

技術分享圖片

2. person 身份證表 1:1

RDBMS

技術分享圖片

Hbase:

技術分享圖片

3. 訂單: roder表和order detail 1:N

RDBMS

技術分享圖片

Hbase表設計