一、數(shù)據(jù)倉庫體系架構(gòu)
公司借助的第三方數(shù)據(jù)平臺,在此平臺之上建設(shè)數(shù)據(jù)倉庫。因?yàn)榈谌狡脚_集成了很多東西,所以省去了不少功夫。
數(shù)據(jù)倉庫的體系架構(gòu),無外乎就是數(shù)據(jù)源、數(shù)據(jù)采集方式、計(jì)算存儲系統(tǒng)、數(shù)據(jù)應(yīng)用層,這幾個(gè)方面。
1、數(shù)據(jù)源:
內(nèi)部數(shù)據(jù):如交易數(shù)據(jù)、會員數(shù)據(jù),日志數(shù)據(jù),由公司業(yè)務(wù)系統(tǒng)產(chǎn)生的數(shù)據(jù)。
外部數(shù)據(jù):互聯(lián)網(wǎng)數(shù)據(jù)和第三方服務(wù)商數(shù)據(jù)等。互聯(lián)網(wǎng)數(shù)據(jù)就是我們使用爬蟲爬取的互聯(lián)網(wǎng)數(shù)據(jù),而第三方數(shù)據(jù),一般多指公司合作方產(chǎn)生的數(shù)據(jù)。
2、采集方式
離線采集,包括全量同步和增量同步。實(shí)時(shí)采集,顧名思義就是采用實(shí)時(shí)的策略采集數(shù)據(jù),如我們想統(tǒng)計(jì)實(shí)時(shí)的交易數(shù)據(jù)。當(dāng)產(chǎn)生一筆訂單存入業(yè)務(wù)庫時(shí),我們可以通過Binlog等多種方式感知數(shù)據(jù)的變化,把新產(chǎn)生的數(shù)據(jù)同步的kafka其他消息隊(duì)列,實(shí)時(shí)的消費(fèi)使用數(shù)據(jù)。
第三方采集,跟公司商務(wù)合作的其他公司,他們暴露接口給我們,我們通過接口取數(shù)據(jù),當(dāng)然這只是其中一種方式,不同公司取數(shù)據(jù)的策略是不一樣的。
數(shù)據(jù)倉庫的體系架構(gòu)圖
3、存儲計(jì)算
通過集群的分布式計(jì)算能力和分布式文件系統(tǒng),來計(jì)算和存儲數(shù)據(jù)。我們使用的阿里云服務(wù),把業(yè)務(wù)數(shù)據(jù)存儲到hive中,然后劃分為不同的層級,來規(guī)劃整合數(shù)據(jù)。借助分布式文件系統(tǒng)可以存儲大數(shù)據(jù)量的數(shù)據(jù),包括久遠(yuǎn)之前的歷史數(shù)據(jù)。
4、數(shù)據(jù)應(yīng)用
使用HQL、Mapreduce、SparkSql、UDF函數(shù)等多種處理方式,對各種業(yè)務(wù)數(shù)據(jù)進(jìn)行處理,形成一定規(guī)范模式的數(shù)據(jù)。把這些建模成型的數(shù)據(jù)提供給外界使用。如BI應(yīng)用、挖掘分析、算法模型、可視化大屏系統(tǒng)。
當(dāng)然最重要的是對數(shù)據(jù)的管理,數(shù)據(jù)就是我們的資產(chǎn),只有管理的有條不紊,使用起來才能得手應(yīng)心。我們可以建立數(shù)據(jù)地圖、數(shù)據(jù)規(guī)范、數(shù)據(jù)質(zhì)量系統(tǒng),配置完整的任務(wù)調(diào)度(如Oozie)。
當(dāng)然運(yùn)維方面是必不可少的,如果一個(gè)任務(wù)失敗了,我們需要第一時(shí)間知道,這時(shí)就需要告警系統(tǒng)。另外還可以設(shè)置角色權(quán)限,整個(gè)系統(tǒng)有一個(gè)最高權(quán)限,還有開發(fā)權(quán)限,訪問權(quán)限等等,這個(gè)需要根據(jù)公司需求來做。
二、數(shù)據(jù)倉庫分層
數(shù)據(jù)倉庫分層
1、數(shù)據(jù)倉庫分層模式作用
1.1、數(shù)據(jù)結(jié)構(gòu)化更清晰:對于不同層級的數(shù)據(jù),他們作用域不相同,每一個(gè)數(shù)據(jù)分層都有它的作用域,這樣我們在使用表的時(shí)候能更方便地定位和理解。
1.2、數(shù)據(jù)血緣追蹤:提供給外界使用的是一張業(yè)務(wù)表,但是這張業(yè)務(wù)表可能來源很多張表。如果有一張來源表出問題了,我們可以快速準(zhǔn)確的定位到問題,并清楚每張表的作用范圍。
1.3、減少重復(fù)開發(fā):數(shù)據(jù)分層規(guī)范化,開發(fā)一些通用的中間層數(shù)據(jù),能夠減少重復(fù)計(jì)算,提高單張業(yè)務(wù)表的使用率。
1.4、簡化復(fù)雜的問題:把一個(gè)復(fù)雜的業(yè)務(wù)分成多個(gè)步驟實(shí)現(xiàn),每一層只處理單一的步驟,比較簡單和容易理解。而且便于維護(hù)數(shù)據(jù)的準(zhǔn)確性,當(dāng)數(shù)據(jù)出現(xiàn)問題之后,可以不用修復(fù)所有的數(shù)據(jù),只需要從有問題的步驟開始修復(fù)。有點(diǎn)類似Spark RDD的容錯(cuò)機(jī)制。
1.5、減少業(yè)務(wù)的影響:業(yè)務(wù)可能會經(jīng)常變化,這樣做就不必改一次業(yè)務(wù)就需要重新接入數(shù)據(jù)。
2、數(shù)據(jù)倉庫分層介紹
2.1、ODS原始數(shù)據(jù)層
ODS層保存所有操作數(shù)據(jù),不對原始數(shù)據(jù)做任何處理。在業(yè)務(wù)系統(tǒng)和數(shù)據(jù)倉庫之間形成一個(gè)隔離,源系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的變化不影響其他數(shù)據(jù)分層。減輕業(yè)務(wù)系統(tǒng)被反復(fù)抽取的壓力,由ODS統(tǒng)一進(jìn)行抽取和分發(fā)。記住ODS層數(shù)據(jù)要保留數(shù)據(jù)的原始性。
處理原則:
根據(jù)源業(yè)務(wù)系統(tǒng)表的情況以增量或全量方式抽取數(shù)據(jù);
ODS層以流水表和快照表為主,按日期對數(shù)據(jù)進(jìn)行分區(qū)保存,不使用拉鏈表;
ODS層的數(shù)據(jù)不做清洗和轉(zhuǎn)換,數(shù)據(jù)的表結(jié)構(gòu)和數(shù)據(jù)粒度與原業(yè)務(wù)系統(tǒng)保持一致。
2.2、DWD數(shù)據(jù)明細(xì)層
DWD層的數(shù)據(jù)是經(jīng)由ODS層數(shù)據(jù)經(jīng)過清洗、轉(zhuǎn)換后的明細(xì)數(shù)據(jù),滿足對標(biāo)準(zhǔn)化數(shù)據(jù)需求。如對NULL值處理,對數(shù)據(jù)字典解析,對日期格式轉(zhuǎn)換,字段合并、臟數(shù)據(jù)處理等。
處理原則:
數(shù)據(jù)結(jié)構(gòu)與ODS層一致,但可以對表結(jié)構(gòu)進(jìn)行裁剪和匯總等操作;
對數(shù)據(jù)做清洗、轉(zhuǎn)換;
DWD層的數(shù)據(jù)不一定要永久保存,具體保存周期視業(yè)務(wù)情況而定;
2.3、DWS數(shù)據(jù)匯總層
DWS層數(shù)據(jù) 按主題對數(shù)據(jù)進(jìn)行抽象、歸類,提供業(yè)務(wù)系統(tǒng)細(xì)節(jié)數(shù)據(jù)的長期沉淀。這一層是一些匯總后的寬表,是根據(jù)DWD層數(shù)據(jù)按照各種維度或多種維度組合,把需要查詢的一些事實(shí)字段進(jìn)行匯總統(tǒng)計(jì)。可以滿足一些特定查詢、數(shù)據(jù)挖掘應(yīng)用,面向業(yè)務(wù)層面,根據(jù)需求進(jìn)行匯總。
處理原則:
面向全局、數(shù)據(jù)整合;
存放最全的歷史數(shù)據(jù),業(yè)務(wù)發(fā)生變化時(shí)易于擴(kuò)展,適應(yīng)復(fù)雜的實(shí)際業(yè)務(wù)情況;
盡量減少數(shù)據(jù)訪問時(shí)的計(jì)算量,優(yōu)化表的關(guān)聯(lián)。維度建模,星形模型;
事實(shí)拉寬,度量預(yù)先計(jì)算, 基本都是快照表。反規(guī)范化,有數(shù)據(jù)冗余。
2.4、AWS數(shù)據(jù)明細(xì)層
ADS應(yīng)用層是根據(jù)業(yè)務(wù)需要,由DWD、DWS數(shù)據(jù)統(tǒng)計(jì)而出的結(jié)果,可以直接提供查詢展現(xiàn),或?qū)胫罯racle等關(guān)系型數(shù)據(jù)庫中使用。這一層的數(shù)據(jù)會面向特定的業(yè)務(wù)部門,不同的業(yè)務(wù)部門使用不同的數(shù)據(jù),支持?jǐn)?shù)據(jù)挖掘。
處理原則:
形式各式,主要按不同的業(yè)務(wù)需求來處理;
保持?jǐn)?shù)據(jù)量小,定時(shí)刷新數(shù)據(jù);
數(shù)據(jù)同步到不同的關(guān)系型數(shù)據(jù)庫或hbase等其他數(shù)據(jù)庫中。
提供最終數(shù)據(jù),來滿足業(yè)務(wù)人員、數(shù)據(jù)分析人員的數(shù)據(jù)需求。






