目前主流的資料倉儲分層大多為四層,也有五層的架構,這裡介紹基本的四層架構。 分別為資料貼源層(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):該層主要是提供給資料產品和資料分析使用的資料,這層就是根據需求來抽取資料了。
一般來說,資料分層之後,還需要對開發資料的任務,進行規範,比如欄位格式,欄位名稱拼寫,主題劃分等,不然單純分層,是不足以建立好一個對開發友好,方便運維,方便取數的數倉的,這個分層就是一個貨物倉庫裡面各個房間的劃分,但是裡面貨物需要怎麼放,放在哪個房間那個位置,我想要某個資料應該怎麼找,這個就需要一整套資料開發規範,以及對應的資料地圖,資料血緣關係系統的支援了。
總的來說,資料層是數倉的骨頭支架,但是肌肉,心臟等這些器官,對建立一個好的數倉,也很關鍵。
參考文章:資料倉儲(6)數倉分層設計