首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

關係表轉 HBase 表設計指南:從縱向延伸到橫向延伸的建模實戰

     編輯:DB2 教學

核心思維轉變

關係型表「縱向延伸」(行增長) → HBase 表「橫向延伸」(列族/列動態擴展)。

HBase 儲存架構要點

  • Table:由多行組成,行鍵 RowKey 唯一標識,按字典序排序,自動分裂為 Region。
  • Row:RowKey + 多個 Column Family (CF)。CF 為物理隔離單位,各 CF 獨立 Store (MemStore + 多個 HFile)。
  • Region:由多 Store 組成,負載均衡與分布式存儲基本單元。

設計三大原則

1. RowKey 設計

  • 依查詢模式選擇高基數、均勻分布的欄位組合(如 car_id + create_at)。
  • RowKey 字典序特性可支援範圍掃描,避免熱點分區。

2. Column Family 設計

  • 同一查詢所需列盡量歸屬同一 CF,減少跨 Store 讀取。
  • CF 數量越少越好(過多 CF 互相影響 flush/compaction 效能)。

3. Column 設計

  • 固定結構:推薦序列化整行至單 Column (如 Protocol Buffers),節省儲存與網路開銷。
  • 動態擴展:按常規稀疏列設計。

實戰案例:車聯網 100 億監控記錄

Oracle 來源表:<car_id, x, y, create_at, org_id, type> (x/y 經緯度,type=1 報警/2 正常)

查詢需求:
a) 指定天+車輛 → 軌跡查詢
b) 指定天+機構 → 所有報警點下載

HBase 表設計

RowKeyColumn Family
car_id + create_at + org_id + typelocation (單 CF)

列名編碼:seq_no → 值為 x,y 序列化 (Protobuf)。

查詢映射:
a) RowKey 前綴 car_id + create_at 範圍掃描 → 軌跡
b) RowKey 前綴 create_at + org_id + type=1 範圍掃描 → 報警點

此設計利用 RowKey 字典序與前綴掃描,以最少 CF 滿足核心查詢,避免全表掃描。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved