數倉建模—數據集成
數據倉庫系列文章(持續更新)
- 數倉架構發展史
- 數倉建模方法論
- 數倉建模分層理論
- 數倉建模—寬表的設計
- 數倉建模—指標體系
- 數據倉庫之拉鏈表
- 數倉—數據集成
- 數倉—數據集市
- 數倉—商業智慧系統
- 數倉—埋點設計與管理
- 數倉—ID Mapping
- 數倉—OneID
- 數倉—AARRR海盜模型
- 數倉—匯流排矩陣
- 數倉—數據安全
- 數倉—數據品質
- 數倉—數倉建模和業務建模
數據集市(DM)
這裡我們先回憶一下數據倉庫的定義, 數據倉庫(Data Warehouse) 是一個面向主題的(Subject Oriented) 、集成的( Integrate ) 、相對穩定的(Non -Volatile ) 、反映歷史變化( Time Variant) 的數據集合用於支援管理決策。更多關於數據倉庫的可以參考數倉架構發展史,而且前面我們也介紹了大量關於數倉建模這一塊的內容,具體可以參考我們的專欄數倉建模方法論。
今天我們介紹一個在數倉中非常常見的概念——數據集市,數倉定義中的五個特性都值得一一仔細品味,隨著你對數倉的理解加深,你對這個五個特性的理解也會更加全面。
首先數據倉庫用於支援決策,面向分析型數據處理,它不同於企業現有的操作型資料庫;其次,數據倉庫是對多個異構的數據源有效集成,集成後按照主題進行了重組,並包含歷史數據並且存放在數據倉庫中的數據一般不再修改。
什麼是數據集市(DM)
這裡有一個詞是主題,那就是我們集成後的數據,又按照了主題進行了劃分,而面向主題劃分出來的部分就是數據集市,也就是說數據集市是數據倉庫的一個子集或者說是集成後的子集。
數據集市通常是面向部門的或者是部門級業務,或者是面向部門的主題的,舉個例子例如在金融領域可能會有結算部門的數據集市、風控部部門數據集市、市場部門的數據集市、運營部門的數據集市,這裡的特點就是面向部門的,但是對於有的部門它的組織結構可能比較大,所以它所負責的業務線也有多個,這個時候就會出現,數據集市是面向部門的子業務,總之一句話,數據集市是面向主題的,一般公司的主題就是部門或者業務線。
這裡還有一點要強調數據集市是作為我們數倉的一層,對外提供數據服務,當然提供服務的方式是有很多種的,但是最終我們是將數據集市層的數據提供出去的,也就是說這一層是面向用戶的。
為什麼要有數據集市
上面了解了什麼是數據集市,接下來我們就看看一下為什麼要有數據集市,開始之前我們線回顧一下前面的數倉建模分層理論,我們知道了數倉最簡單的就是ODS+DM,但為什麼我們還要分層,在文章中我們解釋了分層的意義是什麼,如果你忘記了可以看一下前面的文章。
這裡我們知道了數據集市是數據倉庫的子集,我們可以把分層看作是橫向切分,那麼數據集市就是豎向切分,
所以我們可以得出一個結論那就是數據集市的劃分也是為了更好的管理數倉和提高生產效率,但是這個還是有點抽象,下面我們再討論一下為什麼要做數據集市層。
靈活性
這裡我們把數據集成也引入進來,從宏觀上看一下從數據源到數據服務,整個數倉的存在形式是怎樣的,當然這裡我們是一個簡化的圖,我們主要反映出問題就行了。
上面就是我們當前的數倉形態,這下我們解釋一下我們為什麼要做數據集市層,數據集市層雖然是一個層,但是這層里有多個集市,每個集市面向不同的業務線或者是業務部門,那我們為什麼要這麼做呢,說白了就是為解耦,解耦的目的是為了增加靈活性。
如果沒有數據集市層,那麼我們的數倉就要面向眾多的業務部門,但是由於每個業務部門的數據需求或者所關心的數據是不一樣的,這就會導致我們的數倉建設失去核心,就會出現我們為了滿足某一個部門而違背了我們數倉的建設原則的現象出現,所以我們增加了數據集市層,也就是每個部門的個性化需求在這裡體現。
其實如果你學習過設計模式或者是Java 的話,其實很容易立即,這有點類似抽象類Service 和 實現類 ServiceImpl.
數據集市有什麼特點
如果你仔細學習了前面的內容的話,你肯定可以理解下面的幾個特點這裡我就不一一解釋,而且這些特點也是我總結出來的,你也可有對其進行擴展。
規模小
數據倉庫是面向企業的,數據集市是面向部門或者特定業務的
面向主題
數據集市是面向部門或者特定業務的
直接面向用戶
數據集市是面向部門或者特定業務的
個性化高
數據集市是面向部門或者特定業務的,所以就會出現靈活多變的特點,而且也會出現流程上更簡單快速,規範上要求不嚴格,使用上要盡量簡單。其實這會反映到我們的表上
- 就是我們集市層的表一般都是關聯好之後的表,使用的時候基本不需要關聯,主要是為了使用方便性能高,其實可以看到我們集市層的表機會都是數倉建模—寬表的設計
- 還有就是我們集市層的表一般都是冗餘了一些相關的欄位,主要是為了應對也無妨多變的請求,舉個例子業務方想看每個人今年的總消費,我可能會把最大值和平均值都會計算出來。
滿足需求為第一優先順序
尤其在一起初創企業,數倉建設跟不上的時候,為了儘快完成需求我們就會直接從ods層建設DM,從而可以對外提供數據。
如何建立數據集市
數據倉庫(集市)的設計可以採用迭代式的方法,也就是說我們可以根據我們的適用方不斷的去迭代我們的數據集市,而且也沒有任何數據集市是可以一次性建成的。
理論上講,應該有一個總的數據倉庫的概念,然後才有數據集市,但是我們實際的做法是先確定了數據集市以及我們的服務對象之後,然後才開始開始建立數據倉庫最後才是數據集市,也就是我們首先設計的是數據集市,但是我們建立的時候卻是首先建立的是數據倉庫。
總結
數據集市就是數據倉庫面向某個主題的子集,它作為數倉面向用戶的一層存在,提供數據服務。
據集市往往作為數據倉庫之上的一個面向分析應用或者是數倉裡面向用戶的一層,也就是說沒有這一層的話,我們的倉庫就要面向用戶了,我們可以將其視作代理,因為這一層要面向用戶,所以它就有多變和不規範的特性,但是為了保證數倉整體建設的合理性和規範性,所以我們在數倉上加了這一層。
雖然集市層是面向用戶的,但是由於面向的用戶群體不同,所以又根據用戶群體的特點,將集市層進行了縱向切分,切分成了一個個不同的集市。
數據倉庫是面向企業的,數據集市是面向部門或者特定業務的,你可以將其看作一個小型的數據倉庫,其實這裡牽扯出了早期數據倉庫的一種存在形體,那就是每個部門有自己的數據倉庫,而不是統一建設的數據倉庫。
知識星球
其實知識星球我以前就建立了,當時覺得自己沒有那麼多的精力維護,不能很好的幫助有需要的同學們,所以一直沒有開放。最近很多同學私聊我學習路線,個人精力也是有限,並不能及時解答所有同學的問題。
通過調查,大部分同學表示願意加入知識星球,我也覺得這樣讓大家的提問更加有層次和意義,而不是問一些比較膚淺和不太合適的問題,有問題也能自己先查詢一下,這樣更好的交流和解答疑問,提升時間利用率。
這裡生成了50張5折優惠券
,先到先得,領完為止(星球人數每增加50人,價格上漲10元)。