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