数据中台模型设计系列(一):维度建模初探
1、與幾個(gè)概念的關(guān)系
操作型業(yè)務(wù)系統(tǒng)對(duì)于這個(gè)概念大家都不陌生。企業(yè)業(yè)務(wù)賴以運(yùn)轉(zhuǎn)的交易系統(tǒng)就屬于操作型業(yè)務(wù)系統(tǒng)。因此它是為了保障業(yè)務(wù)正常運(yùn)轉(zhuǎn),能夠更快的處理事務(wù)。
但是因?yàn)樗轻槍?duì)某一特定的意圖(例如滿足交易業(yè)務(wù)),它不需要承諾與其他業(yè)務(wù)系統(tǒng)共享公共數(shù)據(jù)。因此就出現(xiàn)了適合于企業(yè)中交叉應(yīng)用的ERP、主數(shù)據(jù)系統(tǒng)。當(dāng)然對(duì)于有建設(shè)業(yè)務(wù)中臺(tái)的企業(yè)來說,基于微服務(wù)架構(gòu)的各個(gè)服務(wù)中心,能更好的提供可復(fù)用統(tǒng)一的公共數(shù)據(jù)。
不管是面向業(yè)務(wù)的業(yè)務(wù)系統(tǒng)、經(jīng)過數(shù)據(jù)統(tǒng)一后的主數(shù)據(jù)系統(tǒng)或者基于微服務(wù)架構(gòu)的服務(wù)中心的數(shù)據(jù),都是作為數(shù)據(jù)中臺(tái)的數(shù)據(jù)輸入源頭。我們通過批量同步、歸檔日志采集等方式,能將數(shù)據(jù)采集進(jìn)數(shù)據(jù)中臺(tái),作為ODS層原始數(shù)據(jù)的一部分。
ETL英文Extract-Transform-Load的縮寫,用來描述將數(shù)據(jù)從來源端經(jīng)過抽取(extract)、轉(zhuǎn)換(transform)、加載(load)至目的端的過程。在ODS層的原始數(shù)據(jù),需要通過加工處理后,才能進(jìn)入到構(gòu)建好的數(shù)據(jù)模型中。
在模型設(shè)計(jì)時(shí),需要考慮ETL加工流程,根據(jù)邏輯判斷,做模型的合理設(shè)計(jì)。同樣對(duì)于下游使用數(shù)據(jù)模型的ETL元數(shù)據(jù),也是作為模型設(shè)計(jì)的輸入,可基于下游應(yīng)用方式做模型的橫向和縱向的拆分設(shè)計(jì),這就是“元數(shù)據(jù)驅(qū)動(dòng)模型設(shè)計(jì)”的理論來源。
因此,無法理解數(shù)據(jù)開發(fā)的模型設(shè)計(jì)師是不合格的。
數(shù)據(jù)應(yīng)用數(shù)據(jù)中臺(tái)提供多種數(shù)據(jù)應(yīng)用的形式,包括數(shù)據(jù)報(bào)表、智能數(shù)據(jù)產(chǎn)品等。將統(tǒng)一匯總加工后的數(shù)據(jù)或者明細(xì)原子數(shù)據(jù)提供給數(shù)據(jù)應(yīng)用,為業(yè)務(wù)提供數(shù)據(jù)支撐。
更加合理的數(shù)據(jù)模型設(shè)計(jì),能夠給更寬泛的應(yīng)用提供數(shù)據(jù)支撐,也能夠讓業(yè)務(wù)方更準(zhǔn)確無疑義的使用好數(shù)據(jù)。
2、幾種企業(yè)常見的建設(shè)現(xiàn)狀
煙囪式也許大家都不愿意承認(rèn),但是絕大部分的企業(yè)當(dāng)前是沒有統(tǒng)一、標(biāo)準(zhǔn)、公共、全局的模型設(shè)計(jì)的,而僅僅是把數(shù)據(jù)同步上來,然后基于業(yè)務(wù)需求做煙囪式的數(shù)據(jù)開發(fā)。這種方式也許從短期來看是效率最高的,但是從長(zhǎng)期看,不僅僅造成計(jì)算存儲(chǔ)資源的極大浪費(fèi)、沒有統(tǒng)一可用的數(shù)據(jù)、大量的重復(fù)性的工作。企業(yè)的數(shù)據(jù)就像一團(tuán)亂麻,根本無法管理。
三范式+數(shù)據(jù)集市
一些傳統(tǒng)大型企業(yè),由于歷史原因,原子數(shù)倉(cāng)中以三范式的模型設(shè)計(jì)方式構(gòu)建,在各個(gè)應(yīng)用的數(shù)據(jù)集市中以維度建模方式構(gòu)建。通過這種方式,在原子數(shù)據(jù)設(shè)計(jì)過程中,需要投入較大的資源。
對(duì)于業(yè)務(wù)來說,三范式模型太復(fù)雜,用戶難以理解和檢索。并且對(duì)于業(yè)務(wù)頻繁變化的企業(yè),模型的維護(hù)成本極高。
企業(yè)級(jí)維度模型
基于企業(yè)全局的角度去構(gòu)建業(yè)務(wù)總線矩陣,在此基礎(chǔ)上完成維度模型的設(shè)計(jì),是當(dāng)前眾多企業(yè)選擇的方向。從眾多互聯(lián)網(wǎng)企業(yè)的數(shù)據(jù)中臺(tái)實(shí)踐經(jīng)驗(yàn)來看,這也是一個(gè)絕佳的各因素平衡后的選擇。
后面,我們將從各個(gè)角度來思考如何基于維度模型構(gòu)建企業(yè)級(jí)數(shù)據(jù)中臺(tái)。
3、維度建模初探
優(yōu)勢(shì)在數(shù)據(jù)中臺(tái)建設(shè)經(jīng)驗(yàn)中,企業(yè)級(jí)維度模型設(shè)計(jì)從理解性、擴(kuò)展性、高性能上都是更適應(yīng)當(dāng)前的技術(shù)和業(yè)務(wù)環(huán)境的。
首先由于計(jì)算和存儲(chǔ)成本逐步下降,模型更重要的變成了易于理解,當(dāng)易用性放在模型設(shè)計(jì)的重要位置時(shí),維度模型可理解的優(yōu)勢(shì)就顯現(xiàn)出來了,維度建模一直就是以業(yè)務(wù)的視角來描述數(shù)據(jù)。
另外,當(dāng)新的業(yè)務(wù)出現(xiàn)時(shí),新的模型不會(huì)對(duì)已有模型形成沖擊,可以無影響的產(chǎn)出新的模型數(shù)據(jù)。
維度建模會(huì)設(shè)計(jì)部分?jǐn)?shù)據(jù)的冗余,通過冗余換來數(shù)據(jù)檢索的高性能。對(duì)于數(shù)據(jù)量極具膨脹的今天,高性能給用戶帶來了高價(jià)值。
事實(shí)表
所謂的事實(shí)表,就是企業(yè)的業(yè)務(wù)過程事件的度量信息。例如對(duì)于支付這個(gè)業(yè)務(wù)過程來說,需要度量支付的商品數(shù)、金額等度量。因此,企業(yè)的業(yè)務(wù)過程數(shù)據(jù)以事實(shí)表的形式在模型中呈現(xiàn)出來。
事實(shí)表每行都對(duì)應(yīng)了一個(gè)度量事件,每行數(shù)據(jù)是一個(gè)特定級(jí)別的細(xì)節(jié)數(shù)據(jù)。事實(shí)表中每個(gè)度量都必須是相同的粒度級(jí)別。
事實(shí)表中的度量的可加性也至關(guān)重要,因?yàn)闃I(yè)務(wù)方往往需要將事實(shí)表的數(shù)據(jù)基于某些維度進(jìn)行匯總,在度量上需要能夠做匯總累加。
事實(shí)表還是稀疏的,它僅僅會(huì)將發(fā)生的業(yè)務(wù)過程數(shù)據(jù)放入其中。**維度表**
維度表是事實(shí)表不可或缺的組成成分,它描述了事實(shí)表業(yè)務(wù)過程度量的環(huán)境。用于描述“誰、什么、哪里、何時(shí)、如何、為什么”有關(guān)的事件。
維度屬性是作為查詢約束、分組、標(biāo)識(shí)的主要來源,因此它的好壞直接決定了數(shù)據(jù)的可分析性的差異。維度屬性需要是可理解的,因此需要盡量避免“0,1”之類的代碼,將代碼翻譯成更易理解的字符避免業(yè)務(wù)的誤解。
同樣,會(huì)有一些數(shù)值型的可作為維度屬性。例如:也許有人會(huì)問商品標(biāo)價(jià)適合在事實(shí)表還是維度表中?
當(dāng)用于計(jì)算度量時(shí),它應(yīng)該存在于事實(shí)表中;但是當(dāng)它用于做約束、分組、標(biāo)識(shí)分析時(shí),則需要存在于維度表中。在維度表中,我們往往會(huì)把連續(xù)的數(shù)據(jù)換成離散的數(shù)值存儲(chǔ),例如:將標(biāo)價(jià)變?yōu)閮r(jià)格區(qū)間段。這是要根據(jù)對(duì)業(yè)務(wù)的理解做進(jìn)一步設(shè)計(jì)的。
雪花模型與星型模型
所謂的雪花模型,是當(dāng)有一個(gè)或多個(gè)維表沒有直接連接到事實(shí)表上,而是通過其他維表連接到事實(shí)表上時(shí),其圖解就像多個(gè)雪花連接在一起,故稱雪花模型。
而星型模型則是所有維表都直接連接到事實(shí)表上,整個(gè)圖解就像星星一樣,故將該模型稱為星型模型。
雪花模型是對(duì)星型模型的擴(kuò)展。
星型模型是一種非正規(guī)化的結(jié)構(gòu),多維數(shù)據(jù)集的每一個(gè)維度都直接與事實(shí)表相連,不存在漸變維度,所以數(shù)據(jù)有一定冗余。因?yàn)橛腥哂?#xff0c;所以很多統(tǒng)計(jì)不需要做外部的關(guān)聯(lián)查詢,因此一般情況下效率比雪花模型高。
但是從可理解性上看,雪花模型是更容易讓業(yè)務(wù)理解的。因?yàn)闃I(yè)務(wù)可以從模型上看出維度與維度之間的關(guān)系。
因此如何平衡查詢效率和業(yè)務(wù)理解?我們?cè)诤竺娴奈恼轮性偌?xì)細(xì)道來。
**總線矩陣**總線矩陣,維護(hù)的是企業(yè)的各個(gè)業(yè)務(wù)過程與一致性維度的關(guān)系。是以企業(yè)的高度實(shí)現(xiàn)的頂層設(shè)計(jì)。它的存在對(duì)于數(shù)據(jù)中臺(tái)項(xiàng)目至關(guān)重要。
如果數(shù)據(jù)中臺(tái)的模型設(shè)計(jì)就是一本書,那么總線矩陣就是這本書的目錄,能從整體上對(duì)每個(gè)模型有統(tǒng)一的定義。
從項(xiàng)目協(xié)調(diào)上看,總線矩陣在大型項(xiàng)目中起到舉足輕重的地位,整個(gè)項(xiàng)目組都能基于這個(gè)目錄清晰的明白自己在做什么,別人已經(jīng)做了什么,極大程度上的避免了信息溝通不暢導(dǎo)致的重復(fù)定義。
從項(xiàng)目管理上看,也可以基于總線矩陣對(duì)模型設(shè)計(jì)和開發(fā)進(jìn)行有效的優(yōu)先級(jí)排期。
最后,總線矩陣是共同業(yè)務(wù)人員和技術(shù)人員的橋梁,通過總線矩陣在項(xiàng)目溝通中達(dá)成一致的語言。
結(jié)語
通過這篇文章,初淺的對(duì)數(shù)據(jù)中臺(tái)模型設(shè)計(jì)發(fā)表了一些觀點(diǎn)。在后面的章節(jié)中,我們將繼續(xù)圍繞模型設(shè)計(jì)的技術(shù)細(xì)節(jié)、結(jié)合行業(yè)的模型設(shè)計(jì)案例,和數(shù)據(jù)同仁們做進(jìn)一步的分享和交流 。
總結(jié)
以上是生活随笔為你收集整理的数据中台模型设计系列(一):维度建模初探的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式锁原理——redis分布式锁,zo
- 下一篇: 前后端分离微服务架构如何设计?