目前主流的數據倉庫分層大多為四層,也有五層的架構,這里介紹基本的四層架構。 分別為數據貼源層(ods)、數據倉庫明細層(dw)、多維明細層(dws)和數據集市層(dm)。
下面是架構圖:
數據分層的目的是:減少重復計算,避免煙囪式開發,節省計算資源,靠上層次,越對應用友好,也對用戶友好,希望大部分(80%以上)的需求,都用DWS,DW的表來支持就行,所以ODS層數據不能被DM層任務引用,需要抽取數據到DW,或者DWS。
DWS匯總層應優先調用DW明細層。在調用可累加類指標計算時,DWS匯總層盡量優先調用已經產出的粗粒度匯總層,以避免大量匯總都直接從海量的明細數據層計算。
DM層優先調用DWS,視情況小部分可以調用DW,禁止直接調用ODS數據,避免出現過度的ODS層引用、不合理的數據復制以及子集合冗余
DM層任務的深度不宜過大(建議不超過10層)。
總的來說,數據分層的目的如下:
- 清晰數據結構:讓每個數據層都有自己的作用和職責,在使用和維護的時候能夠更方便和理解
- 復雜問題簡化:將一個復雜的任務拆解成多個步驟來分步驟完成,每個層只解決特定的問題
- 統一數據口徑:通過數據分層,提供統一的數據出口,統一輸出口徑
- 減少重復開發:規范數據分層,開發通用的中間層,可以極大地減少重復計算的工作
數據貼源層(ods):用來儲存原始數據,同步的腳本和數據的表,要和原始的表有一定的聯系,用於方便數據治理,數據溯源等。一般,同步的腳本,和ods的表要體現源數據庫表的特征,一般表名和字段名,字段格式,都和原始表保持一致,同步的形式包括增量同步和全量同步。
數據倉庫明細層(dw):這一層存放的是一致的、准確的、干凈的數據,即對源系統數據進行了清洗(去除了雜質)后的數據。一層一般來說是按照維度建模抽取的明細數據。通常是星形或雪花結構的數據。
多維明細層(dws):這一層存放的是DW層的,一些通用的匯總數據。一般是某個主題的某個維度的匯總數據,用於提供后續的業務查詢,OLAP分析,數據分發等。一般來說,該層的數據表會相對較少,一張表會涵蓋比較多的業務內容,由於其字段較多,因此一般也會稱該層的表為寬表。
數據集市層(dm):該層主要是提供給數據產品和數據分析使用的數據,這層就是根據需求來抽取數據了。
一般來說,數據分層之后,還需要對開發數據的任務,進行規范,比如字段格式,字段名稱拼寫,主題划分等,不然單純分層,是不足以建立好一個對開發友好,方便運維,方便取數的數倉的,這個分層就是一個貨物倉庫里面各個房間的划分,但是里面貨物需要怎么放,放在哪個房間那個位置,我想要某個數據應該怎么找,這個就需要一整套數據開發規范,以及對應的數據地圖,數據血緣關系系統的支持了。
總的來說,數據層是數倉的骨頭支架,但是肌肉,心臟等這些器官,對建立一個好的數倉,也很關鍵。
需要數據倉庫資料可以點擊這個領取數據倉庫(13)大數據數倉經典最值得閱讀書籍推薦
參考文章:數據倉庫(6)數倉分層設計