帶你輕松理解數倉為啥分層?
本文介紹了數倉的分層結構和分層的原因。通過分層,可以使數據處理更加規(guī)范、高效,提供可靠的數據支持。讓我們一起學習一下~
一、數倉一般分哪些層?
操作數據層:ODS(Operational Data Store)
把操作系統(tǒng)數據幾乎無處理地存放在數據倉庫系統(tǒng)中。
事實明細層:DWD(Data Warehouse Detail)
DWD 層是在ODS層基礎上,根據業(yè)務過程建模出來的事實明細層。
公共匯總層:DWS(Data Warehouse Summary)
一般根據維表數據和明細事實數據加工生成,作為通用的數據模型使用。
應用數據層:ADS(Application Data Store)
存放數據產品個性化的統(tǒng)計指標,根據明細層、匯總層及維表數據加工生成。
關于啥是數倉分層這里就不多介紹了。
首先我們先了解數倉分層現狀:
各大企業(yè)數倉都是咋分的?有啥區(qū)別?
經過整理各大企業(yè)的數倉分層情況,經過對比可以發(fā)現:
不同點:
- 命名有些不同,有的叫“a”,有的叫“A”。所以當我們遇到看不懂聽不懂的命名時,就可以輕松識破啦。
- 分層數不同,有些4層,有些5層,每層對數據處理有些許差異,比如在貼源層會進行3NF建模,猜測是接入業(yè)務系統(tǒng)太多,有些系統(tǒng)的表設計不符合規(guī)范,難以理解,在這層進行統(tǒng)一梳理。
相同點:
都包括貼源層、明細層、匯總層、應用層。都遵循維度建模理論,數據處理的流程本質上一樣的,先拆分梳理再聚合匯總。
3NF建??蓞⒖忌掀恼碌拿枋觯?a href="http://www.aharts.cn/data-analysis/5885754.html">http://www.aharts.cn/data-analysis/5885754.html
二、數倉為什么分層?
回答這個問題前,我們可以先思考如果不分層會怎么樣?不分那么多層會怎么樣?
1. 如果不分層會怎么樣?
假設我們把數倉里的表都拍平,沒有分層概念,業(yè)務源數據經過簡單的數據清洗,加載到數據倉庫中,直接應用于數據分析。
好處:數倉與業(yè)務系統(tǒng)隔離,數據分析不會直接影響到業(yè)務系統(tǒng)。
壞處:
- 分析難:集成系統(tǒng)的開發(fā)規(guī)則,規(guī)范程度、統(tǒng)計口徑都不一致。你還要去做數據關系映射,了解原業(yè)務系統(tǒng)的數據邏輯。無法對數理邏輯進行沉淀,每次分析都要重頭準備數據。
- 分析慢:由于業(yè)務系統(tǒng)是遵循范式建模的,發(fā)現關聯(lián)了一堆表才能完成分析需求,分析效率極低。
2. 不分那么多層會怎么樣?
看情況,當數據少,分析需求少,可以不去分dw層,ods直接加工到ads層,我們剛開始就是這樣干的。
發(fā)現好像也不是不行啊,數據直接加工到ads層,上層應用查詢效率也夠用哈。
此時的好處:省事,成本很低,效率很高,數據出錯改的也很快。
此時的壞處:
- 沒有公共邏輯沉淀,口徑不統(tǒng)一,維度不統(tǒng)一,單個需求處理起來依然很麻煩。
- 會造成重復開發(fā),當有口徑變動時,需要改動多處。
- 無法滿足更多的分析需求,拓展性極差,隨時面臨重構的風險。
由此我們可以推演出為啥要進行數倉分層?
- 隔離原始數據:將業(yè)務數據與統(tǒng)計分析數據解耦,屏蔽相互之間的影響。
- 清晰數據職能(把數據條理化):讓每個數據層都有自己的作用和職責,將一個復雜的任務拆解成多個步驟來分步驟完成,每個層只解決特定的問題,在使用和維護的時候能夠更方便和理解。(ODS層與業(yè)務數據保持一致即可,方便溯源數據問題,不影響業(yè)務數據庫;DWD基于業(yè)務過程拆分數據,清洗數據,適當冗余維度;DWS層為了減少重復開發(fā),沉淀可復用型指標;ADS面向應用提供數據)
- 提高數據獲取的效率:將海量數據的復雜關聯(lián)查詢結果提前計算好,提高計算效率。
- 減少重復開發(fā):規(guī)范數據分層,開發(fā)通用的中間層,可以極大地減少重復計算的工作。
既然有好處,那肯定也會有壞處,魚和熊掌不可兼得!
- 它需要更多的人力成本和時間成本來設計和實現。
- 它對模型的維護提出了更高的要求。比如層級越多,溯源就越麻煩。
- 數據的重復存儲,數據需要在各個層級進行計算存儲。
?三、我們怎么去更好的理解數倉分層?
以賣早餐為例:
如果你在一個小巷子里,客戶就是周邊的鄰居,你從選購食材,清洗食材,烹飪食材,然后擺出各種類型的早餐去售賣。
數據產品經理在這個過程中,就扮演著廚師的角色,如果我么要做一個韭菜盒子,就需要去了解哪些食材是我們需要的,“韭菜+粉絲+豆腐+面粉”對吧,韭菜別買成芹菜了,豆腐要買老豆腐,韭菜買回來得洗一下,粉絲得先泡一泡,豆腐要切成豆腐碎,還得和面。準備工作完成,就開始剁菜餡,切得碎碎,然后在包起來,下鍋炸,最后擺盤售賣。
按部就班的將原材料加工成客戶需求的產品。
【拓展思考】
分層也是一種分工協(xié)作,把一件復雜的事情模塊化,簡單化,提高可管理性,可維護性。
還是以賣早餐為例:
如果你是在陸家嘴地鐵口售賣早餐,那么你最多就是賣包子,賣豆?jié){,其他環(huán)節(jié)可能都交給中央廚房去統(tǒng)一處理了。你只需要賣好包子就行。
本文由 @清小墨 原創(chuàng)發(fā)布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發(fā)揮!