數(shù)據(jù)分層初理解

數(shù)據(jù)分層的目的在于讓數(shù)據(jù)有序的流轉(zhuǎn),在數(shù)據(jù)的整個生命周期中更清晰的被感知到(血緣追蹤?目前還不是太理解)。

關(guān)于數(shù)據(jù)分層,重點應(yīng)該是在于功能、數(shù)據(jù)流,而不是形式,例如一定要分幾層,一定要叫什么名字。

從功能上,要專注于每一層的功能,每一層的功能都應(yīng)該是獨立的,上一層的工作應(yīng)當會順理成章的為下一層的工作的前置。


功能.png

在數(shù)據(jù)流上來看,數(shù)據(jù)在數(shù)倉中的流動應(yīng)當是單向的,從上游到下游,在單層中的數(shù)據(jù),也應(yīng)當是單向的,既數(shù)據(jù)間的依賴關(guān)系可以理解為一個有向無環(huán)圖,如下圖

數(shù)據(jù)流

應(yīng)當盡量避免如虛線所示的B+E=>F,更應(yīng)當杜絕出現(xiàn)橙色實線的樣式。

單向的功能和數(shù)據(jù)流可以顯而易見的有助于進行數(shù)據(jù)追溯。

數(shù)據(jù)分層所用的到技術(shù)即數(shù)倉的選型要從數(shù)倉與數(shù)據(jù)庫的區(qū)別來看:

  1.數(shù)據(jù)庫的多是OLTP型的數(shù)據(jù)庫,如Mysql、Oracle等,一般用來服務(wù)業(yè)務(wù)系統(tǒng),重點在于吞吐量、響應(yīng)速度。

  2.數(shù)倉,在選型上不一定就是hadoop生態(tài)的,使用Oracle、Mysql等也是可以用來做數(shù)倉,數(shù)倉的重點在于歷史數(shù)據(jù)的存儲、分析。

此處對數(shù)倉和數(shù)據(jù)庫的區(qū)別不做過多的分析,等自己理解更深了再來寫。不過雖然數(shù)倉在選型上不一定是hadoop生態(tài),但是數(shù)據(jù)庫基本上不會用hive。


ods層:

功能上來看,第一層是起到作用是數(shù)據(jù)匯集,數(shù)據(jù)流上來看,這一層是所有數(shù)據(jù)的入口。同時,這一層也可以將數(shù)據(jù)倉庫和源端進行隔離。

數(shù)據(jù)匯集的概念很好理解,將多個業(yè)務(wù)庫的數(shù)據(jù)匯集到一起,源端可能是Oracle、mysql這種結(jié)構(gòu)化數(shù)據(jù)庫,也可能是mongodb等半結(jié)構(gòu)化的數(shù)據(jù)庫,可能是交易數(shù)據(jù)、埋點也有可能是各種日志,可能是自建的數(shù)據(jù)庫,也可能是在云上,在匯集的時候需要對不同的源端做不同處理,例如工具的選用、抽取的方式是全量還是增量都需要經(jīng)過衡量。

從ODS向后,就是數(shù)據(jù)倉庫了,這就是形式上的隔離。而有的數(shù)據(jù)倉庫因為權(quán)限的問題,需要在源端與數(shù)倉之間加一個中間層,也可以看作是一種隔離。隔離還有著管理、技術(shù)、運維等方面的意義,待以后想清楚了再寫。

DW層:

DW一般又分為DWD、DWS和DWM層。

DWD層:該層的主要功能是對ODS層的數(shù)據(jù)的補充,例如增加注釋,將維度表退化到事實表中,這樣做的好處是數(shù)據(jù)在進行使用的過程中減少了表之間的關(guān)聯(lián)。

DWS(DWM):從功能上來說因為DWS和DWM層的功能很類似,例如指標的計算的中間表,按照業(yè)務(wù)劃分形成客戶、產(chǎn)品等不同的主題域,本質(zhì)上都是對上一層的數(shù)據(jù)進行聚合,所以二者之間的區(qū)別并不明顯。一般來講,該層的表的數(shù)量會比之前少,但是表的字段會增加,具體如下圖所示:


數(shù)據(jù)建模.png

APP層:

本層的數(shù)據(jù)對外提供應(yīng)用,如果是提供業(yè)務(wù)使用,放在關(guān)系型數(shù)據(jù)庫會比較好,也有可能是用來做數(shù)據(jù)分析、挖掘,例如報表的產(chǎn)出等,這種情況下還是在hive中比較合適。這一層的難點在于如何提供符合要求的數(shù)據(jù)。
以上的分層往往都是針對業(yè)務(wù)數(shù)據(jù)而言,但是對數(shù)據(jù)倉庫還有一類不得不提的數(shù)據(jù):維度表。這類數(shù)據(jù)的作用在DWD層會對事實表做退化,做完維度退化以后,這類數(shù)據(jù)的功能性便會大大降低,但是一個數(shù)據(jù)倉庫不應(yīng)該只是存儲了一堆數(shù)據(jù),還應(yīng)該有相應(yīng)的規(guī)范,例如流程、運維等,這類數(shù)據(jù)是否需要一個單獨的分層來作為一個輸出的規(guī)范呢。。。。我目前感覺是有那么點必要性的。

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

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

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