詳解數(shù)據(jù)倉庫和數(shù)據(jù)集市:ODS、DW、DWD、DWM、DWS、ADS
點(diǎn)擊上方 "
大數(shù)據(jù)肌肉猿
"關(guān)注,?星標(biāo)一起成長
點(diǎn)擊下方鏈接,進(jìn)入高質(zhì)量學(xué)習(xí)交流群
今日更新| 1052個(gè)轉(zhuǎn)型案例分享-大數(shù)據(jù)交流群

一、數(shù)據(jù)流向

二、應(yīng)用示例

三、何為數(shù)倉DW
Data warehouse(可簡寫為DW或者DWH)數(shù)據(jù)倉庫,是在數(shù)據(jù)庫已經(jīng)大量存在的情況下,它是一整套包括了etl、調(diào)度、建模在內(nèi)的完整的理論體系。 數(shù)據(jù)倉庫的方案建設(shè)的目的,是為前端查詢和分析作為基礎(chǔ),主要應(yīng)用于OLAP(on-line Analytical Processing),支持復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢結(jié)果。目前行業(yè)比較流行的有:AWS Redshift,Greenplum,Hive等。 數(shù)據(jù)倉庫并不是數(shù)據(jù)的最終目的地,而是為數(shù)據(jù)最終的目的地做好準(zhǔn)備,這些準(zhǔn)備包含:清洗、轉(zhuǎn)義、分類、重組、合并、拆分、統(tǒng)計(jì)等主要特點(diǎn)
-
面向主題[附錄]
- 操作型數(shù)據(jù)庫組織面向事務(wù)處理任務(wù),而數(shù)據(jù)倉庫中的數(shù)據(jù)是按照一定的主題域進(jìn)行組織。
- 主題是指用戶使用數(shù)據(jù)倉庫進(jìn)行決策時(shí)所關(guān)心的重點(diǎn)方面,一個(gè)主題通過與多個(gè)操作型信息系統(tǒng)相關(guān)。
-
集成
- 需要對源數(shù)據(jù)進(jìn)行加工與融合,統(tǒng)一與綜合
- 在加工的過程中必須消除源數(shù)據(jù)的不一致性,以保證數(shù)據(jù)倉庫內(nèi)的信息時(shí)關(guān)于整個(gè)企業(yè)的一致的全局信息。(關(guān)聯(lián)關(guān)系)
-
不可修改
- DW中的數(shù)據(jù)并不是最新的,而是來源于其他數(shù)據(jù)源
- 數(shù)據(jù)倉庫主要是為決策分析提供數(shù)據(jù),涉及的操作主要是數(shù)據(jù)的查詢
-
與時(shí)間相關(guān)
- 處于決策的需要數(shù)據(jù)倉庫中的數(shù)據(jù)都需要標(biāo)明時(shí)間屬性
與數(shù)據(jù)庫的對比
- DW:專門為數(shù)據(jù)分析設(shè)計(jì)的,涉及讀取大量數(shù)據(jù)以了解數(shù)據(jù)之間的關(guān)系和趨勢
- 數(shù)據(jù)庫:用于捕獲和存儲數(shù)據(jù)
四、為何要分層
數(shù)據(jù)倉庫中涉及到的問題:- 為什么要做數(shù)據(jù)倉庫?
- 為什么要做數(shù)據(jù)質(zhì)量管理?
- 為什么要做元數(shù)據(jù)管理?
- 數(shù)倉分層中每個(gè)層的作用是什么?
- …...
為了解決我們可能面臨的問題,需要一套行之有效的數(shù)據(jù)組織、管理和處理方法,來讓我們的數(shù)據(jù)體系更加有序,這就是數(shù)據(jù)分層。數(shù)據(jù)分層的好處:
- 清晰數(shù)據(jù)結(jié)構(gòu):讓每個(gè)數(shù)據(jù)層都有自己的作用和職責(zé),在使用和維護(hù)的時(shí)候能夠更方便和理解
- 復(fù)雜問題簡化:將一個(gè)復(fù)雜的任務(wù)拆解成多個(gè)步驟來分步驟完成,每個(gè)層只解決特定的問題
- 統(tǒng)一數(shù)據(jù)口徑:通過數(shù)據(jù)分層,提供統(tǒng)一的數(shù)據(jù)出口,統(tǒng)一輸出口徑
- 減少重復(fù)開發(fā):規(guī)范數(shù)據(jù)分層,開發(fā)通用的中間層,可以極大地減少重復(fù)計(jì)算的工作
五、數(shù)據(jù)分層
每個(gè)公司的業(yè)務(wù)都可以根據(jù)自己的業(yè)務(wù)需求分層不同的層次;目前比較成熟的數(shù)據(jù)分層:數(shù)據(jù)運(yùn)營層ODS、數(shù)據(jù)倉庫層DW、數(shù)據(jù)服務(wù)層ADS(APP)。數(shù)據(jù)運(yùn)營層ODS
數(shù)據(jù)運(yùn)營層:Operation Data Store 數(shù)據(jù)準(zhǔn)備區(qū),也稱為貼源層。數(shù)據(jù)源中的數(shù)據(jù),經(jīng)過抽取、洗凈、傳輸,也就是ETL過程之后進(jìn)入本層。該層的主要功能:- ODS是后面數(shù)據(jù)倉庫層的準(zhǔn)備區(qū)
- 為DWD層提供原始數(shù)據(jù)
- 減少對業(yè)務(wù)系統(tǒng)的影響
-
業(yè)務(wù)庫
- 經(jīng)常會使用sqoop來抽取,例如每天定時(shí)抽取一次。
- 實(shí)時(shí)方面,可以考慮用canal監(jiān)聽mysql的binlog,實(shí)時(shí)接入即可。
-
埋點(diǎn)日志
- 日志一般以文件的形式保存,可以選擇用flume定時(shí)同步
- 可以用spark streaming或者Flink來實(shí)時(shí)接入
- kafka也OK
- 消息隊(duì)列:即來自ActiveMQ、Kafka的數(shù)據(jù)等。
數(shù)據(jù)倉庫層
數(shù)據(jù)倉庫層從上到下,又可以分為3個(gè)層:數(shù)據(jù)細(xì)節(jié)層DWD、數(shù)據(jù)中間層DWM、數(shù)據(jù)服務(wù)層DWS。數(shù)據(jù)細(xì)節(jié)層DWD
數(shù)據(jù)細(xì)節(jié)層:data warehouse details,DWD(數(shù)據(jù)清洗/DWI) 該層是業(yè)務(wù)層和數(shù)據(jù)倉庫的隔離層,保持和ODS層一樣的數(shù)據(jù)顆粒度;主要是對ODS數(shù)據(jù)層做一些數(shù)據(jù)的清洗和規(guī)范化的操作,比如去除空數(shù)據(jù)、臟數(shù)據(jù)、離群值等。 為了提高數(shù)據(jù)明細(xì)層的易用性,該層通常會才采用一些維度退化方法,將維度退化至事實(shí)表中,減少事實(shí)表和維表的關(guān)聯(lián)。數(shù)據(jù)中間層DWM
數(shù)據(jù)中間層:Data Warehouse Middle,DWM 該層是在DWD層的數(shù)據(jù)基礎(chǔ)上,對數(shù)據(jù)做一些輕微的聚合操作,生成一些列的中間結(jié)果表,提升公共指標(biāo)的復(fù)用性,減少重復(fù)加工的工作。 簡答來說,對通用的核心維度進(jìn)行聚合操作,算出相應(yīng)的統(tǒng)計(jì)指標(biāo)。數(shù)據(jù)服務(wù)層DWS
數(shù)據(jù)服務(wù)層:Data Warehouse Service,DWS(寬表-用戶行為,輕度聚合) 該層是基于DWM上的基礎(chǔ)數(shù)據(jù),整合匯總成分析某一個(gè)主題域的數(shù)據(jù)服務(wù)層,一般是寬表,用于提供后續(xù)的業(yè)務(wù)查詢,OLAP分析,數(shù)據(jù)分發(fā)等。 一般來說,該層的數(shù)據(jù)表會相對較少;一張表會涵蓋比較多的業(yè)務(wù)內(nèi)容,由于其字段較多,因此一般也會稱該層的表為寬表。- 用戶行為,輕度聚合對DWD
- 主要對ODS/DWD層數(shù)據(jù)做一些輕度的匯總。
數(shù)據(jù)應(yīng)用層ADS
數(shù)據(jù)應(yīng)用層:Application Data Service,ADS(APP/DAL/DF)-出報(bào)表結(jié)果 該層主要是提供給數(shù)據(jù)產(chǎn)品和數(shù)據(jù)分析使用的數(shù)據(jù),一般會存放在ES、Redis、PostgreSql等系統(tǒng)中供線上系統(tǒng)使用;也可能存放在hive或者Druid中,供數(shù)據(jù)分析和數(shù)據(jù)挖掘使用,比如常用的數(shù)據(jù)報(bào)表就是存在這里的。事實(shí)表 Fact Table
事實(shí)表是指存儲有事實(shí)記錄的表,比如系統(tǒng)日志、銷售記錄等。事實(shí)表的記錄在不斷地增長,比如電商的商品訂單表,就是類似的情況,所以事實(shí)表的體積通常是遠(yuǎn)大于其他表。維表層Dimension(DIM)
維度表(Dimension Table)或維表,有時(shí)也稱查找表(Lookup Table),是與事實(shí)表相對應(yīng)的一種表;它保存了維度的屬性值,可以跟事實(shí)表做關(guān)聯(lián),相當(dāng)于將事實(shí)表上經(jīng)常重復(fù)出現(xiàn)的屬性抽取、規(guī)范出來用一張表進(jìn)行管理。維度表主要是包含兩個(gè)部分:- 高基數(shù)維度數(shù)據(jù):一般是用戶資料表、商品資料表類似的資料表,數(shù)據(jù)量可能是千萬級或者上億級別
- 低基數(shù)維度數(shù)據(jù):一般是配置表,比如枚舉字段對應(yīng)的中文含義,或者日期維表等;數(shù)據(jù)量可能就是個(gè)位數(shù)或者幾千幾萬。
臨時(shí)表TMP
每一層的計(jì)算都會有很多臨時(shí)表,專設(shè)一個(gè)DWTMP層來存儲我們數(shù)據(jù)倉庫的臨時(shí)表六、數(shù)據(jù)集市
狹義ADS層;廣義上指hadoop從DWD DWS ADS 同步到RDS的數(shù)據(jù) 數(shù)據(jù)集市(Data Mart),也叫數(shù)據(jù)市場,數(shù)據(jù)集市就是滿足特定的部門或者用戶的需求,按照 多維 的方式進(jìn)行存儲,包括定義維度、需要計(jì)算的指標(biāo)、維度的層次等,生成面向決策分析需求的 數(shù)據(jù)立方體 。 從范圍上來說,數(shù)據(jù)是從企業(yè)范圍的 數(shù)據(jù)庫 、 數(shù)據(jù)倉庫 ,或者是更加專業(yè)的數(shù)據(jù)倉庫中抽取出來的。數(shù)據(jù)中心的重點(diǎn)就在于它迎合了專業(yè)用戶群體的特殊需求,在分析、內(nèi)容、表現(xiàn),以及易用方面。數(shù)據(jù)中心的用戶希望數(shù)據(jù)是由他們熟悉的術(shù)語表現(xiàn)的。 帶有數(shù)據(jù)集市的數(shù)據(jù)倉儲結(jié)構(gòu)


