詳解數(shù)倉(cāng)中的數(shù)據(jù)分層:ODS、DWD、DWM、DWS、ADS

何為數(shù)倉(cāng)DW

Data warehouse(可簡(jiǎn)寫為DW或者DWH)數(shù)據(jù)倉(cāng)庫(kù),是在數(shù)據(jù)庫(kù)已經(jīng)大量存在的情況下,它是一整套包括了etl、調(diào)度、建模在內(nèi)的完整的理論體系。

數(shù)據(jù)倉(cāng)庫(kù)的方案建設(shè)的目的,是為前端查詢和分析作為基礎(chǔ),主要應(yīng)用于OLAP(on-line Analytical Processing),支持復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢結(jié)果。目前行業(yè)比較流行的有:AWS Redshift,Greenplum,Hive等。

數(shù)據(jù)倉(cāng)庫(kù)并不是數(shù)據(jù)的最終目的地,而是為數(shù)據(jù)最終的目的地做好準(zhǔn)備,這些準(zhǔn)備包含:清洗、轉(zhuǎn)義、分類、重組、合并、拆分、統(tǒng)計(jì)等

為何要分層

數(shù)據(jù)倉(cāng)庫(kù)中涉及到的問(wèn)題:

  1. 為什么要做數(shù)據(jù)倉(cāng)庫(kù)?
  2. 為什么要做數(shù)據(jù)質(zhì)量管理?
  3. 為什么要做元數(shù)據(jù)管理?
  4. 數(shù)倉(cāng)分層中每個(gè)層的作用是什么?
  5. …...

在實(shí)際的工作中,我們都希望自己的數(shù)據(jù)能夠有順序地流轉(zhuǎn),設(shè)計(jì)者和使用者能夠清晰地知道數(shù)據(jù)的整個(gè)聲明周期,比如下面左圖。

但是,實(shí)際情況下,我們所面臨的數(shù)據(jù)狀況很有可能是復(fù)雜性高、且層級(jí)混亂的,我們可能會(huì)做出一套表依賴結(jié)構(gòu)混亂,且出現(xiàn)循環(huán)依賴的數(shù)據(jù)體系,比如下面的右圖。

為了解決我們可能面臨的問(wèn)題,需要一套行之有效的數(shù)據(jù)組織、管理和處理方法,來(lái)讓我們的數(shù)據(jù)體系更加有序,這就是數(shù)據(jù)分層。數(shù)據(jù)分層的好處:

  • 清晰數(shù)據(jù)結(jié)構(gòu):讓每個(gè)數(shù)據(jù)層都有自己的作用和職責(zé),在使用和維護(hù)的時(shí)候能夠更方便和理解
  • 復(fù)雜問(wèn)題簡(jiǎn)化:將一個(gè)復(fù)雜的任務(wù)拆解成多個(gè)步驟來(lái)分步驟完成,每個(gè)層只解決特定的問(wèn)題
  • 統(tǒng)一數(shù)據(jù)口徑:通過(guò)數(shù)據(jù)分層,提供統(tǒng)一的數(shù)據(jù)出口,統(tǒng)一輸出口徑
  • 減少重復(fù)開(kāi)發(fā):規(guī)范數(shù)據(jù)分層,開(kāi)發(fā)通用的中間層,可以極大地減少重復(fù)計(jì)算的工作

數(shù)據(jù)分層

每個(gè)公司的業(yè)務(wù)都可以根據(jù)自己的業(yè)務(wù)需求分層不同的層次;目前比較流行的數(shù)據(jù)分層:數(shù)據(jù)運(yùn)營(yíng)層、數(shù)據(jù)倉(cāng)庫(kù)層、數(shù)據(jù)服務(wù)層。

數(shù)據(jù)運(yùn)營(yíng)層ODS

數(shù)據(jù)運(yùn)營(yíng)層:Operation Data Store 數(shù)據(jù)準(zhǔn)備區(qū),也稱為貼源層。數(shù)據(jù)源中的數(shù)據(jù),經(jīng)過(guò)抽取、洗凈、傳輸,也就是ETL過(guò)程之后進(jìn)入本層。該層的主要功能:

  • ODS是后面數(shù)據(jù)倉(cāng)庫(kù)層的準(zhǔn)備區(qū)
  • 為DWD層提供原始數(shù)據(jù)
  • 減少對(duì)業(yè)務(wù)系統(tǒng)的影響

