【大資料】OLAP架構及技術實現的演進簡介

語言: CN / TW / HK

文章目錄

你的點贊與評論是我最大的創作動力!

一、架構分類

OLAP名為聯機分析,又稱多維分析,什麼是多維分析,指的是多種不同的維度審視資料,進行深層次分析。

進行分析必不可少對資料進行下鑽、上卷、切片、切塊、旋轉等操作,為了更加直觀,我們可以使用立方體來表示。

  • 下鑽:從高層次向低層次明細資料穿透。例如從“省”下鑽到“市”,從“浙江省”穿透到“杭州市”和“台州市”。

  • 上卷:和下鑽相反,從低層次向高層次聚合。例如從“市”匯聚成“省”,將“杭州市”、“台州市”聚合成“湖北”。

  • 切片:觀察立方體的一層,將一個或多個維度設為單個固定值,然後觀察剩餘的維度,例如將商品維度固定為“車釐子”。

  • 切塊:與切片類似,只是將單個固定值變成多個值。例如將商品維度固定成“梨”、“車釐子”。

  • 旋轉:旋轉立方體的一面,如果要將資料對映到一張二維表,那麼就要進行旋轉,這就等同於行列置換。

為了實現上述操作,將常見的OLAP架構分為三類:

1、ROLAP(Relational OLAP)是直接使用關係模型構建,因為早期OLAP概念提出的時候是建立在關係型資料庫之上的。,多維分析的操作,可以直接轉換成SOL查詢。

2、MOLAP(Multidimensional OLAP),一般稱為多維型OLAP,它可以緩解ROLAP效能問題,使用多維陣列的形式儲存資料。核心思想就是採用空間換取時間的形式,預先聚合結果來提高查詢效能。

首先,對需要分析的資料進行建模,框定需要分析的維度欄位;然後,通過預處理的形式,對各種維度進行組合並事先聚合;最後,將聚合結果以某種索引或者快取的形式儲存起來(通常只保留聚合後的結果,不儲存明細資料)。這樣一來,在隨後的查詢過程中,就可以直接利用結果返回資料。但是這種架構也並不完美。維度預處理可能會導致資料的膨脹

3、HOLAP(Hybrid OLAP)這種架構思想可謂是上面兩種架構思想的混合,這種思想對於具體的瞭解、實現現在還不多。

二、技術演進

技術的演進我們可以分為兩個標誌性的階段。

1、傳統關係型資料庫時期

這個階段中,OLAP主要基於以Oracle、MySQL為代表的一眾關係型資料實現。在ROLAP架構下,直接使用這些資料庫作為儲存與計算的載體。在MOLAP架構下,則藉助物化檢視的形式實現各資料操作。但難以解決的問題是,不論是ROLAP還是MOLAP,在資料體量大、維度數目多的情況下都存在嚴重的效能問題。

2、大資料技術時期

由於大資料處理技術的普及,大家開始使用大資料技術重構ROLAP和MOLAP。

先看ROLAP架構,傳統關係型資料庫就被Hive和SparkSQL這類新興技術所取代。雖然,以Spark為代表的分散式計算系統,相比Oracle這類傳統資料庫而言,在面向海量資料的處理效能方面已經優秀很多,但是直接把它們作為面向終端使用者的線上查詢系統還是太慢了。

再看MOLAP架構,MOLAP背後也轉為依託MapReduce或Spark這類新興技術,將其作為立方體的計算引擎,加速立方體的構建過程。其預聚合結果的儲存載體也轉向HBase這類高效能分散式資料庫。大資料技術階段,主流MOLAP架構已經能夠在億萬級資料的體量下,實現毫秒級的查詢響應時間。儘管如此,MOLAP架構依然存在維度爆炸、資料同步實時性不高的問題。