教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

為什么要給數(shù)據(jù)倉(cāng)庫(kù)分層?每層具體的含義是什么?

更新時(shí)間:2021年07月23日15時(shí)05分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

為什么要分層?
作為一名數(shù)據(jù)的規(guī)劃者,我們肯定希望自己的數(shù)據(jù)能夠有秩序地流轉(zhuǎn),數(shù)據(jù)的整個(gè)生命周期能夠清晰明確被設(shè)計(jì)者和使用者感知到。直觀來(lái)講就是如圖這般層次清晰、依賴關(guān)系直觀。
Hive數(shù)據(jù)倉(cāng)庫(kù)分層
但是,大多數(shù)情況下,我們完成的數(shù)據(jù)體系卻是依賴復(fù)雜、層級(jí)混亂的。如下的右圖,在不知不覺的情況下,我們可能會(huì)做出一套表依賴結(jié)構(gòu)混亂,甚至出現(xiàn)循環(huán)依賴的數(shù)據(jù)體系。
Hive數(shù)據(jù)倉(cāng)庫(kù)分層

因此,我們需要一套行之有效的數(shù)據(jù)組織和管理方法來(lái)讓我們的數(shù)據(jù)體系更有序,這就是談到的數(shù)據(jù)分層。數(shù)據(jù)分層并不能解決所有的數(shù)據(jù)問(wèn)題,但是,數(shù)據(jù)分層卻可以給我們帶來(lái)如下的好處:
1)清晰數(shù)據(jù)結(jié)構(gòu):每一個(gè)數(shù)據(jù)分層都有它的作用域和職責(zé),在使用表的時(shí)候能更方便地定位和理解;
2)減少重復(fù)開發(fā):規(guī)范數(shù)據(jù)分層,開發(fā)一些通用的中間層數(shù)據(jù),能夠減少極大的重復(fù)計(jì)算;
3)統(tǒng)一數(shù)據(jù)口徑:通過(guò)數(shù)據(jù)分層,提供統(tǒng)一的數(shù)據(jù)出口,統(tǒng)一對(duì)外輸出的數(shù)據(jù)口徑;
4)復(fù)雜問(wèn)題簡(jiǎn)單化:將一個(gè)復(fù)雜的任務(wù)分解成多個(gè)步驟來(lái)完成,每一層解決特定的問(wèn)題。

為了滿足前面提到好處,通常將數(shù)據(jù)模型分為三層:數(shù)據(jù)運(yùn)營(yíng)層( ODS )、數(shù)據(jù)倉(cāng)庫(kù)層(DW)和數(shù)據(jù)應(yīng)用層(APP)。簡(jiǎn)單來(lái)講,我們可以理解為:ODS層存放的是接入的原始數(shù)據(jù),DW層是存放我們要重點(diǎn)設(shè)計(jì)的數(shù)據(jù)倉(cāng)庫(kù)中間層數(shù)據(jù),APP是面向業(yè)務(wù)定制的應(yīng)用數(shù)據(jù)。下面詳細(xì)介紹這三層的設(shè)計(jì)。

數(shù)據(jù)模型的分層

1)源數(shù)據(jù)層(ODS)
此層數(shù)據(jù)無(wú)任何更改,直接沿用外圍系統(tǒng)數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù),不對(duì)外開放;為臨時(shí)存儲(chǔ)層,是接口數(shù)據(jù)的臨時(shí)存儲(chǔ)區(qū)域,為后一步的數(shù)據(jù)處理做準(zhǔn)備。

2)數(shù)據(jù)倉(cāng)庫(kù)層(DW)
也稱為細(xì)節(jié)層,DW 層的數(shù)據(jù)應(yīng)該是一致的、準(zhǔn)確的、干凈的數(shù)據(jù),即對(duì)源系統(tǒng)數(shù)據(jù)進(jìn)行了清洗(去除了雜質(zhì))后的數(shù)據(jù)。

此層可以細(xì)分為三層:
明細(xì)層DWD(Data Warehouse Detail):存儲(chǔ)明細(xì)數(shù)據(jù),此數(shù)據(jù)是最細(xì)粒度的事實(shí)數(shù)據(jù)。該層一般保持和ODS層一樣的數(shù)據(jù)粒度,并且提供一定的數(shù)據(jù)質(zhì)量保證。同時(shí),為了提高數(shù)據(jù)明細(xì)層的易用性,該層會(huì)采用一些維度退化手法,將維度退化至事實(shí)表中,減少事實(shí)表和維表的關(guān)聯(lián)。

中間層DWM(Data WareHouse Middle):存儲(chǔ)中間數(shù)據(jù),為數(shù)據(jù)統(tǒng)計(jì)需要?jiǎng)?chuàng)建的中間表數(shù)據(jù),此數(shù)據(jù)一般是對(duì)多個(gè)維度的聚合數(shù)據(jù),此層數(shù)據(jù)通常來(lái)源于DWD層的數(shù)據(jù)。