七、問題總結(jié)
ODS與DWD區(qū)別?
問:還是不太明白 ods 和 dwd 層的區(qū)別,有了 ods 層后感覺 dwd 沒有什么用了。答:嗯,我是這樣理解的,站在一個(gè)理想的角度來講,如果 ods 層的數(shù)據(jù)就非常規(guī)整,基本能滿足我們絕大部分的需求,這當(dāng)然是好的,這時(shí)候 dwd 層其實(shí)也沒太大必要。但是現(xiàn)實(shí)中接觸的情況是 ods 層的數(shù)據(jù)很難保證質(zhì)量,畢竟數(shù)據(jù)的來源多種多樣,推送方也會有自己的推送邏輯,在這種情況下,我們就需要通過額外的一層 dwd 來屏蔽一些底層的差異。
問:我大概明白了,是不是說 dwd 主要是對 ods 層做一些數(shù)據(jù)清洗和規(guī)范化的操作,dws 主要是對 ods 層數(shù)據(jù)做一些輕度的匯總?
答:對的,可以大致這樣理解。
APP層干什么的?
問:感覺DWS層是不是沒地方放了,各個(gè)業(yè)務(wù)的DWS表是應(yīng)該在 DWD還是在 app?
答:這個(gè)問題不太好回答,我感覺主要就是明確一下DWS層是干什么的,如果你的DWS層放的就是一些可以供業(yè)務(wù)方使用的寬表表,放在 app 層就行。如果你說的數(shù)據(jù)集市是一個(gè)比較泛一點(diǎn)的概念,那么其實(shí) dws、dwd、app 這些合起來都算是數(shù)據(jù)集市的內(nèi)容。
問:那存到 Redis、ES 中的數(shù)據(jù)算是 app層嗎?
答:算是的,我個(gè)人的理解,app 層主要存放一些相對成熟的表,能供業(yè)務(wù)側(cè)使用的。這些表可以在 Hive 中,也可以是從 Hive 導(dǎo)入 Redis 或者 ES 這種查詢性能比較好的系統(tǒng)中。
八、附錄
1. ETL
ETL :Extract-Transform-Load,用于描述將數(shù)據(jù)從來源端經(jīng)過抽取、轉(zhuǎn)換、加載到目的端的過程。2. 寬表
- 含義:指字段比較多的數(shù)據(jù)庫表。通常是指業(yè)務(wù)主體相關(guān)的指標(biāo)、緯度、屬性關(guān)聯(lián)在一起的一張數(shù)據(jù)庫表。
-
特點(diǎn):
-
寬表由于把不同的內(nèi)容都放在同一張表,寬表已經(jīng)不符合三范式的模型設(shè)計(jì)規(guī)范:
- 壞處:數(shù)據(jù)有大量冗余
- 好處:查詢性能的提高和便捷
- 寬表的設(shè)計(jì)廣泛應(yīng)用于數(shù)據(jù)挖掘模型訓(xùn)練前的數(shù)據(jù)準(zhǔn)備,通過把相關(guān)字段放在同一張表中,可以大大提供數(shù)據(jù)挖掘模型訓(xùn)練過程中迭代計(jì)算的消息問題。
-
寬表由于把不同的內(nèi)容都放在同一張表,寬表已經(jīng)不符合三范式的模型設(shè)計(jì)規(guī)范:
3. 主題(Subject)
是在較高層次上將企業(yè)信息系統(tǒng)中的數(shù)據(jù)進(jìn)行綜合、歸類和分析利用的一個(gè)抽象概念,每一個(gè)主題基本對應(yīng)一個(gè)宏觀的分析領(lǐng)域。在邏輯意義上,它是對應(yīng)企業(yè)中某一宏觀分析領(lǐng)域所涉及的分析對象。例如“銷售分析”就是一個(gè)分析領(lǐng)域,因此這個(gè)數(shù)據(jù)倉庫應(yīng)用的主題就是“銷售分析”。--end--
掃描下方二維碼
添加好友,備注【
交流
】
可圍觀朋友圈,也可私信交流
評論
圖片
表情
