什麼是鬆散資料?
介於 Key-Value 與關聯式資料列之間:需要多屬性儲存,但無複雜關聯查詢需求。傳統 RDBMS 過重、純 KV 又不足,HBase/BigTable 正是解決此類場景的方案。
邏輯資料模型
- Row Key:列唯一識別碼。
- Time Stamp:版本號,支援多版本保留。
- Column:格式
<Family>:<Label>。Family 需 DDL 定義,Label 動態新增。
同一 Family 的資料物理鄰近存放,利於批次讀寫。
物理儲存模型
邏輯 Row 依 Column Family 拆分為多個 StoreFile(HFile),各自獨立壓縮、索引。
架構角色
| 角色 | 職責 |
| HMaster | 管理 RegionServer、負載均衡、DDL、故障轉移(不儲存資料) |
| RegionServer | 服務一或多個 Region(Table 切分單位) |
| Region | 含 MemStore、HLog (WAL)、HFile (StoreFile) |
寫入流程
- Client 寫入 → RegionServer。
- 並行寫入 MemStore (記憶體) 與 HLog (WAL)。
- MemStore 達閾值觸發 Flush → 生成不可變 HFile,清空 MemStore。
- HFile 採 B+Tree 索引,支援快速範圍查詢。
關鍵機制
- Compaction:小 HFile 合併為大檔,減少讀放大。
- Split:Region 過大自動切分;過小可 Merge。
- Meta Table:記錄 Region 位置,Root Region 為入口。
- Row 級原子性:單 Row 操作保證 ACID。
設計建議
- Row Key 設計均勻分散,避免熱點 Region。
- 依存取模式規劃 Column Family(共同讀寫的屬性歸同 Family)。
- 預估 MemStore 大小與 Flush 間隔,平衡記憶體與恢復時間。
- 上一篇文章: 透過執行計劃推導 Oracle 分散式查詢優化策略實測
- 下一篇文章: Oracle 10gR2 PSU 補丁版本對照與 OPatch 版本需求表
Copyright ©
程式碼之家 All Rights Reserved