資料倉庫之分層理論
阿新 • • 發佈:2020-10-15
1.為什麼要分層
• 清晰資料結構:每一個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解。
• 資料血緣追蹤:能夠快速準確地定位到問題,並清楚它的危害範圍。
• 減少重複開發:規範資料分層,開發一些通用的中間層資料,能夠減少極大的重複計算。
• 遮蔽原始資料的異常:不必改一次業務就需要重新接入資料。
• 把複雜問題簡單化:將一個複雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便於維護資料的準確性,當資料出現問題之後,可以不用修復所有的資料,只需要從有問題的步驟開始修復。
• 空間換時間:通過建設多層次的資料模型供使用者使用,避免使用者直接使用操作型資料,可以更高效的訪問資料。
• 便於處理業務的變化:隨著業務的變化,只需要調整底層的資料,對應用層對業務的調整零感知。
資料倉庫的分層可以算是資料倉庫架構的子話題。在前段時間參與的一次討論中,筆者發現其中爭論的焦點集中在每一層的作用、特點、是否有必要存在等問題。其中,大家雖然一致提到某些相關概念,但各方的理解卻並非完全一致。例如對於ODS是什麼、維度建模是什麼等問題的解讀,都是如此。
不妨想想看:資料從分散而異構的資料來源中長途跋涉,到最終的報表、儀表盤、OLAP應用等等,讓使用者看到一致的結果,這是一個過程。記得以前有個礦泉水廣告,說要經過N層的過濾才得到了那種水。而資料倉庫也一樣,從原來亂七八糟的資料到交付到使用者手中的“純淨”資料,也需要這樣一個過濾過程,需要各種不同的過濾裝置。
這個過濾過程,我們可以稱之為ETL;而那些過濾裝置,就可以看作資料倉庫的分層。從目前來看,還沒有非常統一的分層方法,其中,Inmon和Kimball是最具代表性的兩種分層方法。
2.Inmon與Kimball
在Inmon提出的CIF(Corporate Information Factory,企業資訊工廠)中,他將ODS(Operational Data Store,操作型儲存)、EDW(Enterprise Data Warehouse,企業資料倉庫)、DM(DataMart,資料集市)區別開來,共分三層。
相對於此,Kimball的匯流排架構強調多個數據集市合成了資料倉庫,只是他們基於統一的維度而已。因此,匯流排架構的分層中,從資料來源介面就直接到了DM了。
根據這兩種思路,又可以衍生一些不同的方法。例如IBM就提出一種CDW的概念,叫做企業資料倉庫層,這一層介於EDW和DM之間,起過渡作用(因為EDW和DM兩層的建模理念是不同的)。
除了這些分層,大家都還認同一個Staging Area(集結地)的地方。這是用於ETL過程中資料的臨時儲存,可究竟這個區域是位於介面到ODS之間,還是ODS到DW之間,或是CDW到DM之間,並沒有達成一致的意見。在筆者看來,既然它是用於ETL中間資料快取的,那麼,在以上每一層都會需要,它是一個每層共用的儲存區域。
下面我們參考Inmon與Kimball的思想,將資料倉分為如下幾層進行簡單介紹。
3.CIF 層次架構
CIF 層次架構(資訊工廠)通過分層將不同的建模方案引入到不同的層次中,CIF 將資料倉庫分為四層,如圖所示:
ODS(Operational Data Store):操作資料儲存層,往往是業務資料庫表格的一對一映 射,將業務資料庫中的表格在 ODS 重新建立,資料完全一致;
DWD(Data Warehouse Detail):資料明細層,在 DWD 進行資料的清洗、脫敏、統一 化等操作,DWD 層的資料是乾淨並且具有良好一致性的資料;
DWS(Data Warehouse Service):服務資料層(公共彙總層),在 DWS 層進行輕度匯 總,為 DM 層中的不同主題提供公用的彙總資料;
DM(Data Market):資料集市層,DM 層針對不同的主題進行統計報表的生成;
3.1 層次功能詳解
3.1.1 ODS:
ODS 層中的資料全部來自於業務資料庫,ODS 層的表格與業務資料庫中的表格一一對應,就是將業務資料庫中的表格在資料倉庫的底層重新建立一次,資料與結構完全一致。
由於業務資料庫(OLTP)基本按照 ER 實體模型建模,因此 ODS 層中的建模方式也是 ER 實體模型。
3.1.2 DWD:
DWD 層要做的就是將資料清理、整合、規範化,髒資料、垃圾資料、規範不一致的、 狀態定義不一致的、命名不規範的資料都會被處理。DWD 層應該是覆蓋所有系統的、完整 的、乾淨的、具有一致性的資料層。
在 DWD 可能會用到 ER 或者維度模型。在 DWD 層會抽取出公共維度,例如區域等。 也就是說 DWD 層是一個非常規範的,高質量的,可信的資料明細層。
3.1.3 DWS:
DWS 層為公共彙總層,會進行輕度彙總,粒度比明細資料稍粗,會針對度量值進行匯 總,目的是避免重複計算。往往在 DWS 層建立寬表。例如訂單總金額,可能在原始資料中沒有這個資料,進入 DWS 層後可以統計出訂單總金額,避免重複地拿訂單明細資料去計算。
DWS 層建議使用維度建模,因為資料倉庫的主要應用是進行資料分析。
3.1.4 DM:
DM 層為資料集市層,面向特定主題,例如訂單主題、物流主題等。在 DM 完成報表 或者指標的統計,DM 層已經不包含明細資料,是粗粒度的彙總資料,因此 DM 層會被當 成 BI 或者 OLAP 的底層模型。
在大資料資料倉庫領域內,資料倉庫是包括集市的,而且物理上是統一、非隔離的,集 市的概念相較與傳統資料倉庫比較弱化,由於有底層明細資料、通用匯總資料的存在,資料 集市一般位於上層。
應用層面存在相應分析主題的概念,甚至很大程度上存在集市交叉的現象,所以如果是 在大資料領域構建企業整體資料倉庫,並且資料集市也一塊規劃,建議集市弱化,把它當作 是梳理上層資料域的工具。