數據立方體----維度與OLAP

數據立方體

  關於數據立方體(Data Cube),這裏必須注意的是數據立方體只是多維模型的一個形象的說法。立方體其自己只有三維,但多維模型不只限於三維模型,能夠組合更多的維度,但一方面是出於更方便地解釋和描述,同時也是給思惟成像和想象的空間;另外一方面是爲了與傳統關係型數據庫的二維表區別開來,因而就有了數據立方體的叫法。因此本文中也是引用立方體,也就是把多維模型以三維的方式爲表明進行展示和描述,其實上Google圖片搜索「OLAP」會有一大堆的數據立方體圖片,這裏我本身畫了一個: web

Data-Cube

OLAP

  OLAP(On-line Analytical Processing,聯機分析處理)是在基於數據倉庫多維模型的基礎上實現的面向分析的各種操做的集合。能夠比較下其與傳統的OLTP(On-line Transaction Processing,聯機事務處理)的區別來看一下它的特色: 數據庫

OLAP與OLTP

數據處理類型 OLTP OLAP
面向對象 業務開發人員 分析決策人員
功能實現 平常事務處理 面向分析決策
數據模型 關係模型 多維模型
數據量 幾條或幾十條記錄 百萬千萬條記錄
操做類型 查詢、插入、更新、刪除 查詢爲主

OLAP的類型

  首先要聲明的是這裏介紹的有關多維數據模型和OLAP的內容基本都是基於ROLAP,由於其餘幾種類型極少接觸,並且相關的資料也很少。 數組

MOLAP(Multidimensional) 函數

  即基於多維數組的存儲模型,也是最原始的OLAP,但須要對數據進行預處理才能造成多維結構。 優化

ROLAP(Relational) spa

  比較常見的OLAP類型,這裏介紹和討論的也基本都是ROLAP類型,能夠從多維數據模型的那篇文章的圖中看到,其實ROLAP是徹底基於關係模型進行存放的,只是它根據分析的須要對模型的結構和組織形式進行的優化,更利於OLAP。 .net

HOLAP(Hybrid) 對象

  介於MOLAP和ROLAP的類型,個人理解是細節的數據以ROLAP的形式存放,更加方便靈活,而高度聚合的數據以MOLAP的形式展示,更適合於高效的分析處理。 索引

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

OLAP的基本操做

  咱們已經知道OLAP的操做是以查詢——也就是數據庫的SELECT操做爲主,可是查詢能夠很複雜,好比基於關係數據庫的查詢能夠多表關聯,可使用COUNT、SUM、AVG等聚合函數。OLAP正是基於多維模型定義了一些常見的面向分析的操做類型是這些操做顯得更加直觀。

  OLAP的多維分析操做包括:鑽取(Drill-down)上卷(Roll-up)切片(Slice)切塊(Dice)以及旋轉(Pivot),下面仍是以上面的數據立方體爲例來逐一解釋下:

OLAP 

  鑽取(Drill-down):在維的不一樣層次間的變化,從上層降到下一層,或者說是將彙總數據拆分到更細節的數據,好比經過對2010年第二季度的總銷售數據進行鑽取來查看2010年第二季度四、五、6每月的消費數據,如上圖;固然也能夠鑽取浙江省來查看杭州市、寧波市、溫州市……這些城市的銷售數據。

  上卷(Roll-up):鑽取的逆操做,即從細粒度數據向高層的聚合,如將江蘇省、上海市和浙江省的銷售數據進行彙總來查看江浙滬地區的銷售數據,如上圖。

  切片(Slice):選擇維中特定的值進行分析,好比只選擇電子產品的銷售數據,或者2010年第二季度的數據。

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

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

OLAP的優點

  首先必須說的是,OLAP的優點是基於數據倉庫面向主題、集成的、保留歷史及不可變動的數據存儲,以及多維模型多視角多層次的數據組織形式,若是脫離的這兩點,OLAP將不復存在,也就沒有優點可言。

數據展示方式

  基於多維模型的數據組織讓數據的展現更加直觀,它就像是咱們日常看待各類事物的方式,能夠從多個角度多個層面去發現事物的不一樣特性,而OLAP正是將這種尋常的思惟模型應用到了數據分析上。

查詢效率

  多維模型的創建是基於對OLAP操做的優化基礎上的,好比基於各個維的索引、對於一些經常使用查詢所建的視圖等,這些優化使得對百萬千萬甚至上億數量級的運算變得駕輕就熟。

分析的靈活性

  咱們知道多維數據模型能夠從不一樣的角度和層面來觀察數據,同時能夠用上面介紹的各種OLAP操做對數據進行聚合、細分和選取,這樣提升了分析的靈活性,能夠從不一樣角度不一樣層面對數據進行細分和彙總,知足不一樣分析的需求。

  是否是以爲其實OLAP並無想象中的那麼複雜,一旦多維數據模型建成後,在上面作OLAP實際上是一件很cool的事情。 ;)

相關文章
相關標籤/搜索