數據倉庫(6)數倉分層設計

  目前主流的數據倉庫分層大多為四層,也有五層的架構,這裡介紹基本的四層架構。 分別為數據貼源層(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)數倉分層設計