小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

最全面的數(shù)倉(cāng)分層剖析

 yxrsky 2022-08-26 發(fā)布于重慶

導(dǎo)讀:數(shù)倉(cāng)在建設(shè)過(guò)程中,對(duì)數(shù)據(jù)的組織管理上,不僅要根據(jù)業(yè)務(wù)進(jìn)行縱向的主題域劃分,還需要橫向的數(shù)倉(cāng)分層規(guī)范。本文作者圍繞企業(yè)數(shù)倉(cāng)分層展開(kāi)分析,希望對(duì)你有幫助。

從事數(shù)倉(cāng)相關(guān)工作的人員都知道數(shù)倉(cāng)模型設(shè)計(jì)的首要工作之一就是進(jìn)行模型分層,可見(jiàn)模型分層在模型設(shè)計(jì)過(guò)程中的重要性,確實(shí)優(yōu)秀的分層設(shè)計(jì)是一個(gè)數(shù)倉(cāng)項(xiàng)目能否建設(shè)成功的核心要素,讓數(shù)據(jù)易理解和高復(fù)用是分層的核心目標(biāo)。

早期作者在考慮對(duì)公司數(shù)倉(cāng)制定分層規(guī)范時(shí),也是查了很多資料,網(wǎng)上資料也是較為全面,有使用阿里大數(shù)據(jù)分層方案,也有分三層、或者四五層的都有,這么多分層思路,讓作者一陣腦瓜疼。所以作者希望整理一篇文章,對(duì)數(shù)倉(cāng)分層進(jìn)行一個(gè)較為全面的剖析,講下自己對(duì)分層的見(jiàn)解和想法,和大家交流。

本文將對(duì)數(shù)據(jù)倉(cāng)庫(kù)分層方法進(jìn)行全方位的闡述和整理,具體包含如下內(nèi)容:

介紹為什么分層,分層的作用,核心思想提出一種通用的數(shù)據(jù)分層設(shè)計(jì),以及分層設(shè)計(jì)的原則一些不同的分層思路,各個(gè)大廠分層及思路講述講述可落地的實(shí)踐意見(jiàn)

一、數(shù)倉(cāng)分層意義,也可以說(shuō)數(shù)倉(cāng)為什么分層?

通過(guò)數(shù)據(jù)分層管理可以簡(jiǎn)化數(shù)據(jù)清洗的過(guò)程,因?yàn)榘言瓉?lái)一步的工作分到了多個(gè)步驟去完成,每一層的處理邏輯都相對(duì)簡(jiǎn)單和容易理解,從而達(dá)到解耦的目的,這樣我們比較容易保證每一個(gè)步驟的正確性,當(dāng)數(shù)據(jù)發(fā)生錯(cuò)誤的時(shí)候,方便問(wèn)題排查和追溯定位。

分層的核心思想就是解耦,再解耦,把復(fù)雜的問(wèn)題簡(jiǎn)單化,這直接影響了數(shù)據(jù)架構(gòu)到底分幾層。

這里再講下數(shù)據(jù)分層的好處:

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

二、一種通用的分層架構(gòu)

這里介紹一種較為常見(jiàn),也是適用性較廣的四層分層架構(gòu),至于出處的話,我感覺(jué)應(yīng)該是阿里吧,感興趣的同學(xué)可以看下《大數(shù)據(jù)之路:阿里巴巴大數(shù)據(jù)實(shí)踐》這本書(shū)中有介紹,公眾號(hào)回復(fù)“大數(shù)據(jù)圖書(shū)”可以獲取電子版。

數(shù)據(jù)公共層CDM(Common Data Model)或者 企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)EDW (Enterprise Data Warehouse)主要用于存放明細(xì)事實(shí)數(shù)據(jù)、維表數(shù)據(jù)及公共指標(biāo)匯總數(shù)據(jù),其中明細(xì)事實(shí)數(shù)據(jù)、維表數(shù)據(jù)一般根據(jù)ODS層數(shù)據(jù)加工生成;公共指標(biāo)匯總數(shù)據(jù)一般根據(jù)維表數(shù)據(jù)和明細(xì)事實(shí)數(shù)據(jù)加工生成。本層采用維度模型作為建模方法的理論基礎(chǔ),更多的是通過(guò)采用一些維度退化手段,將維度退化至事實(shí)表中,減少維表和事實(shí)表的關(guān)聯(lián),提高數(shù)據(jù)易用性。

三、一些不同的分層思路(大廠數(shù)倉(cāng)分層案例)

1. 愛(ài)奇藝數(shù)倉(cāng)分層架構(gòu)

從上圖可以看到,可以跟看到其實(shí)愛(ài)奇藝數(shù)倉(cāng)分層和通用的分層架構(gòu)差別不太大,也是包含原始數(shù)據(jù)層、明細(xì)層,匯總層、應(yīng)用層以及統(tǒng)一的維度層,下面主要介紹一些不同的地方。