業(yè)務(wù)層DWS(Data WareHouse Service):存儲(chǔ)寬表數(shù)據(jù),此層數(shù)據(jù)是針對(duì)某個(gè)業(yè)務(wù)領(lǐng)域的聚合數(shù)據(jù),業(yè)務(wù)層的數(shù)據(jù)通常來(lái)源與此層,為什么叫寬表,主要是為了業(yè)務(wù)層的需要在這一層將業(yè)務(wù)相關(guān)的所有數(shù)據(jù)統(tǒng)一匯集起來(lái)進(jìn)行存儲(chǔ),方便業(yè)務(wù)層獲取。此層數(shù)據(jù)通常來(lái)源與DWD和DWM層的數(shù)據(jù)。

在實(shí)際計(jì)算中,如果直接從DWD或者ODS計(jì)算出寬表的統(tǒng)計(jì)指標(biāo),會(huì)存在計(jì)算量太大并且維度太少的問(wèn)題,因此一般的做法是,在DWM層先計(jì)算出多個(gè)小的中間表,然后再拼接成一張DWS的寬表。由于寬和窄的界限不易界定,也可以去掉DWM這一層,只留DWS層,將所有的數(shù)據(jù)在放在DWS亦可。

3)數(shù)據(jù)應(yīng)用層(DA 或 APP)
前端應(yīng)用直接讀取的數(shù)據(jù)源;根據(jù)報(bào)表、專題分析的需求而計(jì)算生成的數(shù)據(jù)。

4)維表層(Dimension)
最后補(bǔ)充一個(gè)維表層,維表層主要包含兩部分?jǐn)?shù)據(jù):
A)高基數(shù)維度數(shù)據(jù):一般是用戶資料表、商品資料表類似的資料表。數(shù)據(jù)量可能是千萬(wàn)級(jí)或者上億級(jí)別。
B)低基數(shù)維度數(shù)據(jù):一般是配置表,比如枚舉值對(duì)應(yīng)的中文含義,或者日期維表。數(shù)據(jù)量可能是個(gè)位數(shù)或者幾千幾萬(wàn)。

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

(3)問(wèn)題擴(kuò)展
數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)架構(gòu)

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

上圖系統(tǒng)各部分的執(zhí)行流程是:
1)確定分析所依賴的源數(shù)據(jù)。
2)通過(guò)ETL將源數(shù)據(jù)采集到數(shù)據(jù)倉(cāng)庫(kù)。
3)數(shù)據(jù)按照數(shù)據(jù)倉(cāng)庫(kù)提供的主題結(jié)構(gòu)進(jìn)行存儲(chǔ)。
4)根據(jù)各部門的業(yè)務(wù)分析要求創(chuàng)建數(shù)據(jù)集市(數(shù)據(jù)倉(cāng)庫(kù)的子集)。
5)決策分析、報(bào)表等應(yīng)用系統(tǒng)從數(shù)據(jù)倉(cāng)庫(kù)查詢數(shù)據(jù)、分析數(shù)據(jù)。
6)用戶通過(guò)應(yīng)用系統(tǒng)查詢分析結(jié)果、報(bào)表。

(4)結(jié)合項(xiàng)目中使用

電商網(wǎng)站的數(shù)據(jù)體系設(shè)計(jì)
這里針對(duì)用戶訪問(wèn)日志這一部分?jǐn)?shù)據(jù)進(jìn)行舉例說(shuō)明:
在ODS層中,由于各端的開發(fā)團(tuán)隊(duì)不同或者各種其它問(wèn)題,用戶的訪問(wèn)日志被分成了好幾張表上報(bào)到了我們的ODS層。
為了方便大家的使用,我們?cè)贒WD層做了一張用戶訪問(wèn)行為天表,在這里,我們將PC網(wǎng)頁(yè)、H5、小程序和原生APP訪問(wèn)日志匯聚到一張表里面,統(tǒng)一字段名,提升數(shù)據(jù)質(zhì)量,這樣就有了一張可供大家方便使用的明細(xì)表了。
在DWM層,我們會(huì)從DWD層中選取業(yè)務(wù)關(guān)注的核心維度來(lái)做聚合操作,比如只保留人、商品、設(shè)備和頁(yè)面區(qū)域維度。類似的,我們這樣做很多個(gè)DWM的中間表。
然后在DWS層,我們將一個(gè)人在整個(gè)網(wǎng)站中的行為數(shù)據(jù)放到一張表中,這就是我們的寬表了,有了這張表,就可以快速滿足大部分的通用型業(yè)務(wù)需求了。
最后,在APP應(yīng)用層,根據(jù)需求從DWS層的一張或者多張表取出數(shù)據(jù)拼接成一張應(yīng)用表即可。

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






猜你喜歡:

Spark處理數(shù)據(jù)的速度比Hive更快?原因是什么?

怎樣安裝Hive?本地和遠(yuǎn)程操作安裝區(qū)別在哪里

Redis、傳統(tǒng)數(shù)據(jù)庫(kù)、HBase以及Hive的區(qū)別

傳智教育python+大數(shù)據(jù)培訓(xùn)

0 分享到:
和我們?cè)诰€交談!