Hbase表設計
HBase與RDBMS的區別: Hbase的cell具有版本描述(versioned),行是有序的,列(Qualifier)在所屬列簇(column families)存在是,由客戶端添加。
- Hbase中沒有Joins的概念。如果要join,在設計的時候,要考慮用大表的思維解決。
- 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表設計