愛(ài)奇藝的架構(gòu)中,最底層是統(tǒng)一數(shù)倉(cāng),其實(shí)是將原始數(shù)據(jù)層、統(tǒng)一明細(xì)數(shù)據(jù)層和統(tǒng)一聚合數(shù)據(jù)層進(jìn)行了整合。明細(xì)層負(fù)責(zé)對(duì)接下層所有的原始數(shù)據(jù),百分之百還原所有業(yè)務(wù)域和業(yè)務(wù)過(guò)程的數(shù)據(jù),同時(shí)屏蔽底層原始數(shù)據(jù)變動(dòng)對(duì)上層造成的影響,是整個(gè)愛(ài)奇藝數(shù)倉(cāng)的底層基礎(chǔ)。

最底層是統(tǒng)一數(shù)倉(cāng),主要分為統(tǒng)一明細(xì)數(shù)據(jù)層和統(tǒng)一聚合數(shù)據(jù)層。明細(xì)層負(fù)責(zé)對(duì)接下層所有的原始數(shù)據(jù),百分之百還原所有業(yè)務(wù)域和業(yè)務(wù)過(guò)程的數(shù)據(jù),同時(shí)屏蔽底層原始數(shù)據(jù)變動(dòng)對(duì)上層造成的影響,是整個(gè)數(shù)倉(cāng) 2.0 的底層基礎(chǔ)。

通過(guò)明細(xì)層完成業(yè)務(wù)關(guān)系到數(shù)據(jù)關(guān)系邏輯轉(zhuǎn)換,并補(bǔ)充相關(guān)的維度,保存最細(xì)粒度數(shù)據(jù),進(jìn)行復(fù)雜業(yè)務(wù)邏輯分離、數(shù)據(jù)清洗、統(tǒng)一規(guī)范化數(shù)據(jù)格式等 ETL 過(guò)程。

聚合層負(fù)責(zé)對(duì)通用的指標(biāo)進(jìn)行沉淀,向上提供統(tǒng)一口徑的計(jì)算指標(biāo),同時(shí)避免重復(fù)計(jì)算。除此之外,還會(huì)提供基于 OneID 體系的統(tǒng)一累計(jì)設(shè)備庫(kù)和新增設(shè)備庫(kù)供上層使用。

業(yè)務(wù)集市主要以業(yè)務(wù)訴求為主,建設(shè)滿足業(yè)務(wù)分析的各種數(shù)據(jù)集合。在業(yè)務(wù)集市建設(shè)過(guò)程中,按照盡可能細(xì)的粒度去劃分業(yè)務(wù)集市,且每個(gè)業(yè)務(wù)集市之間不會(huì)出現(xiàn)數(shù)據(jù)依賴和橫向引用,在應(yīng)用層可以跨集市進(jìn)行匯總計(jì)算對(duì)外提供數(shù)據(jù)服務(wù)。這樣做的好處是,如果出現(xiàn)一些組織架構(gòu)調(diào)整或者工作職責(zé)的變更等情況,每個(gè)業(yè)務(wù)集市無(wú)需調(diào)整,只需在應(yīng)用層做相應(yīng)的修改即可,同時(shí)也避免因?yàn)橛?jì)算任務(wù)代碼混在一起、數(shù)據(jù)權(quán)限拆分等問(wèn)題帶來(lái)的數(shù)據(jù)變更成本。

主題數(shù)倉(cāng)以公司范圍內(nèi)公共的主題域/主題角度,以一致性維度為基礎(chǔ),跨各業(yè)務(wù)做數(shù)據(jù)的整合分析和相關(guān)建設(shè),包括流量數(shù)倉(cāng)、內(nèi)容數(shù)倉(cāng)、用戶數(shù)倉(cāng)等。

應(yīng)用層包括業(yè)務(wù)報(bào)表、內(nèi)容分析、用戶運(yùn)營(yíng)等數(shù)據(jù)應(yīng)用產(chǎn)品,按照具體的場(chǎng)景和需求,從業(yè)務(wù)集市和主題數(shù)倉(cāng)獲取數(shù)據(jù)。

2. SaaS收銀運(yùn)營(yíng)數(shù)倉(cāng)分層架構(gòu)

這里作者的案例是美團(tuán)站點(diǎn)分享的SaaS收銀運(yùn)營(yíng)數(shù)倉(cāng)建設(shè)一文中的架構(gòu),這個(gè)分層架構(gòu)大概是五層,雖然從名稱上看著和通用分層架構(gòu)差異比較大,實(shí)際具體功能上,只是增加了一個(gè)DWT主題寬表層,APP層和通用的ADS層作用基本一致,DWA匯總層其實(shí)和通用的DWS層是類(lèi)似的。

DWT層主題寬表層,其實(shí)是對(duì)DWD各層的信息進(jìn)行join整合,基于主題,將業(yè)務(wù)過(guò)程相關(guān)的數(shù)據(jù)冗余處理,從而方便上層DWS匯總數(shù)據(jù)使用。

3. 美團(tuán)數(shù)倉(cāng)分層架構(gòu)

從上圖中,看起來(lái)美團(tuán)數(shù)倉(cāng)分層架構(gòu)和通用分層架構(gòu)也是差異較大,但是其實(shí)和通用的分層架構(gòu)也是異曲同工,只不過(guò)是將數(shù)據(jù)分的更新,做更多的解耦。

ODS數(shù)據(jù)源層不用多說(shuō),名字都和通用的原始數(shù)據(jù)層一致,下面主要說(shuō)下上面四層:

IDL數(shù)據(jù)集成層,整合多數(shù)據(jù)源的一致性建模,完成數(shù)據(jù)維度,事實(shí)組合。這一層要注重特殊的兩個(gè)概念,一是寬表,二是聚合表。寬表與 kimball 的 fact table 不一樣,我們通常所說(shuō)的fact table,實(shí)際上僅僅是明細(xì)表的統(tǒng)稱,而寬表,則是把相關(guān)的事實(shí)表,都整合到一起,這樣的好處,一是加快速度,二是一次查詢更加全面。這塊你看和《SaaS收銀運(yùn)營(yíng)數(shù)倉(cāng)建設(shè)》案例中的DWT又是何其相識(shí)。

CDL數(shù)據(jù)組件層,用來(lái)完成聚合匯總,進(jìn)一步按照粒度劃分,完成年月日級(jí)的聚合。至此,一個(gè)中央數(shù)據(jù)倉(cāng)庫(kù)就完成了。

MDL數(shù)據(jù)集市層,按照業(yè)務(wù)單元,做數(shù)據(jù)集市。比如營(yíng)運(yùn),銷(xiāo)售。這樣提供給數(shù)據(jù)應(yīng)用層,就有了完整的、可復(fù)用的數(shù)據(jù)源。

1M0t81

最終的ADL應(yīng)用層,會(huì)簡(jiǎn)單很多,主要是選型,也就是針對(duì)業(yè)務(wù)數(shù)據(jù)應(yīng)用,會(huì)選擇哪些數(shù)據(jù)庫(kù)技術(shù),分析引擎技術(shù),還有報(bào)表計(jì)算,歸納起來(lái),離不開(kāi)存儲(chǔ),計(jì)算,可視化。

4. 網(wǎng)易嚴(yán)選數(shù)倉(cāng)分層架構(gòu)

這里稍微簡(jiǎn)單說(shuō)下吧,其實(shí)網(wǎng)易嚴(yán)選數(shù)倉(cāng)分層架構(gòu)和通用數(shù)倉(cāng)分層架構(gòu)差別不大,也算是直觀的使用體現(xiàn)吧。

嚴(yán)選數(shù)倉(cāng)分層模型將數(shù)據(jù)分為三層,ods,dw和dm層。其中ods是操作數(shù)據(jù)層,保留最原始的數(shù)據(jù);dw包含dwd和dws層,這兩層共同組成中間層;dm是應(yīng)用層,基于dw層做匯總加工,滿足各產(chǎn)品、分析師和業(yè)務(wù)方的需求。

5. 網(wǎng)易云音樂(lè)數(shù)倉(cāng)分層架構(gòu)

四、分享作者數(shù)倉(cāng)分層架構(gòu)

不多說(shuō),這里不同之處在于增加了stg緩沖層,用于存儲(chǔ)每天的增量數(shù)據(jù)和變更數(shù)據(jù),配合ODS對(duì)數(shù)據(jù)進(jìn)行沉淀,減少了抽取的復(fù)雜性,比如進(jìn)行增量數(shù)據(jù)的合并操作等。

五、個(gè)人對(duì)如何設(shè)計(jì)數(shù)倉(cāng)分層架構(gòu)的想法(數(shù)倉(cāng)到底分幾層)

數(shù)據(jù)倉(cāng)庫(kù)分層沒(méi)有絕對(duì)的規(guī)范,適合的就是最好的,至于分幾層,建議按照目前的業(yè)務(wù)和建設(shè)現(xiàn)狀,進(jìn)行合理解構(gòu)和分層設(shè)計(jì),一般剛開(kāi)始做,建議3、4層。規(guī)劃1-1.5年的架構(gòu),然后不斷的建設(shè)、優(yōu)化、再優(yōu)化。不斷逼近滿足所有需求。

下面針對(duì)一些場(chǎng)景說(shuō)下分層的想法:

場(chǎng)景一:時(shí)間緊任務(wù)重,急于看結(jié)果

這種場(chǎng)景,直接連各個(gè)業(yè)務(wù)數(shù)據(jù)庫(kù),抽取數(shù)據(jù)到大數(shù)據(jù)平臺(tái),根據(jù)需求組合join或者匯總count、sum就行,就不要不分層了,作者現(xiàn)在公司服務(wù)的數(shù)倉(cāng)項(xiàng)目前身就是這樣,將各個(gè)業(yè)務(wù)系統(tǒng)數(shù)據(jù)抽取到oracle,你看都沒(méi)有大數(shù)據(jù)平臺(tái)就做了。

場(chǎng)景二:公司業(yè)務(wù)簡(jiǎn)單,且相對(duì)比較固定,數(shù)據(jù)來(lái)源不多,結(jié)構(gòu)也很清晰,需求也不多

那么還弄啥來(lái),直接使用通用的數(shù)倉(cāng)架構(gòu)就行,ODS起到解耦業(yè)務(wù)數(shù)據(jù)庫(kù)+異構(gòu)數(shù)據(jù)源的問(wèn)題,DWD解決數(shù)據(jù)臟亂差的問(wèn)題,DWS服用的指標(biāo)計(jì)算,ADS直接面向前臺(tái)業(yè)務(wù)需求。

場(chǎng)景三:公司業(yè)務(wù)復(fù)雜,業(yè)務(wù)變化較快

那就多一層DWT層做匯總,多一層解耦,業(yè)務(wù)變化的時(shí)候,我們只改DWS層就好了,最多穿透到DWT層。業(yè)務(wù)變化的時(shí)候調(diào)整一下,工作量也不會(huì)太大,最重要的是能保證底層結(jié)構(gòu)的穩(wěn)定和數(shù)據(jù)分析的可持續(xù)性。

場(chǎng)景四:公司業(yè)務(wù)較為復(fù)雜,集團(tuán)性公司,下轄多個(gè)部門(mén)bu事業(yè)線,bu間業(yè)務(wù)內(nèi)容交叉不大

可以在數(shù)倉(cāng)通用分層架構(gòu)上,增加一層DM層,也就是數(shù)據(jù)集市層,各個(gè)數(shù)據(jù)集市層,單獨(dú)供數(shù),甚至有單獨(dú)的計(jì)算資源,這樣可以避免因?yàn)橛?jì)算任務(wù)代碼混在一起、數(shù)據(jù)權(quán)限拆分等問(wèn)題帶來(lái)的數(shù)據(jù)變更成本。

六、一個(gè)好的數(shù)倉(cāng)模型分層,應(yīng)該具備的要素

一個(gè)好的數(shù)倉(cāng)模型分層,應(yīng)該具備的要素是數(shù)據(jù)模型可復(fù)用,完善且規(guī)范的。

從完善度上來(lái)講,主要衡量DWD層和匯總層兩塊的完善度,DWD層完善度,主要是希望DWD等盡可能被匯總層引用,ODS層被除了DWD層外的盡可能少的引用,最好是沒(méi)有。

從復(fù)用度上來(lái)講,我們希望80%需求由20%的表來(lái)支持。直接點(diǎn)講,就是大部分(80%以上)的需求,都用DWS的表來(lái)支持。

從規(guī)范度上來(lái)講,主要從表名、字段名來(lái)看,一個(gè)規(guī)范的表名應(yīng)該包括層級(jí)、主題域、分區(qū)規(guī)則,抽取類(lèi)型等信息。字段規(guī)范應(yīng)該是和詞根一致,同字段同名等,具體這塊可以看作者寫(xiě)得《數(shù)倉(cāng)命名規(guī)范篇》

七、總結(jié)

數(shù)據(jù)倉(cāng)庫(kù)分層沒(méi)有絕對(duì)的規(guī)范,適合的就是最好的,數(shù)據(jù)倉(cāng)庫(kù)分層的核心邏輯是解耦,在有限時(shí)間、資源等條件下滿足業(yè)務(wù)需求,同時(shí)又要兼顧業(yè)務(wù)的快速變化。所以我們作為數(shù)據(jù)架構(gòu)師,需要兼顧業(yè)務(wù)的復(fù)雜變化,以及開(kāi)發(fā)的復(fù)雜度和可維護(hù)性,在兩者之間做一個(gè)平衡和取舍,選擇合適的分層架構(gòu)。

另外分層架構(gòu)是需要不斷的優(yōu)化調(diào)整的,不能超前太多,也不能脫離業(yè)務(wù)。按照Inmon和Kimball吵了十幾年的經(jīng)驗(yàn)上看,建議架構(gòu)設(shè)計(jì)時(shí),按超越當(dāng)前實(shí)際情況1~1.5年的設(shè)計(jì)是比較合適的。

本文由 @白程序員的自習(xí)室 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理

題圖來(lái)自Pexels,基于CC0協(xié)議。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多