天天看點

資料立方體與OLAP

雷頓學院大資料:http://www.leidun.site/

 

前面的一篇文章——資料倉庫的多元資料模型中已經簡單介紹過多元模型的定義和結構,以及事實表(Fact Table)和維表(Dimension Table)的概念。多元資料模型作為一種新的邏輯模型賦予了資料新的組織和存儲形式,而真正展現其在分析上的優勢還需要基于模型的有效的操作和處理,也就是OLAP(On-line Analytical Processing,聯機分析處理)。

  關于資料立方體(Data Cube),這裡必須注意的是資料立方體隻是多元模型的一個形象的說法。立方體其本身隻有三維,但多元模型不僅限于三維模型,可以組合更多的次元,但一方面是出于更友善地解釋和描述,同時也是給思維成像和想象的空間;另一方面是為了與傳統關系型資料庫的二維表差別開來,于是就有了資料立方體的叫法。是以本文中也是引用立方體,也就是把多元模型以三維的方式為代表進行展現和描述,其實上Google圖檔搜尋“OLAP”會有一大堆的資料立方體圖檔,這裡我自己畫了一個:

資料立方體與OLAP

  OLAP(On-line Analytical Processing,聯機分析處理)是在基于資料倉庫多元模型的基礎上實作的面向分析的各類操作的集合。可以比較下其與傳統的OLTP(On-line Transaction Processing,聯機事務處理)的差別來看一下它的特點:

資料處理類型

OLTP

OLAP

面向對象

業務開發人員

分析決策人員

功能實作

日常事務處理

面向分析決策

資料模型

關系模型

多元模型

資料量

幾條或幾十條記錄

百萬千萬條記錄

操作類型

查詢、插入、更新、删除

查詢為主

  首先要聲明的是這裡介紹的有關多元資料模型和OLAP的内容基本都是基于ROLAP,因為其他幾種類型極少接觸,而且相關的資料也不多。

MOLAP(Multidimensional)

  即基于多元數組的存儲模型,也是最原始的OLAP,但需要對資料進行預處理才能形成多元結構。

ROLAP(Relational)

  比較常見的OLAP類型,這裡介紹和讨論的也基本都是ROLAP類型,可以從多元資料模型的那篇文章的圖中看到,其實ROLAP是完全基于關系模型進行存放的,隻是它根據分析的需要對模型的結構群組織形式進行的優化,更利于OLAP。

HOLAP(Hybrid)

  介于MOLAP和ROLAP的類型,我的了解是細節的資料以ROLAP的形式存放,更加友善靈活,而高度聚合的資料以MOLAP的形式展現,更适合于高效的分析處理。

  另外還有WOLAP(Web-based OLAP)、DOLAP(Desktop OLAP)、RTOLAP(Real-Time OLAP),具體可以參開維基百科上的解釋——OLAP。

  我們已經知道OLAP的操作是以查詢——也就是資料庫的SELECT操作為主,但是查詢可以很複雜,比如基于關系資料庫的查詢可以多表關聯,可以使用COUNT、SUM、AVG等聚合函數。OLAP正是基于多元模型定義了一些常見的面向分析的操作類型是這些操作顯得更加直覺。

  OLAP的多元分析操作包括:鑽取(Drill-down)、上卷(Roll-up)、切片(Slice)、切塊(Dice)以及旋轉(Pivot),下面還是以上面的資料立方體為例來逐一解釋下:

資料立方體與OLAP

  鑽取(Drill-down):在維的不同層次間的變化,從上層降到下一層,或者說是将彙總資料拆分到更細節的資料,比如通過對2010年第二季度的總銷售資料進行鑽取來檢視2010年第二季度4、5、6每個月的消費資料,如上圖;當然也可以鑽取浙江省來檢視杭州市、甯波市、溫州市……這些城市的銷售資料。

  上卷(Roll-up):鑽取的逆操作,即從細粒度資料向高層的聚合,如将江蘇省、上海市和浙江省的銷售資料進行彙總來檢視江浙滬地區的銷售資料,如上圖。

  切片(Slice):選擇維中特定的值進行分析,比如隻選擇電子産品的銷售資料,或者2010年第二季度的資料。

  切塊(Dice):選擇維中特定區間的資料或者某批特定值進行分析,比如選擇2010年第一季度到2010年第二季度的銷售資料,或者是電子産品和日用品的銷售資料。

  旋轉(Pivot):即維的位置的互換,就像是二維表的行列轉換,如圖中通過旋轉實作産品維和地域維的互換。

  首先必須說的是,OLAP的優勢是基于資料倉庫面向主題、內建的、保留曆史及不可變更的資料存儲,以及多元模型多視角多層次的資料組織形式,如果脫離的這兩點,OLAP将不複存在,也就沒有優勢可言。

  基于多元模型的資料組織讓資料的展示更加直覺,它就像是我們平常看待各種事物的方式,可以從多個角度多個層面去發現事物的不同特性,而OLAP正是将這種尋常的思維模型應用到了資料分析上。

  多元模型的建立是基于對OLAP操作的優化基礎上的,比如基于各個維的索引、對于一些常用查詢所建的視圖等,這些優化使得對百萬千萬甚至上億數量級的運算變得得心應手。

  我們知道多元資料模型可以從不同的角度和層面來觀察資料,同時可以用上面介紹的各類OLAP操作對資料進行聚合、細分和選取,這樣提高了分析的靈活性,可以從不同角度不同層面對資料進行細分和彙總,滿足不同分析的需求。

  是不是覺得其實OLAP并沒有想象中的那麼複雜,一旦多元資料模型建成後,在上面做OLAP其實是一件很cool的事情。 

資料立方體與OLAP