[數倉]數據倉庫設計方案


數據倉庫設計方案

一.概述

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

  • 清晰數據結構
     每一個數據分層都有它的作用域,這樣在使用表的時候能更方便的定位和理解。
  • 數據血緣追蹤
     由於最終給業務呈現的是一個能直接使用的業務表,但是表的數據來源有很多,如果有一張來源表出問題了,我們希望能夠快速准確的定位到問題,並清楚他的危害范圍。
  • 減少重復開發
     規范數據分層,開發一些通用的中間層數據,能夠減少極大的重復計算。
  • 復雜問題簡單化
     將一個復雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便於維護數據的准確性,當數據出現問題之后,可以不用修復所有的數據,只需要從有問題的步驟開始修復。

二.數據倉庫分層設計

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

2.1 ODS層

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

2.2 DW層

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

2.3 DM層

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

三.維度模型

 維度建模的理論由 Ralph Kimball 提出,他提出將數據倉庫中的表划分為事實表和維度表兩種類型。維度建模源自數據集市,主要面向分析場景。維度建模是面向分析場景而生,針對分析場景構建數倉模型;重點關注快速、靈活的解決分析需求,同時能夠提供大規模數據的快速響應性能。針對性強,主要應用於數據倉庫構建和OLAP引擎底層數據模型。
 “事實表”,用來存儲事實的度量(measure)及指向各個維的外鍵值。“維度表”, 用來保存該維的元數據,即維的描述信息,包括維的層次及成員類別等。
 簡單的說,維度表就是你觀察該事物的角度(維度),事實表就是你要關注的內容。例如用戶使用滴滴打車,那么打車這件事就可以轉化為一個事實表,即打車訂單事實表,然后用戶對應一張用戶維度表,司機對應一張司機維度表。

3.1 事實表

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

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

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

3.2 維度表

 每個維度表都包含單一的主鍵列。維度表的主鍵可以作為與之關聯的任何事實表的外鍵,當然,維度表行的描述環境應與事實表行完全對應。維度表通常比較寬,是扁平型非規范表,包含大量的低粒度的文本屬性。
 比如商品,單一主鍵為商品ID,屬性包括產地、顏色、材質、尺寸、單價等,但並非屬性一定是文本,比如單價、尺寸,均為數值型描述性的,日常主要的維度抽象包括:時間維度表、地理區域維度表等。

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

四.數據倉庫規范

4.1 表名命名規范

 為了讓數據所有相關方對於表包含的信息有一個共同的認知。比如說屬於哪一層(ODS、DW明細、DW匯總、DM)?哪個業務/部門?哪個維度(用戶、車機設備)?哪個時間跨度(天、月、年、實時)?增量還是全量?
命名格式:層次_業務/部門_修飾/描述_范圍/周期

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

數倉層次 周期/數據范圍
公用維度 dim 日快照 d
DM層 dm 增量 i
ODS層 ods w
DWD層 dwd 拉鏈表 l
DWS層 dws 非分區全量表 a

掃碼關注公眾號【雲將數據】,更多大數據及人工智能領域信息!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM