帶你輕松理解數(shù)倉為啥分層?

0 評論 3394 瀏覽 15 收藏 8 分鐘

本文介紹了數(shù)倉的分層結(jié)構(gòu)和分層的原因。通過分層,可以使數(shù)據(jù)處理更加規(guī)范、高效,提供可靠的數(shù)據(jù)支持。讓我們一起學(xué)習(xí)一下~

一、數(shù)倉一般分哪些層?

操作數(shù)據(jù)層:ODS(Operational Data Store)

把操作系統(tǒng)數(shù)據(jù)幾乎無處理地存放在數(shù)據(jù)倉庫系統(tǒng)中。

事實(shí)明細(xì)層:DWD(Data Warehouse Detail)

DWD 層是在ODS層基礎(chǔ)上,根據(jù)業(yè)務(wù)過程建模出來的事實(shí)明細(xì)層。

公共匯總層:DWS(Data Warehouse Summary)

一般根據(jù)維表數(shù)據(jù)和明細(xì)事實(shí)數(shù)據(jù)加工生成,作為通用的數(shù)據(jù)模型使用。

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

存放數(shù)據(jù)產(chǎn)品個(gè)性化的統(tǒng)計(jì)指標(biāo),根據(jù)明細(xì)層、匯總層及維表數(shù)據(jù)加工生成。

關(guān)于啥是數(shù)倉分層這里就不多介紹了。

首先我們先了解數(shù)倉分層現(xiàn)狀:

各大企業(yè)數(shù)倉都是咋分的?有啥區(qū)別?

經(jīng)過整理各大企業(yè)的數(shù)倉分層情況,經(jīng)過對比可以發(fā)現(xiàn):

不同點(diǎn):

  • 命名有些不同,有的叫“a”,有的叫“A”。所以當(dāng)我們遇到看不懂聽不懂的命名時(shí),就可以輕松識破啦。
  • 分層數(shù)不同,有些4層,有些5層,每層對數(shù)據(jù)處理有些許差異,比如在貼源層會進(jìn)行3NF建模,猜測是接入業(yè)務(wù)系統(tǒng)太多,有些系統(tǒng)的表設(shè)計(jì)不符合規(guī)范,難以理解,在這層進(jìn)行統(tǒng)一梳理。

相同點(diǎn):

都包括貼源層、明細(xì)層、匯總層、應(yīng)用層。都遵循維度建模理論,數(shù)據(jù)處理的流程本質(zhì)上一樣的,先拆分梳理再聚合匯。

3NF建模可參考上篇文章的描述:http://www.codemsi.com/data-analysis/5885754.html

二、數(shù)倉為什么分層?

回答這個(gè)問題前,我們可以先思考如果不分層會怎么樣?不分那么多層會怎么樣?

1. 如果不分層會怎么樣?

假設(shè)我們把數(shù)倉里的表都拍平,沒有分層概念,業(yè)務(wù)源數(shù)據(jù)經(jīng)過簡單的數(shù)據(jù)清洗,加載到數(shù)據(jù)倉庫中,直接應(yīng)用于數(shù)據(jù)分析。

好處:數(shù)倉與業(yè)務(wù)系統(tǒng)隔離,數(shù)據(jù)分析不會直接影響到業(yè)務(wù)系統(tǒng)。

壞處:

  • 分析難:集成系統(tǒng)的開發(fā)規(guī)則,規(guī)范程度、統(tǒng)計(jì)口徑都不一致。你還要去做數(shù)據(jù)關(guān)系映射,了解原業(yè)務(wù)系統(tǒng)的數(shù)據(jù)邏輯。無法對數(shù)理邏輯進(jìn)行沉淀,每次分析都要重頭準(zhǔn)備數(shù)據(jù)。
  • 分析慢:由于業(yè)務(wù)系統(tǒng)是遵循范式建模的,發(fā)現(xiàn)關(guān)聯(lián)了一堆表才能完成分析需求,分析效率極低。

2. 不分那么多層會怎么樣?

看情況,當(dāng)數(shù)據(jù)少,分析需求少,可以不去分dw層,ods直接加工到ads層,我們剛開始就是這樣干的。

發(fā)現(xiàn)好像也不是不行啊,數(shù)據(jù)直接加工到ads層,上層應(yīng)用查詢效率也夠用哈。

此時(shí)的好處:省事,成本很低,效率很高,數(shù)據(jù)出錯(cuò)改的也很快。

此時(shí)的壞處:

  • 沒有公共邏輯沉淀,口徑不統(tǒng)一,維度不統(tǒng)一,單個(gè)需求處理起來依然很麻煩。
  • 會造成重復(fù)開發(fā),當(dāng)有口徑變動(dòng)時(shí),需要改動(dòng)多處。
  • 無法滿足更多的分析需求,拓展性極差,隨時(shí)面臨重構(gòu)的風(fēng)險(xiǎn)。

由此我們可以推演出為啥要進(jìn)行數(shù)倉分層?

  • 隔離原始數(shù)據(jù):將業(yè)務(wù)數(shù)據(jù)與統(tǒng)計(jì)分析數(shù)據(jù)解耦,屏蔽相互之間的影響。
  • 清晰數(shù)據(jù)職能(把數(shù)據(jù)條理化):讓每個(gè)數(shù)據(jù)層都有自己的作用和職責(zé),將一個(gè)復(fù)雜的任務(wù)拆解成多個(gè)步驟來分步驟完成,每個(gè)層只解決特定的問題,在使用和維護(hù)的時(shí)候能夠更方便和理解。(ODS層與業(yè)務(wù)數(shù)據(jù)保持一致即可,方便溯源數(shù)據(jù)問題,不影響業(yè)務(wù)數(shù)據(jù)庫;DWD基于業(yè)務(wù)過程拆分?jǐn)?shù)據(jù),清洗數(shù)據(jù),適當(dāng)冗余維度;DWS層為了減少重復(fù)開發(fā),沉淀可復(fù)用型指標(biāo);ADS面向應(yīng)用提供數(shù)據(jù))
  • 提高數(shù)據(jù)獲取的效率:將海量數(shù)據(jù)的復(fù)雜關(guān)聯(lián)查詢結(jié)果提前計(jì)算好,提高計(jì)算效率。
  • 減少重復(fù)開發(fā):規(guī)范數(shù)據(jù)分層,開發(fā)通用的中間層,可以極大地減少重復(fù)計(jì)算的工作。

既然有好處,那肯定也會有壞處,魚和熊掌不可兼得!

  • 它需要更多的人力成本和時(shí)間成本來設(shè)計(jì)和實(shí)現(xiàn)。
  • 它對模型的維護(hù)提出了更高的要求。比如層級越多,溯源就越麻煩。
  • 數(shù)據(jù)的重復(fù)存儲,數(shù)據(jù)需要在各個(gè)層級進(jìn)行計(jì)算存儲。

?三、我們怎么去更好的理解數(shù)倉分層?

以賣早餐為例:

如果你在一個(gè)小巷子里,客戶就是周邊的鄰居,你從選購食材,清洗食材,烹飪食材,然后擺出各種類型的早餐去售賣。

數(shù)據(jù)產(chǎn)品經(jīng)理在這個(gè)過程中,就扮演著廚師的角色,如果我么要做一個(gè)韭菜盒子,就需要去了解哪些食材是我們需要的,“韭菜+粉絲+豆腐+面粉”對吧,韭菜別買成芹菜了,豆腐要買老豆腐,韭菜買回來得洗一下,粉絲得先泡一泡,豆腐要切成豆腐碎,還得和面。準(zhǔn)備工作完成,就開始剁菜餡,切得碎碎,然后在包起來,下鍋炸,最后擺盤售賣。

按部就班的將原材料加工成客戶需求的產(chǎn)品。

【拓展思考】

分層也是一種分工協(xié)作,把一件復(fù)雜的事情模塊化,簡單化,提高可管理性,可維護(hù)性。

還是以賣早餐為例:

如果你是在陸家嘴地鐵口售賣早餐,那么你最多就是賣包子,賣豆?jié){,其他環(huán)節(jié)可能都交給中央廚房去統(tǒng)一處理了。你只需要賣好包子就行。

本文由 @清小墨 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Unsplash,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!