第一篇:數據倉庫分層概念

一 爲什麼要對數據倉庫分層?
1)用空間換時間,通過大量的預處理來提升應用系統的用戶體驗(效率),因此數據倉庫會存在大量冗餘的數據;
(2)如果不分層的話,如果源業務系統的業務規則發生變化將會影響整個數據清洗過程,工作量巨大;
(3)通過數據分層管理可以簡化數據清洗的過程,因爲把原來一步的工作分到了多個步驟去完成,相當於把一個複雜的工作拆成了多個簡單的工作,把一個大的黑盒變成了一個白盒,每一層的處理邏輯都相對簡單和容易理解,這樣我們比較容易保證每一個步驟的正確性,當數據發生錯誤的時候,往往我們只需要局部調整某個步驟即可。

二  數據分層

1. ODS 數據準備層(operational data store (操作存儲數據層)原汁原味的數據集

功能:ODS層是數據倉庫準備區,爲DWD層提供基礎原始數據,可減少對業務系統的影響

建模方式及原則:從業務系統增量抽取、保留時間由業務需求決定、可分表進行週期存儲、數據不做清洗轉換與業務系統數據模型保持一致、按主題邏輯劃分

2. DWD 數據明細層(data warehouse detail(數倉庫詳細層)增加合併操作

功能:爲DW層提供來源明細數據,提供業務系統細節數據的長期沉澱,爲未來分析類需求的擴展提供歷史數據支撐

建模方式及原則:數據模型與ODS層一致,不做清晰轉換處理、爲支持數據重跑可額外增加數據業務日期字段、可按年月日進行分表、用增量ODS層數據和前一天DWD相關表進行merge處理

所做事情:在源數據裝入這一層時,要進行諸如去噪(例如去掉明顯偏離正常水平的銀行刷卡信息)、去重(例如銀行賬戶信息、公安局人口信息中均含有人的姓名,但是隻保留一份即可)、提髒(例如有的人的銀行卡被盜刷,在十分鐘內同時有兩筆分別在中國和日本的刷卡信息,這便是髒數據)、業務提取、單位統一、砍字段(例如用於支撐前端系統工作,但是在數據挖掘中不需要的字段)、業務判別等多項工作。

3. DW(B/S) 數據彙總層(數據清洗合併聚合彙總

功能:爲DW、ST層提供細粒度數據,細化成DWB合DWS;

DWB(data warehouse basis 數據倉庫基礎層  輕度彙總層)是根據DWD明細數據經行清晰轉換,如維度轉代理鍵、身份證清洗、會員註冊來源清晰、字段合併、空值處理、髒數據處理、IP清晰轉換、賬號餘額清洗、資金來源清洗等;

DWS(data warehouse service 數據倉庫服務層 主題層)是根據DWB層數據按各個維度ID進行粗粒度彙總聚合,如按交易來源,交易類型進行匯合

所做事情:數據倉庫的主體,在這裏從DWD層中獲得的數據按照主題建立各種數據模型。例如以研究人的旅遊消費爲主題的數據集中,便可以結合航空公司的登機出行信息,以及銀聯繫統的刷卡記錄,進行結合分析,產生數據集。在這裏,我們需要了解四個概念:維(dimension)、事實(Fact)、指標(Index)和粒度( Granularity)。
DM層:數據集市,從數據的時間跨度來說,通常是DW層的一部分,按照業務劃分,如流量、訂單、用戶等,生成字段比較多的寬表,用於提供後續的業務查詢,OLAP分析,數據分發等

4. DM 數據集市層(Dictionary Data Layer 字典成 | 渠道,黑白名單 各類加工,業務服務

功能:可以是一些寬表,是根據DW層數據按照各種維度或多種維度組合把需要查詢的一些事實字段進行彙總統計並作爲單獨的列進行存儲;滿足一些特定查詢、數據挖掘應用;應用集市數據存儲

建模方式及原則:儘量減少數據訪問時計算,優化檢索;維度建模,星型模型;事實拉寬,度量預先計算;分表存儲

5. ST 數據應用層(應用層 | 直接導出,展示)

功能:ST層面向用戶應用和分析需求,包括前端報表、分析圖表、KPI、儀表盤、OLAP、專題等分析,面向最終結果用戶;

適合作OLAP、報表模型,如ROLAP,MOLAP;根據DW層經過聚合彙總統計後的粗粒度事實表

建模方式及原則:保持數據量小;維度建模,星形模型;各位維度代理鍵+度量;增加數據業務日期字段,支持數據重跑;不分表存儲

三  數據流向

原始數據->ODS

這裏其實就是我們現在大數據技術發揮作用的一個主要戰場。 我們的數據主要會有兩個大的來源:
1、業務庫,這裏經常會使用sqoop來抽取,比如我們每天定時抽取一次。在實時方面,可以考慮用canal監聽mysql的binlog,實時接入即可。
2、埋點日誌,線上系統會打入各種日誌,這些日誌一般以文件的形式保存,我們可以選擇用flume定時抽取,也可以用用spark streaming或者storm來實時接入,當然,flume+kafka是企業常用的組合。
其它數據源會比較多樣性,這和具體的業務相關,不再贅述

ODS–> App層

這裏面也主要分兩種類型:
1、每日定時任務型:比如我們典型的日計算任務,每天凌晨算前一天的數據,早上起來看報表。 這種任務經常使用Hive、Spark或者MR程序來計算,最終結果寫入Hive、Hbase、Mysql、Es或者Redis中。
2、實時數據:這部分主要是各種實時的系統使用,比如我們的實時推薦、實時用戶畫像,一般我們會用Spark Streaming、Storm或者Flink來計算,最後會落入Es、Hbase或者Redis中。

DW --> App層

DW分析完的數據,一般藉助sqoop傳輸到關係型數據庫如mysql,App層根據業務需要,以可視化的形式展示給決策層(BOSS)。

 

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