一、前言
最近在設計數據倉庫的數據邏輯模型,考慮到海量數據存儲在分布式數據倉庫中的技術架構模式,需要針對傳統的面相關系型數據倉庫的數據存儲模型進行技術改造。設計出一套真正適合分布式數據倉庫的數據存儲模型。
二、事實表設計基礎
事實表記錄發生在現實世界中的操作型事件,其所產生的可度數值。事實表的設計完全依賴於物理活動,不受可能產生的最終報表的影響。事實表中,除數字度量外,事實表總是包含外鍵,用於關聯與之相關的維度,也可以包含退化的維度鍵和日期/時間戳。
三、傳統模式
以FS-LDM數據存儲模型Event主題域數據存儲模型設計為例,其事件主題域數據邏輯模型結構如下圖所示:
傳統模式的主要問題如下:如果數據量很小的情況下,執行多表關聯,沒有問題,但是當在分布式數據倉庫,單表存儲海量數據的情況下,很明顯模式將面臨挑戰。
三、分布式模式-維度建模新原則
(1)以值代鍵:針對鍵值唯一的維表,除非必要,否則不引入維表,如IP地址維表,采用IP作為維表的主鍵,事實表中存儲IP值;
(2)合理分表:傳統關系型數據倉庫存在多表整合的沖動,如上圖Event事實表,各種Acount Ind,Finance Ind等,用來擴展表的通用性,試圖把所有的數據都存儲到一張表 中。分布式數據倉庫的設計,恰恰相反,因為單表數據規模的問題,如果要滿足分析和處理的性能,合理的按照業務進行數據的分表存儲。如財務相關事件、賬戶相關事件,單獨成表。更有利於數據的計算和分析。
四、分布式維度模型實例
序號 | 字段英文 | 字段中文 | 字段解釋 | 字段映射 | 字段加工邏輯 | 指標字段 |
1 | event_id | 事件ID | 記錄標識 | 標識 | ||
2 | tm | 時間 | 時間戳 | 維度 | ||
3 | domain | 域 | 維度-值 | |||
4 | ip | IP地址 | IP地址 | 維度-值 | ||
5 | os | 操作系統 | 操作系統 | 維度-值 | ||
6 | user_id | 用戶ID | 用戶ID | 維度-FK | ||
7 | date | 日期 | 日期(新增) | 維度-值 | ||
8 | from | 來源 | 訪問來源系統 | 維度-值 |
五、未完待續
分布式數據倉庫數據存儲模型設計進行中,后續會持續更新,請關注QQ群:分布式數據倉庫建模 398419457。