為了考慮后續(xù)可能需要追溯數(shù)據(jù)問(wèn)題,因此對(duì)于這一層就不建議做過(guò)多的數(shù)據(jù)清洗工作,原封不動(dòng)地接入原始數(shù)據(jù)即可

這層的數(shù)據(jù)是后續(xù)數(shù)據(jù)倉(cāng)庫(kù)加工數(shù)據(jù)的來(lái)源。數(shù)據(jù)來(lái)源的方式:

  1. 業(yè)務(wù)庫(kù):sqoop定時(shí)抽取數(shù)據(jù);實(shí)時(shí)方面考慮使用canal監(jiān)聽(tīng)mysql的binlog日志,實(shí)時(shí)接入即可
  2. 埋點(diǎn)日志:日志一般是以文件的形式保存,可以選擇使用flume來(lái)定時(shí)同步;可以使用spark streaming或者Flink、Kafka來(lái)實(shí)時(shí)接入
  3. 消息隊(duì)列:來(lái)自ActiveMQ、Kafka的數(shù)據(jù)等

數(shù)據(jù)倉(cāng)庫(kù)層

數(shù)據(jù)倉(cāng)庫(kù)層從上到下,又可以分為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

該層是業(yè)務(wù)層和數(shù)據(jù)倉(cāng)庫(kù)的隔離層,保持和ODS層一樣的數(shù)據(jù)顆粒度;主要是對(duì)ODS數(shù)據(jù)層做一些數(shù)據(jù)的清洗和規(guī)范化的操作,比如去除空數(shù)據(jù)、臟數(shù)據(jù)、離群值等。

為了提高數(shù)據(jù)明細(xì)層的易用性,該層通常會(huì)才采用一些維度退化方法,將維度退化至事實(shí)表中,減少事實(shí)表和維表的關(guān)聯(lián)。

數(shù)據(jù)中間層DWM

數(shù)據(jù)中間層:Data Warehouse Middle,DWM;

該層是在DWD層的數(shù)據(jù)基礎(chǔ)上,對(duì)數(shù)據(jù)做一些輕微的聚合操作,生成一些列的中間結(jié)果表,提升公共指標(biāo)的復(fù)用性,減少重復(fù)加工的工作。

簡(jiǎn)答來(lái)說(shuō),對(duì)通用的核心維度進(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ā)等。

一般來(lái)說(shuō),該層的數(shù)據(jù)表會(huì)相對(duì)較少;一張表會(huì)涵蓋比較多的業(yè)務(wù)內(nèi)容,由于其字段較多,因此一般也會(huì)稱該層的表為寬表。

數(shù)據(jù)應(yīng)用層ADS

數(shù)據(jù)應(yīng)用層:Application Data Service,ADS;

該層主要是提供給數(shù)據(jù)產(chǎn)品和數(shù)據(jù)分析使用的數(shù)據(jù),一般會(huì)存放在ES、Redis、PostgreSql等系統(tǒng)中供線上系統(tǒng)使用;也可能存放在hive或者Druid中,供數(shù)據(jù)分析和數(shù)據(jù)挖掘使用,比如常用的數(shù)據(jù)報(bào)表就是存在這里的。

事實(shí)表 Fact Table

事實(shí)表是指存儲(chǔ)有事實(shí)記錄的表,比如系統(tǒng)日志、銷售記錄等。事實(shí)表的記錄在不斷地增長(zhǎng),比如電商的商品訂單表,就是類似的情況,所以事實(shí)表的體積通常是遠(yuǎn)大于其他表。

維表層Dimension

維度表(Dimension Table)或維表,有時(shí)也稱查找表(Lookup Table),是與事實(shí)表相對(duì)應(yīng)的一種表;它保存了維度的屬性值,可以跟事實(shí)表做關(guān)聯(lián),相當(dāng)于將事實(shí)表上經(jīng)常重復(fù)出現(xiàn)的屬性抽取、規(guī)范出來(lái)用一張表進(jìn)行管理。維度表主要是包含兩個(gè)部分:

  • 高基數(shù)維度數(shù)據(jù):一般是用戶資料表、商品資料表類似的資料表,數(shù)據(jù)量可能是千萬(wàn)級(jí)或者上億級(jí)別

  • 低基數(shù)維度數(shù)據(jù):一般是配置表,比如枚舉字段對(duì)應(yīng)的中文含義,或者日期維表等;數(shù)據(jù)量可能就是個(gè)位數(shù)或者幾千幾萬(wàn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容