為什么需要數據建模
- 核心痛點
- 數據冗余:不同業務重復存儲相同數據(如用戶基礎信息),導致存儲成本激增。
- 計算資源浪費:未經聚合的明細數據直接參與計算(如全表掃描),消耗大量CPU/內存資源。
- 數據一致性缺失:同一指標在不同業務線的口徑差異(如“活躍用戶”定義不同),引發決策沖突。
- 開發效率低下:每次分析需重新編寫復雜邏輯,無法復用已有模型。
- 數據建模核心價值
- 性能提升:分層設計(ODS→DWD→DWS→ADS),查詢響應速度提升10~100倍。
- 成本優化:數據壓縮存儲(列式存儲)、 生命周期管理(冷熱數據分層)、計算資源復用(公共層下沉)。
- 質量保障:統一指標口徑(OneData體系)、血緣關系追蹤(元數據管理)、數據質量卡點(非空/唯一性校驗)。
- 敏捷開發:標準化模型復用(如用戶維度表)、可視化開發工具(DataWorks),新業務接入效率提升70%。
關系數據庫系統和數據倉庫
-
關鍵設計對比
維度 關系數據庫系統 (RDBMS) 數據倉庫 (DW) 核心目標 事務處理(OLTP) ? 高并發增刪改 ? 實時一致性 分析決策(OLAP) ? 復雜查詢分析 ? 歷史數據挖掘 數據結構 高度規范化(3NF/BCNF) ? 減少冗余 適度反規范化(維度建模) ? 星型/雪花模型 ? 優化查詢性能 數據時效 當前狀態數據(實時更新) 歷史快照數據(T+1或實時增量) 典型場景 訂單支付、庫存扣減 用戶行為分析、銷售趨勢預測 -
Alibaba架構變革
傳統RDBMS MaxCompute數據倉庫 共享存儲 + 共享計算 存儲計算分離(OSS + 分布式計算) 垂直擴展(Scale-up) 水平擴展(Scale-out) ACID強一致性 最終一致性(BASE原則) -
數據倉庫的核心改造
- 建模方法:放棄嚴格范式約束,采用 Kimball維度建模(事實表+維度表)。
- 存儲優化:列式存儲(ORC/Parquet)降低I/O,壓縮比達5:1。
- 計算引擎:批處理(MapReduce) + 流處理(Flink)統一架構。
graph LRA[業務系統 OLTP] -->|Binlog實時同步| B(實時數倉 Flink)A -->|T+1全量同步| C(離線數倉 MaxCompute)B & C --> D[統一數據服務層]D --> E[應用場景: 實時大屏/用戶畫像/BI報表]
從OLTP和OLAP 系統的區別看模型方法論的選擇
-
OLTP vs OLAP
維度 OLTP系統 OLAP系統 對建模的影響 核心目標 高并發事務處理 復雜數據分析(用戶畫像/預測) OLTP:事務效率優先;OLAP:查詢性能優先 數據操作 細粒度增刪改 大規模聚合查詢(GROUP BY/JOIN) OLTP需避免冗余,OLAP需預聚合 數據時效 當前狀態 歷史快照(T+1或實時增量) OLAP需時間維度建模 數據量級 GB~TB級(熱數據) TB~PB級(全量歷史) OLAP依賴列存儲+壓縮技術 典型瓶頸 寫并發、鎖競爭 讀I/O、計算資源 建模需針對性優化瓶頸點 -
OLTP系統:ER模型(實體-關系)主導
- 高度規范化(3NF):消除冗余,依賴主鍵,保障事務一致性。
- 通過外鍵維護完整性(如訂單表
user_id
關聯用戶表主鍵)。
-
OLAP系統:維度建模(Kimball)主導
- 星型/雪花模型:事實表(交易行為) + 維度表(用戶/商品描述)。
- 主動引入冗余:維度表反規范化,減少Join次數。
- 退化維度:將常用維度屬性直接存入事實表(如商品名稱)。
- 緩慢變化維(SCD):Type 2設計追蹤歷史變更。
-
分層建模體系(解決數據膨脹)
分層 建模方法 目的 ODS 近原始數據(輕度清洗) 保留數據原貌 DWD 維度模型(明細層) 標準化事實與維度,SCD處理 DWS 寬表模型(匯總層) 預聚合指標,減少重復計算 ADS 應用模型(高度反規范) 適配特定場景(如實時大屏)
典型的數據倉庫建模方法論
- ER模型:高度規范化(3NF),消除冗余數據且具有強實體關系約束,適用于OLTP系統(如交易庫)。
- Kimball維度建模:星型/雪花模型 ,事實表(行為) + 維度表(描述)主動冗余優化查詢,適用于OLAP系統(分析決策場景)。
- DataVault:三層架構,Hub (業務鍵)+ Link(關系) + Satellite(屬性),適用于高變化性的業務(如金融合規)。
- Anchor模型:極致規范化, 屬性拆分為獨立表,通過錨點關聯,適用于學術研究/超復雜變更場景。
阿里巴巴數據模型實踐綜述
-
分層設計(核心骨架)
-
ODS層:近源數據保留,采用增量 + 全量混合存儲(如訂單表按天分區)
-
DWD層:
事實表:事務型、周期快照、累積快照。
維度表:全局統一代理鍵。
-
DWS層:
預聚合寬表:按主題域(用戶、商品)構建80+ 核心寬表。
CUBE:提前計算UV、GMV等300+ 核心指標。
-
ADS層:高度反規范化,為BI工具、API接口優化存儲格式。
-
-
模型融合創新
- Kimball星型模型:超級寬表 + 維度退化,減少Join次數90%+。
- Data Vault審計性:元數據驅動建模,通過DataWorks自動追蹤血緣關系。
- 范式理論:僅核心實體(用戶/商品)保持3NF,平衡冗余與一致性。
-
分布式環境下的維度建模
- 全局維度中心:整合200+數據源生成統一維度,SCD Type 2采用拉鏈表設計,歷史版本存儲成本降低70%。
- 事實表分桶優化:按user_id分1000桶,使Join操作本地化計算,冷熱數據分離:熱數據存SSD,冷數據轉OSS歸檔。
-
實時離線一體化模型
組件 離線鏈路(MaxCompute) 實時鏈路(Flink) 數據源 T+1全量同步 Binlog日志實時采集 DWD層 ORC列式存儲(壓縮比5:1) Parquet格式寫入Kafka 維度關聯 MapReduce批量Join 廣播狀態+異步維表查詢(亞秒級) 輸出 Hive分區表 Hologres實時表