分層架構在數據倉庫的應用

分層架構的特點

分層架構是運用最為廣泛的架構模式,經典的如B/S架構、 MVC 架構。其特點如下:

  • 優點:

分離開發人員的關注,每個開發人員可以只關注自己所負責的層次的事情,無需過多關注其它層級的東西;

解耦,降低依賴,上層只能依賴於下層;

可復用,可以將公共的部分下沉到同一個層級,上層可以復用公共層級。

  • 缺點:

性能下降,本來可以直連操作,現在要層層傳遞,勢必造成性能的下降;

  • 其它特點

開發成本很受設計品質的影響,因為多層分別承擔各自的職責,一旦變更可能需要在多個層做更改,這樣難免會增加開發成本;但是合理的能力抽象可以提高了復用性,又能降低開發成本。

可擴展性可高可低,有些層級變化可能涉及到其它層的修改造成擴展比較麻煩;但若設計得好的話,若需要變更的時候可以只改動某一層的東西,對其他層次影響較小。

數據倉庫分層的好處

1)清晰數據結構:每一個數據分層都有對應的作用域,在使用數據的時候能更方便的定位和理解。

2)數據血緣追蹤:提供給業務人員或下游系統的數據服務時都是目標數據,目標數據的數據來源一般都來自於多張表數據。若出現目標數據異常時,清晰的血緣關係可以快速定位問題所在。而且,血緣管理也是元數據管理重要的一部分。

3)減少重複開發:數據的逐層加工原則,下層包含了上層數據加工所需要的數據,這樣的加工方式可以避免數據開發人員需要重新從源系統抽取數據進行加工。

4)數據關係條理化:源系統間存在複雜的數據關係,比如客戶資訊同時存在於核心系統、信貸系統、理財系統、資金系統,取數時該如何決策呢?數據倉庫會對相同主題的數據進行統一建模,把複雜的數據關係梳理成條理清晰的數據模型,使用時就可避免上述問題了。

5)屏蔽原始數據的影響:數據的逐層加工原則,上層的數據都由下一層的數據加工獲取,不允許跳級取數。而原始數據位於數倉的最底層,離應用層數據還有多層的數據加工,所以加工應用層數據的過程中就會把原始數據的變更消除掉,保持應用層的穩定性。

數據倉庫的分層架構

數倉的分層架構有很多種,不同企業會根據業務和發展的考量,設計不同的分層架構,架構的名字也不盡相同。下圖是用得相對比較廣泛的分層架構。

 

在該架構中,ODS層從數據源抽取數據,一般來說是和源數據的結構一致,不會做很大的變更,這樣做主要是起到一個緩衝的作用,便於後續其它層次建模取數匯總,同時也方便追溯數據源。

抽取到ODS層後,根據業務主體進行建模,分別從ODS中取到相關的數據放到明細表中,存儲明細數據表的層次則為DWD層;

由於業務分析很多用到匯總的數據,比如月成交額之類的,因此建一個匯總層;

對於一些指標而言,比如某月某城市用戶的數量,涉及到時間和地點的維度,這些一般是公共層次,因此可以建一層DIM維度層;

有些業務場景,需要將計算結果作為業務系統的數據,或拿數據用於數據挖掘之類的應用,因此建一層ADS層。

以上的架構只是目前比較廣泛的情況,事實上每個企業都有不同的分層架構,至少在筆者公司中,不是按照這種方式進行分層。

小結

本文介紹了分層架構、分層架構的特點,以及在數據倉庫中的應用。對於層次架構而言,其實是應用很廣泛有相對比較簡單的架構,但架構的品質取決於分層的情況,因此,一定要好好考慮清楚企業的業務場景和未來的發展,設計出一個適合的架構。

 


 

 

關注【大數據的奇妙冒險】,獲取更多內容以及大數據相關資料