- 產品
- 產品解決方案
- 行業解決方案
- 案例
- 數據資產入表
- 賦能中心
- 伙伴
- 關于
時間:2022-02-24來源:菠蘿菠蘿蜜瀏覽數:340次
? ? ? ?想象一個場景,你想說服老板搞數據倉庫建模,該如何說清楚其價值呢?
? ? ? ?也許你會這么說。
? ? ? ?如果把數據看作圖書館里的書,我們希望看到它們在書架上分門別類地放置;如果把數據看作城市的建筑,我們希望城市規劃布局合理;如果把數據看作電腦文件和文件夾,我們希望按照自己的習慣有很好的文件夾組織方式,而不是糟糕混亂的桌面,經常為找一個文件而不知所措。
? ? ? ?數據模型就是數據組織和存儲方法,它強調從業務、數據存取和使用角度合理存儲數據。Linux的創始人Torvalds有一段關于“什么才是優秀程序員”的話:“爛程序員關心的是代碼,好程序員關心的是數據結構和它們之間的關系”,最能夠說明數據模型的重要性。
? ? ? ?上面的話似乎有道理,但如此的表述還是技術化了一點,既沒有站在應用的角度看模型價值,描述的也不夠具體和形象,老板聽起來肯定也是云里霧里。
? ? ? ?我這么來理解數據倉庫建模的價值。
? ? ? ?數據倉庫采集進來的原始數據是雜亂無章的,只有通過構建數據模型,將數據有序的組織和存儲起來之后(即模型),才能為上層應用提供高效靈活的支撐,優秀的數據倉庫模型對應用的價值主要體現在數據質量、響應速度、成本消耗及健壯水平四個方面:

? ? ? ?通過建模可以準確的理解業務和數據,實現業務和數據的標準映射,從而提升應用的有效性。
? ? ? ?比如原始數據對于性別字段的枚舉值既有男女,也有01等形式,這種定義的分歧會對上層的應用產生干擾,數據模型應該依據數據標準對原始數據進行標準化,所謂“書同文,車同軌”,數據治理的要求往往要落在具體的數據建模中才能發揮作用。

? ? ? ?通過建模可以提前基于源數據生成應用所需的模型,提升應用響應能力。
? ? ? ?寬表就是一種典型的模型,如果沒有寬表,應用就要將數據處理的復雜邏輯嵌入在應用中實現,無論是代碼的開銷、處理的開銷及訪問的開銷都很大,因此往往需要預先生成模型來置換時間,也就是空間換時間。
? ? ? ?風險在于應用變化無常,而模型往往后知后覺,現在只管殺不管埋的現象很多了,導致企業中80%的模型沒人使用,元數據很大的一個應用場景就是模型生命周期的管理。

? ? ? ?通過建模可以實現公共數據的共享,提升復用能力。
? ? ? ?比如發現某些應用共同需要某個計算字段,則可以將這個計算字段預先生成(即沉淀成模型),這樣有新的應用需要時可以直接使用,從而在資源和時間節省上一舉兩得。
從這個角度講,OLAP的CUBE其實就是一種建模,當然應用(上層模型也可以看成應用)如果不夠多,復用無從談起,建模也就失去了價值,很多時候感覺數據倉庫的模型沒啥卵用,大多時候是復用的效益不夠明顯所致。

? ? ? ?通過建模可以實現應用與源數據的解耦,降低源數據變動對應用的影響,提升應用的健壯性。
? ? ? ?比如有100個應用直接依賴某個源數據,如果這個源數據發生變動,則需要對100個應用都進行適配改造,代價非常大,而如果100個應用都是基于模型支撐的,則可以在保證模型北向應用接口不動的情況下,僅改造模型和源數據的南向接口就可以了,不僅改動的工作量大幅減少(比如原來改100次現在只需要改一次),同時保證了應用的連續性。
? ? ? ?風險在于模型強制映射轉化往往開銷很大,模型的冗余度、復雜度會越來越高,源數據變更后的一些新特性也會被拋棄,最終影響應用的支撐效率。
? ? ? ?很多時候,搞清楚為什么要數據倉庫建模,比數據倉庫模型怎么建更有意義,因為前者決定了方向,搞清楚了本質就不容易走錯路,比如一些小而美的場景往往不需要建模。
? ? ? ?關于數據倉庫模型怎么建的文章已經很多了,無論是關系還是維度,相對也比較成熟,這里就不再累述了。