Yige

Yige

Build

數倉系列-數據倉庫分層實現

數倉系列 - 數據倉庫分層實現#

內容整理自:

  1. 《基於大數據的數據倉庫分層實現》

數倉分層的意義#

  • 清晰數據結構:每一個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解。

  • 數據血緣追蹤:簡單來講可以這樣理解,我們最終給業務呈現的是一能直接使用的張業務表,但是它的來源有很多,如果有一張來源表出問題了,我們希望能夠快速準確地定位到問題,並清楚它的危害範圍。

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

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

  • 屏蔽原始數據的異常。

  • 屏蔽業務的影響,不必改一次業務就需要重新接入數據

四層模型#

image.png

ODS 層#

ODS(Operational Data Store)操作數據存儲

是最接近數據源中數據的一層,數據源中的數據,經過抽取、洗淨、傳輸,也就是說經過 ETL 之後,裝入本層;一般來說 ODS 層的數據和源系統的數據是同構的,主要目的是簡化後續數據加工處理的工作。從數據粒度上來說 ODS 層的數據粒度是最細的。

ODS 層的表通常包括兩類

  • 一個用於存儲當前需要加載的數據
  • 一個用於存儲處理完後的歷史數據

歷史數據一般保存 3-6 個月後需要清除,以節省空間。但不同的項目要區別對待,如果源系統的數據量不大,可以保留更長的時間,甚至全量保存

數據在裝入本層前需要做以下工作:

  • 去噪(例如去掉明顯偏離正常水平的銀行刷卡信息)

  • 去重(例如銀行賬戶信息、公安局人口信息中均含有人的姓名,但是只保留一份即可)

  • 提脏(例如有的人的銀行卡被盜刷,在十分鐘內同時有兩筆分別在中國和日本的刷卡信息,這便是脏數據)

  • 業務提取

  • 單位統一

  • 砍字段(例如用於支撐前端系統工作,但是在數據挖掘中不需要的字段)

  • 業務判別

DW#

數據倉庫層 (DW),是數據倉庫的主體

通常按照主題建立各種數據模型,如:星形或雪花結構等;

有關維度建模的方法及星型、雪花模型等請參考: 淺談數據倉庫建設中的數據建模方法

DM 層#

數據集市層(DM)date market,又稱 DWS, data warehouse service 或主題層,存放的是輕度聚合的數據。

通常根據業務需求,劃分成流量、訂單、用戶等,生成字段比較多的寬表,用於提供後續的業務查詢,OLAP 分析,數據分發等。

從數據粒度來說,這層的數據是輕度匯總級的數據,已經不存在明細數據了。從數據的時間跨度來說,通常是 DW 層的一部分,主要的目的是為了滿足用戶分析的需求,而從分析的角度來說,用戶通常只需要分析近幾年(如近三年的數據)的即可。從數據的廣度來說,仍然覆蓋了所有業務數據

APP 層#

數據產品層(APP),這一層是提供為數據產品使用的結果數據。

從數據粒度來說是高度匯總的數據。從數據的廣度來說,則並不一定會覆蓋所有業務數據。從極端情況來說,可以為每一張報表在 APP 層構建一個模型來支持,達到以空間換時間的目的。

應用層是根據業務需要,由前面三層數據統計而出的結果,可以直接提供查詢展現,或導入至 Mysql 中使用。我們經常說的報表數據,或者說那種大寬表,一般就放在這裡

需要一個管理元數據信息的系統,能夠提供方便的元數據的操作和查詢操作。主要是提供給數據產品和數據分析使用的數據,一般會存放在 es、mysql 等系統中供線上系統使用,也可能會存在 Hive 或者 Druid 中供數據分析和數據挖掘使用

三層模型#

image.png

與四層模型類似,只是把更多邏輯放在了 DW 層裡

Buffer 數據緩存層#

用於存放接口方提供的原始數據的數據庫層,此層的表結構與源數據保持基本一致,數據存放時間根據數據量大小和項目情況而定,如果數據量較大,可以只存近期數據,將歷史數據進行備份。此層的目的在於數據的中轉和備份。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。