乾貨:一文讀懂數據倉庫設計方案

原文:https://www.cnblogs.com/skyell/p/11005666.html
作者:Skyell
轉載原因:發現好多人對數據倉庫理解的還不夠透徹,大家一起來學習一下

概述

數據倉庫的特徵在於面向主題、集成性、穩定性和時變性,用於支持管理決策。數據倉庫的存在的意義在於對企業的所有數據進行彙總,爲企業各個部門提供統一的、規範的數據出口。數據倉庫在構建過程中通常都需要進行分層處理。業務不同,分層的技術處理手段也不同。

數倉分層的主要原因:

清晰數據結構

每一個數據分層都有它的作用域,這樣在使用表的時候能更方便的定位和理解。

數據血緣追蹤

由於最終給業務呈現的是一個能直接使用的業務表,但是表的數據來源有很多,如果有一張來源表出問題了,我們希望能夠快速準確的定位到問題,並清楚他的危害範圍。

減少重複開發

規範數據分層,開發一些通用的中間層數據,能夠減少極大的重複計算。

複雜問題簡單化

將一個複雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便於維護數據的準確性,當數據出現問題之後,可以不用修復所有的數據,只需要從有問題的步驟開始修復。

數據倉庫分層設計

 常見的數據倉庫分爲ODS操作數據存儲層、DW數據倉庫層和DM數據集市層三層,其中DW層又分爲DWD層和DWS層。數據倉庫分層結構見下圖:


1.ODS層  

ODS層中的數據全部來自於業務數據庫,ODS層的表格也業務數據庫中的表格一一對應,就是將業務數據庫中的表格在數據倉庫的底層重新建立一次,數據與結構完全一致。 由於業務數據庫(OLTP)基本按照ER實體模型建模,因此ODS層中的建模方式也是ER實體模型。

2.DW層

DWD層要做的就是將數據清理、整合、規範化、髒數據、垃圾數據、規範不一致的、狀態定義不一致的、命名不規範的數據都會被處理。DWD層應該是覆蓋所有系統的、完整的、乾淨的、具有一致性的數據層。在DWD層會根據維度模型,設計事實表和維度表,也就是說DWD層是一個非常規範的、高質量的、可信的數據明細層。 DWS層爲公共彙總層,會進行輕度彙總,粒度比明細數據稍粗,基於DWD層上的基礎數據,整合彙總成分析某一個主題域的服務數據,一般是寬表。DWS層應覆蓋80%的應用場景。

3.DM層  

DM層爲數據集市層,面向特定主題。在DM層完成報表或者指標的統計,DM層已經不包含明細數據,是粗粒度的彙總數據。DM層是針對某一個業務領域建立模型,具體用戶(一般爲決策層)查看DM層生成的報表。

維度模型

維度建模的理論由 Ralph Kimball 提出,他提出將數據倉庫中的表劃分爲事實表和維度表兩種類型。維度建模源自數據集市,主要面向分析場景。維度建模是面向分析場景而生,針對分析場景構建數倉模型;重點關注快速、靈活的解決分析需求,同時能夠提供大規模數據的快速響應性能。針對性強,主要應用於數據倉庫構建和OLAP引擎底層數據模型。

“事實表”,用來存儲事實的度量(measure)及指向各個維的外鍵值。“維度表”, 用來保存該維的元數據,即維的描述信息,包括維的層次及成員類別等。

簡單的說,維度表就是你觀察該事物的角度(維度),事實表就是你要關注的內容。例如用戶使用滴滴打車,那麼打車這件事就可以轉化爲一個事實表,即打車訂單事實表,然後用戶對應一張用戶維度表,司機對應一張司機維度表。


1.事實表

在現實世界中,每一個操作型事件,基本都是發生在實體之間的,伴隨着這種操作事件的發生,會產生可度量的值,而這個過程就產生了一個事實表,存儲了每一個可度量的事件。

發生在現實世界中的操作性事件所產生的可度量數值,存儲在事實表中。從最低的粒度級別來看,事實錶行對應一個度量事件,反之亦然。因此,事實表的設計完全依賴於物理活動,不受可能產生的最終報表的影響。除數字度量外,事實表總是包含外鍵,用於關聯與之相關的維度,也包含可選的退化維度鍵和日期/時間戳。查詢請求的主要目標是基於事實表展開計算和聚集操作。

事實表往往包含三個重要元素:

維度表外鍵度量數據事件描述信息

例如在電商場景中的一次購買事件,涉及主體包括客戶、商品、商家,產生的可度量值包括商品數量、金額、件數等。

2.維度表

每個維度表都包含單一的主鍵列。維度表的主鍵可以作爲與之關聯的任何事實表的外鍵,當然,維度錶行的描述環境應與事實錶行完全對應。維度表通常比較寬,是扁平型非規範表,包含大量的低粒度的文本屬性。

比如商品,單一主鍵爲商品ID,屬性包括產地、顏色、材質、尺寸、單價等,但並非屬性一定是文本,比如單價、尺寸,均爲數值型描述性的,日常主要的維度抽象包括:時間維度表、地理區域維度表等。

綜上所述,如果針對用戶的下單行爲(單一商品)進行維度建模,可以得到如下模型:

數據倉庫規範

1.表名命名規範

爲了讓數據所有相關方對於表包含的信息有一個共同的認知。比如說屬於哪一層(ODS、DW明細、DW彙總、DM)?

哪個業務/部門?

哪個維度(用戶、車機設備)?

哪個時間跨度(天、月、年、實時)?

增量還是全量?

命名格式:層次_業務/部門_修飾/描述_範圍/週期

數據倉庫中表格的命名規範如下表所示:

數據倉庫相關文章

1. 最新中臺架構PPT,一起欣賞6位互聯網大佬的架構圖

2. 別笑話爬蟲工程師了,數倉庫工程師也被警察傳話了。

3. 將軍令:數據安全平臺建設實踐

4.  OneData建設探索之路:SaaS收銀運營數倉建設

5. 某電商實時數倉寬表加工解決方案

關注小晨說數據,獲取更多大廠技術乾貨分享

回覆“spark”,“flink”,“機器學習”,“前端”,中臺”,架構獲取海量學習資料~~~

你也「在看」嗎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章