天天看點

資料倉庫分層中的ODS、DWD、DWS

Data warehouse(可簡寫為DW或者DWH)資料倉庫,是在資料庫已經大量存在的情況下,為了進一步挖掘資料資源、為了決策需要而産生的,它是一整套包括了etl、排程、模組化在内的完整的理論體系。資料倉庫的方案建設的目的,是為前端查詢和分析作為基礎,主要應用于OLAP(on-line Analytical Processing),支援複雜的分析操作,側重決策支援,聽且提供直覺易懂的查詢結果。比較流行的有:AWS Redshift,Greenplum,Hive等。

面向主題:

操作型資料庫組織面向事務處理任務,而資料倉庫中的資料是按照一定的主題域進行組織。

主題是指使用者使用資料倉庫進行決策時所關心的重點方面,一個主題通過與多個操作型資訊系統相關。

內建

需要對源資料進行加工與融合,統一與綜合

在加工的過程中必須消除源資料的不一緻性,以保證資料倉庫内的資訊時關于整個企業的一緻的全局資訊。(關聯關系)

不可修改

DW中的資料并不是最新的,而是來源于其他資料源

資料倉庫主要是為決策分析提供資料,涉及的操作主要是資料的查詢

與時間相關

處于決策的需要資料倉庫中的資料都需要标明時間屬性

DW:專門為資料分析設計的,涉及讀取大量資料以了解資料之間的關系和趨勢

資料庫:用于捕獲和存儲資料

特性

資料倉庫

事務資料庫

适合的工作負載

分析、報告、大資料

事務處理

資料源

從多個來源收集和标準化的資料

從單個來源(例如事務系統)捕獲的資料

資料捕獲

批量寫入操作通過按照預定的批處理計劃執行

針對連續寫入操作進行了優化,因為新資料能夠最大程度地提高事務吞吐量

資料标準化

非标準化schema,例如星型Schema或雪花型schema

高度标準化的靜态schema

資料存儲

使用列式存儲進行了優化,可實作輕松通路和高速查詢性能

針對在單行型實體塊中執行高吞吐量寫入操作進行了優化

資料通路

為最小化I/O并最大化資料吞吐量進行了優化

大量小型讀取操作

資料分層,每個企業根據自己的業務需求可以分成不同的層次,但是最基礎的分層思想,理論上資料分為三個層:資料營運層、資料倉庫層、資料服務層。基于這個基礎分層之上,再送出資訊的層次,來滿足不同的業務需求。

ODS:Operation Data Store 資料準備區,也稱為貼源層。資料倉庫源頭系統的資料表通常會原封不動的存儲一份,這稱為ODS層,是後續資料倉庫加工資料的來源。

ODS層資料的來源方式:

業務庫

經常會使用sqoop來抽取,例如每天定時抽取一次。

實時方面,可以考慮用canal監聽mysql的binlog,實時接入即可。

埋點日志

日志一般以檔案的形式儲存,可以選擇用flume定時同步

可以用spark streaming或者Flink來實時接入

kafka也OK

消息隊列:即來自ActiveMQ、Kafka的資料等。

DW資料分層,由下到上為DWD,DWB,DWS。

DWD:data warehouse details 細節資料層,是業務層與資料倉庫的隔離層。主要對ODS資料層做一些資料清洗和規範化的操作。

資料清洗:去除空值、髒資料、超過極限範圍的

DWB:data warehouse base 資料基礎層,存儲的是客觀資料,一般用作中間層,可以認為是大量名額的資料層。

DWS:data warehouse service 資料服務層,基于DWB上的基礎資料,整合彙總成分析某一個主題域的服務資料層,一般是寬表。用于提供後續的業務查詢,OLAP分析,資料分發等。

使用者行為,輕度聚合

主要對ODS/DWD層資料做一些輕度的彙總。

ADS:applicationData Service應用資料服務,該層主要是提供資料産品和資料分析使用的資料,一般會存儲在ES、mysql等系統中供線上系統使用。

我們通過說的報表資料,或者說那種大寬表,一般就放在這裡

ETL :Extract-Transform-Load,用于描述将資料從來源端經過抽取、轉換、加載到目的端的過程。

含義:指字段比較多的資料庫表。通常是指業務主體相關的名額、緯度、屬性關聯在一起的一張資料庫表。

特點:

寬表由于把不同的内容都放在同一張表,寬表已經不符合三範式的模型設計規範:

壞處:資料有大量備援

好處:查詢性能的提高和便捷

寬表的設計廣泛應用于資料挖掘模型訓練前的資料準備,通過把相關字段放在同一張表中,可以大大提供資料挖掘模型訓練過程中疊代計算的消息問題。

為了建立備援較小、結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關系型資料庫中這種規則就稱為範式。範式時符合某一種設計要求的總結。

第一範式:確定每列保持原子性,即要求資料庫表中的所有字段值都是不可分解的原子值。

第二範式:確定表中的每列都和主鍵相關。也就是說在一個資料庫表中,一個表中隻能儲存一種資料,不可以把多種資料儲存在同一張資料庫表中。

作用:減少了資料庫的備援

第三範式:確定每列都和主鍵列直接相關,而不是間接相關。

作者:AmyZYX

出處:http://www.cnblogs.com/amyzhu/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。