什麼是 OLAP ?

YC
程式愛好者
Published in
6 min readJan 22, 2021

在後端程式設計領域當中,我們可能常常會聽到 OLTP (線上交易處理),也就是我們常用的關聯式資料庫處理事項。這些資料庫通常都具有對一筆或多筆資料進行讀寫的能力,並儲存著大量有價值的資訊。

但是,OLTP 資料庫並不是針對分析而設計的,當我們試圖在這些資料庫上作出分析或統計報告時 (BI),通常都會組合出很多複雜的 SQL 語句來 Query (查詢)。所以,OLAP 被提出了。

線上分析處理(英語:Online analytical processing),簡稱OLAP,是電腦技術中快速解決多維分析問題一種方法。
OLAP通常與 OLTP(線上交易處理)形成對比,OLTP的特點是查詢的複雜性要小得多,而且查詢量要大得多,以處理事務,而不是用於商業智慧型或報告。OLAP系統主要針對讀取進行最佳化,而 OLTP得能處理各種查詢(讀取、插入、更新和刪除)。
撰自 — 維基百科 (線上分析處理)

OLAP 由四個基本的分析操作組成,分別為:上卷 (roll-up)、鑽取 (drill-down)、切片 (slicing) 和切塊 (dicing)。

我們可以透過 OLAP Cube 來輕易了解這四個動作。

OLAP Cube:

source: https://www.guru99.com/online-analytical-processing.html

現在看到上圖的立方體組,就是一個 OLAP Cube,可以被看待為一個資料分析模型。雖然上圖是由三維資料所組成的,但實際上,OLAP Cube 是可以由多維資料組成,不管是四維、七維、甚至十維都可以,所以它又被稱為 Hypercube!

而我們常用的表單 (欄、列) 是個二維的的資料模型,所以當需要多個表單集合來進行操作與分析都很困難,因為本質上它們就不是多維的資料集合!

1. Roll-up:

source: https://www.guru99.com/online-analytical-processing.html

Roll-up 亦可被稱為合拼 (consolidation) 或聚合 (aggregation)。Roll-up 可以用作減少數據維度概念層聚合 (Climbing up concept hierarchy)。如在上圖中,可以看到原來的城市類可以被聚合為國家類。

2. Drill-down:

source: https://www.guru99.com/online-analytical-processing.html

Drill-down 可以增加數據維度概念層折分 (Moving down the concept hierarchy) ,剛好是與 Roll-up 形成相反操作。如上圖中,可以把季 (Qx) 拆分為月份。

3. Slice:

source: https://www.guru99.com/online-analytical-processing.html

Slice 可以在多維中選擇某一個維度為條件,產生出一個新的子 Cube,更集中的地去處理某一範圍的資料集。如上圖是選擇 Q1 時間維度的資料來產出新的資料集。

4. Dice:

source: https://www.guru99.com/online-analytical-processing.html

Dice 的操作與 Slice 相似,只是 Dice 可以從原來的 Cube 中選擇多個維度的資料來產生出新的子 Cube。

常見的三種 OLAP 實作型態

1. ROLAP
R 是 relational 的意思,所以 ROLAP 就是基於關聯式資料庫的 OLAP。也就是說,ROLAP 沒有在使用上文所說的 OLAP Cube!ROLAP 可以使用 slicing 和 dicing 功能,因為 slicing 或 dicing 功能和 SQL 語句中 WHERE 關鍵字的功能是類似的。

優點:

  • 可擴充性:因為基於關聯式資料庫,以為硬體提供的空間有多大,ROLAP 的數據量就可以存放多大。
  • 靈活度高:因為使用 SQL 查詢且計算未被預處理,所以比 MOLAP 擁有更高的資料運用上的靈活度。

缺點:

  • 功能受限:因為其實是由 SQL 實作,所以 SQL 有什麼它才能做什麼。
  • 面對大數據量的低性能:因為基於關聯式資料庫,所以在查詢大數據量時會愈多資料愈慢慢。

2. MOLAP

MOLAP 是基於多維數據儲存引擎來實現多維數據的視圖 (view),通常就是使用上文說的 OLAP Cube。而 MOLAP 引擎多數都是商用的,如 Mircosoft 的 Azure Analysis Services

優點:

  • 足夠的功能:MOLAP Cube 是為了快速數據檢索而構建,所以具有最 native 的 Cube 操作。
  • 高效能:所有的計算都是在 Cube 上建立的,因為在 Cube 中是有限且被處理過的數據,所以 MOLAP 會比 ROLAP 更迅速的得出結果。

缺點:

  • 它可以處理的數據量有限:同樣地,因為在 Cube 中是有限且被處理過的數據,Cube 不能像 ROLAP 的隨意地計算任意的數據,每次要計算新的內容,我們都需要時間來建構新的數據模型。

3. Hybrid OLAP

HOLAP 基於混合數據組織的 OLAP 實現 (Hybrid OLAP),也就是 ROLAP 與 MOLAP 的混合體。HOLAP 將預計算過的數據儲存在多 OLAP Cube 中,將詳細數據儲存到關聯式資料庫中。

優點:

  • 擁有 ROLAP 的可擴充性
  • 擁有 ROLAP 的即時資料更新。
  • 擁有 MOLAP 的高效能

缺點:

  • 高複雜度:混合式的系統當然要付出操作更複雜的代價。

如果你覺得我的文章幫助到你,希望你也可以為文章拍手,分別 Follow 我的個人頁與程式愛好者出版,按讚我們的粉絲頁喔,支持我們推出更多更好的內容創作!

--

--

YC
程式愛好者

提供更精確的技術內容為目標,另創立「程式愛好者」專頁。首席軟體工程師,專研後端技術、物件導向、軟體架構。