資料倉儲設計方案
一.概述
資料倉儲的特徵在於面向主題、整合性、穩定性和時變性,用於支援管理決策。資料倉儲的存在的意義在於對企業的所有資料進行彙總,為企業各個部門提供統一的、規範的資料出口。資料倉儲在構建過程中通常都需要進行分層處理。業務不同,分層的技術處理手段也不同。數倉分層的主要原因:
- 清晰資料結構
每一個資料分層都有它的作用域,這樣在使用表的時候能更方便的定位和理解。 - 資料血緣追蹤
由於最終給業務呈現的是一個能直接使用的業務表,但是表的資料來源有很多,如果有一張來源表出問題了,我們希望能夠快速準確的定位到問題,並清楚他的危害範圍。 - 減少重複開發
規範資料分層,開發一些通用的中間層資料,能夠減少極大的重複計算。 複雜問題簡單化
將一個複雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便於維護資料的準確性,當資料出現問題之後,可以不用修復所有的資料,只需要從有問題的步驟開始修復。二.資料倉儲分層設計
常見的資料倉儲分為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%的應用場景。
三.維度模型
維度建模的理論由 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 |