資料倉庫分層
1、為什麼要分層
在未分層的情況下,資料之間的耦合性與業務耦合性是不可避免的,當源業務系統的業務規則發生變化時,可能影響整個資料的清洗過程。這就好比把襯衫、褲子、襪子、外套分類存放整理 就比 打散之後不分類的整理哪一種更讓人舒服,更容易找呢?
2、分層的好處
資料分層簡化了資料清洗的過程,每一層的邏輯變得更加簡單和易於理解,當發生錯誤或規則變化時,只需要進行區域性調整。
通過大量的預處理來提升應用系統查詢速度,進而提升的使用者體驗,因此資料倉庫會冗餘大量的資料,是典型的空間換時間的策略。這好處還真有點像衣服歸類存放的好處,有些東西不用刻意記,想一種日常現象理解更容易
3、資料倉庫分層
其實各種分層無論是接下來常用的分層還是阿里的分層,只有適合當前業務的分層才是最好的分層;有的公司業務沒有那麼麻煩,就只要把資料理清楚,分清楚就OK,不一定非要按著這個分層;
3.1、資料操作層-ODS
全稱是Operational Data Store,又叫資料準備層,資料來源層;日誌或者關係型資料庫,並通過Flume、Sqoop、Kettle等etl工具匯入到HDFS,並對映到HIVE的資料倉庫表中。主要用於原始資料在資料平臺的落地,這些資料從資料結構,資料之間的邏輯關係上都與原始資料保持一致,在源資料裝入這一層時,要進行諸如業務欄位提取或去掉不用欄位,髒資料處理等等。可以理解為是關係層的基礎資料
1) 資料結構:資料機構與原始資料基本保持一致
2) 儲存週期:ODS預設保留近30天的資料
3) 表命名規範:[層次]_[主題]_[表內容]_[分表規則]
ODS層資料的來源方式:
1) 業務庫
經常會使用sqoop來抽取,比如我們每天定時抽取一次。在實時方面,可以考慮用canal監聽mysql的binlog,實時接入即可。
2)埋點日誌
線上系統會打入各種日誌,這些日誌一般以檔案的形式儲存,我們可以選擇用flume定時抽取,也可以用用spark streaming或者storm來實時接入,當然,kafka也會是一個關鍵的角色。
3)其它資料來源
這和具體的業務相關
3.2、公共的資訊層-DIM
主要存放公共的資訊資料,比如國家程式碼和國家名,地理位置等資訊就存在DIM層表中,對外開放,用於DWD,DWS和APP層的資料維度關聯。可以理解為一些字典表、單獨存放
1) 資料機構:維表,以國家ID等欄位為主鍵
2) 儲存週期:按需儲存,一般會保留歷史至今所有的資料
3) 命名規範:
所有維度表都在DIM下面。
dim.dim+_業務描述
舉例: dim.dim_year 時間維表
3.3、資料明細層-DWD
全稱是Data Warehouse Detail,用於源系統資料在資料平臺中的永久儲存。它用以支撐DWS層和DM層無法覆蓋的需求,比如像使用者通話詳單類業務需求。該層的資料模型不建議開給不懂技術的業務人員直接使用。這一層主要解決一些資料質量問題和資料的完整度問題。比如商場的會員資訊來與不同表,某些會員的的和資料可能不完整等等問題,我們可以再這一層做一些遮蔽
1) 資料結構:資料結構與源系統保持一致
2) 儲存週期:保留歷史至今所有的資料
3) 命名規範:dwd.dwd_業務描述+_時間粒度
舉例: dwd.dwd_sales_d 銷售詳細日誌
3.4、資料彙總層- DWS層
全稱是Data Warehouse Service,主要包含兩類彙總表:一是細粒度寬表,二是粗粒度彙總表。我們拿商場售賣舉例,那麼包含基於訂單、會員、商品、店鋪等實體的細粒度寬表和基於維度組合(會員日進場彙總、會員消費彙總、商場銷售日彙總、店鋪銷售日彙總等)的粗粒度彙總表。這層是對外開放的,用以支撐絕大部分的業務需求,彙總層是為了簡化源系統複雜的邏輯關係以及質量問題等,這層是的業務結構容易理解。各個層面的工程師容易上手。dws層的彙總資料目標是能滿足80%的業務計算。
1) 資料機構: 寬表:以業務實體進行展開,將與業務有關的相關欄位和屬性進行預關聯,預處理和預計算,對業務實體進行拉伸形成寬表.彙總表:維度組合形成的彙總表
2) 儲存週期:原則上保留歷史至今全部的資料
3) 命名規範:
所有資料彙總層的表都放在DWS下面
dws.dws_業務描述+_時間粒度+_sum
舉例:dws.dws_trans_d_sum 交易日彙總表
4、資料倉庫分層-阿里
4.1、ODS 資料準備層
功能:ODS層是資料倉庫準備區,為DWD層提供基礎原始資料,可減少對業務系統的影響
建模方式及原則:從業務系統增量抽取、保留時間由業務需求決定、可分表進行週期儲存、資料不做清洗轉換與業務系統資料模型保持一致、按主題邏輯劃分。
4.2、DWD 資料明細層
功能:為DW層提供來源明細資料,提供業務系統細節資料的長期沉澱,為未來分析類需求的擴充套件提供歷史資料支撐
建模方式及原則:資料模型與ODS層一致,不做清晰轉換處理、為支援資料重跑可額外增加資料業務日期欄位、可按年月日進行分表、用增量ODS層資料和前一天DWD相關表進行merge處理。
4.3、DW(B/S) 資料彙總層
功能:為DW、ST層提供細粒度資料,細化成DWB合DWS;DWB是根據DWD明細資料經行清晰轉換,如維度轉代理鍵、身份證清洗、會員註冊來源清晰、欄位合併、空值處理、髒資料處理、IP清晰轉換、賬號餘額清洗、資金來源清洗等;DWS是根據DWB層資料按各個維度ID進行粗粒度彙總聚合,如按交易來源,交易型別進行匯合
建模方式及原則:
1) 聚合、彙總增加派生事實;
2) 關聯其它主題的事實表,DW層可能會跨主題域;
3) DWB保持低粒度彙總加工資料,DWS保持高粒度彙總資料;
4) 資料模型可能採用反正規化設計,合併資訊等。
4.4、DM 資料集市層
功能:可以是一些寬表,是根據DW層資料按照各種維度或多種維度組合把需要查詢的一些事實欄位進行彙總統計並作為單獨的列進行儲存;滿足一些特定查詢、資料探勘應用;應用集市資料儲存
建模方式及原則:
1) 儘量減少資料訪問時計算,優化檢索;
2) 維度建模,星型模型;
3) 事實拉寬,度量預先計算;
4) 分表儲存
4.5、ST 資料應用層
功能:ST層面向用戶應用和分析需求,包括前端報表、分析圖表、KPI、儀表盤、OLAP、專題等分析,面向最終結果使用者;適合作OLAP、報表模型,如ROLAP,MOLAP;根據DW層經過聚合彙總統計後的粗粒度事實表
建模方式及原則:
1) 保持資料量小;
2) 維度建模,星形模型;
3) 各位維度代理鍵+度量;
4) 增加資料業務日期欄位,支援資料重跑;
5) 不分表儲存