天天看點

資料倉庫的多元資料模型

資料倉庫的多元資料模型

可能很多人了解的資料倉庫就是基于多元資料模型建構,用于olap的資料平台,通過上一篇文章——資料倉庫的基本架構,我們已經看到資料倉庫的應用可能遠不止這些。但不得不承認多元資料模型是資料倉庫的一大特點,也是資料倉庫應用和實作的一個重要的方面,通過在資料的組織和存儲上的優化,使其更适用于分析型的資料查詢和擷取。

多元資料模型的定義和作用

多元資料模型是為了滿足使用者從多角度多層次進行資料查詢和分析的需要而建立起來的基于事實和維的資料庫模型,其基本的應用是為了實作olap(online analytical processing)。

當然,通過多元資料模型的資料展示、查詢和擷取就是其作用的展現,但其真的作用的實作在于,通過資料倉庫可以根據不同的資料需求建立起各類多元模型,并組成資料集市開放給不同的使用者群體使用,也就是根據需求定制的各類資料商品擺放在資料集市中供不同的資料消費者進行采購。

多元資料模型執行個體

在看執行個體前,這裡需要先了解兩個概念:事實表和維表。事實表是用來記錄具體事件的,包含了每個事件的具體要素,以及具體發生的事情;維表則是對事實表中事件的要素的描述資訊。比如一個事件會包含時間、地點、人物、事件,事實表記錄了整個事件的資訊,但對時間、地點和人物等要素隻記錄了一些關鍵标記,比如事件的主角叫“michael”,那麼michael到底“長什麼樣”,就需要到相應的維表裡面去查詢“michael”的具體描述資訊了。基于事實表和維表就可以建構出多種多元模型,包括星形模型、雪花模型和星座模型。這裡不再展開了,解釋概念真的很麻煩,而且基于我的了解的描述不一定所有人都能明白,還是直接上執行個體吧:

資料倉庫的多元資料模型

這是一個最簡單的星形模型的執行個體。事實表裡面主要包含兩方面的資訊:維和度量,維的具體描述資訊記錄在維表,事實表中的維屬性隻是一個關聯到維表的鍵,并不記錄具體資訊;度量一般都會記錄事件的相應數值,比如這裡的産品的銷售數量、銷售額等。維表中的資訊一般是可以分層的,比如時間維的年月日、地域維的省市縣等,這類分層的資訊就是為了滿足事實表中的度量可以在不同的粒度上完成聚合,比如2010年商品的銷售額,來自上海市的銷售額等。

還有一點需要注意的是,維表的資訊更新頻率不高或者保持相對的穩定,例如一個已經建立的十年的時間維在短期是不需要更新的,地域維也是;但是事實表中的資料會不斷地更新或增加,因為事件一直在不斷地發生,使用者在不斷地購買商品、接受服務。

多元資料模型的優缺點

這裡所說的多元模型是指基于關系資料庫的多元資料模型,其與傳統的關系模型相比有着自身的優缺點。

優點:

多元資料模型最大的優點就是其基于分析優化的資料組織和存儲模式。舉個簡單的例子,電子商務網站的操作資料庫中記錄的可能是某個時間點,某個使用者購買了某個商品,并寄送到某個具體的位址的這種記錄的集合,于是我們無法馬上擷取2010年的7月份到底有多少使用者購買了商品,或者2010年的7月份有多少的浙江省使用者購買了商品?但是在基于多元模型的基礎上,此類查詢就變得簡單了,隻要在時間維上将資料聚合到2010年的7月份,同時在地域維上将資料聚合到浙江省的粒度就可以實作,這個就是olap的概念,之後會有相關的文章進行介紹。

缺點:

多元模型的缺點就是與關系模型相比其靈活性不夠,一旦模型建構就很難進行更改。比如一個訂單的事實,其中使用者可能購買了多種商品,包括了時間、使用者維和商品數量、總價等度量,對于關系模型而言如果我們進而需要區分訂單中包含了哪些商品,我們隻需要另外再建一張表記錄訂單号和商品的對應關系即可,但在多元模型裡面一旦事實表建構起來後,我們無法将事實表中的一條訂單記錄再進行拆分,于是無法建立以一個新的次元——産品維,隻能另外再建個以産品為主題的事實表。

是以,在建立多元模型之前,我們一般會根據需求首先詳細的設計模型,應該包含哪些維和度量,應該讓資料保持在哪個粒度上才能滿足使用者的分析需求。

本文作者:joeghwu

來源:51cto