分層的主要原因是在管理數據的時候,能對數據有壹個更加清晰的掌控,詳細來講,主要有下面幾個原因:
清晰數據結構:
每壹個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解。
方便數據血緣追蹤:
?簡單來說,我們最終給業務呈現的是壹個能直接使用業務表,但是它的來源有很多,如果有壹張來源表出問題了,我們希望能夠快速準確地定位到問題,並清楚它的危害範圍。
減少重復開發:
?規範數據分層,開發壹些通用的中間層數據,能夠減少極大的重復計算。
把復雜問題簡單化:
將壹個復雜的任務分解成多個步驟來完成,每壹層只處理單壹的步驟 ,比較簡單和容易理解。而且便於維護數據的準確性,當數據出現問題之後,可以不用修復所有的數據,只需要從有問題的步驟開始修復。
屏蔽原始數據的異常:
屏蔽業務的影響,不必改壹次業務就需要重新接入數據
數據分層每個企業根據自己的業務需求可以分成不同的層次,但是最基礎的分層思想,理論上 數據分為三個層 , 數據運營層 、 數據倉庫層 和 數據服務層 。基於這個基礎分層之上添加新的層次,來滿足不同的業務需求。
數據運營層(ODS)
Operate data store(操作數據-存儲),是最接近數據源中數據的壹層,數據源中的數據,經過抽取、洗凈、傳輸,也就說傳說中的ETL之後,裝入ODS層 。本層的數據,總體上大多是按照源頭業務系統的分類方式而分類的。例如:MySQL裏面的壹張表可以通過sqoop之間抽取到ODS層ODS層數據的來源方式:
數據倉庫層(DW)
Data warehouse(數據倉庫) 。在這裏, 從ODS層中獲得的數據按照主題建立各種數據模型 。例如 以研究人的旅遊消費為主題的數據集中 ,便可以結合航空公司的登機出行信息,以及銀聯系統的刷卡記錄,進行結合分析,產生數據集。在這裏,我們需要了解四個概念:維(dimension)、事實(Fact)、指標(Index)和粒度( Granularity)。
數據服務層/應用層(ADS):
Application Data Service(應用數據服務)。該層主要是提供數據產品和數據分析使用 的數據,壹般會存放在ES、MySQL等系統中供線上系統使用,也可能會存在Hive或者Druid中供數據分析和數據挖掘使用。例如:我們經常說的報表數據,或者說那種大寬表,壹般就放在這裏。
ODS 數據準備層
功能:?
ODS層是數據倉庫準備區,為DWD層提供基礎原始數據,可減少對業務系統的影響
建模方式及原則: ?
從業務系統增量抽取 、保留時間由業務需求決定、 可分表進行周期存儲、數據不做清洗轉換與業務系統數據模型保持壹致 、按主題邏輯劃分
DWD 數據明細層
功能:
? 為DW層提供來源明細數據,提供業務系統細節數據的長期沈澱 ,為未來分析類需求的擴展提供歷史數據支撐
建模方式及原則:
數據模型 與ODS層壹致,不做清洗轉換處理 、為支持數據重跑 可額外增加數據 業務日期字段、可按年月日進行分表、用增量ODS層數據和前壹天DWD相關表進行merge處理
DW(B/S) 數據匯總層
功能:?
為DW、ST層提供細粒度數據,細化成DWB和DWS;
DWB是根據DWD明細數據進行轉換 ,如維度轉代理鍵、身份證清洗、會員註冊來源清晰、字段合並、空值處理、臟數據處理、IP清晰轉換、賬號余額清洗、資金來源清洗等;?
DWS是根據DWB層數據按各個維度ID進行高粒度匯總聚合 ,如按交易來源,交易類型進行匯合
建模方式及原則:
聚合、匯總增加派生事實;
關聯其它主題的事實表,DW層可能會跨主題域;
DWB保持低粒度匯總加工數據,DWS保持高粒度匯總數據;
數據模型可能采用反範式設計,合並信息等。
Data Market (數據集市)層
功能:
可以是壹些寬表,是根據DW層數據按照各種維度或多種維度組合把需要查詢的壹些事實字段進行匯總統計並作為單獨的列進行存儲 ;?
滿足壹些特定查詢、數據挖掘應用
? 應用集市數據存儲
建模方式及原則:?
? 盡量減少數據訪問時計算 (優化檢索)
? 維度建模,星型模型;
? 分表存儲
ST 數據應用層(ADS層)
功能:
ST層面向用戶應用和分析需求 ,包括前端報表、分析圖表、KPI、儀表盤、OLAP、專題等分析, 面向最終結果用戶 ?
?適合做OLAP、報表模型,如ROLAP,MOLAP
根據DW層經過聚合匯總統計後的粗粒度事實表
建模方式及原則:?
本篇文章主要講解數倉項目中為什麽分層,比如 我們在完成壹個需要的需求的時候也許只需要壹個復雜的SQL語句就可以完成。但壹個復雜的SQL語句方便後面維護嗎?當出現了問題方便追蹤嗎? 這時候就體現出分層的好處。順便給大家分享阿裏的數倉模型是什麽樣的。信自己,努力和汗水總會能得到回報的。我是大數據老哥,我們下期見~~~