在後端程式設計領域當中,我們可能常常會聽到 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:
現在看到上圖的立方體組,就是一個 OLAP Cube,可以被看待為一個資料分析模型。雖然上圖是由三維資料所組成的,但實際上,OLAP Cube 是可以由多維資料組成,不管是四維、七維、甚至十維都可以,所以它又被稱為 Hypercube!
而我們常用的表單 (欄、列) 是個二維的的資料模型,所以當需要多個表單集合來進行操作與分析都很困難,因為本質上它們就不是多維的資料集合!
1. Roll-up:
Roll-up 亦可被稱為合拼 (consolidation) 或聚合 (aggregation)。Roll-up 可以用作減少數據維度與概念層聚合 (Climbing up concept hierarchy)。如在上圖中,可以看到原來的城市類可以被聚合為國家類。
2. Drill-down:
Drill-down 可以增加數據維度或概念層折分 (Moving down the concept hierarchy) ,剛好是與 Roll-up 形成相反操作。如上圖中,可以把季 (Qx) 拆分為月份。
3. Slice:
Slice 可以在多維中選擇某一個維度為條件,產生出一個新的子 Cube,更集中的地去處理某一範圍的資料集。如上圖是選擇 Q1 時間維度的資料來產出新的資料集。
4. Dice:
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 的高效能。
缺點:
- 高複雜度:混合式的系統當然要付出操作更複雜的代價。
另可參考 Mircosoft — 線上分析處理 (OLAP) 一文。
如果你覺得我的文章幫助到你,希望你也可以為文章拍手,分別 Follow 我的個人頁與程式愛好者出版,按讚我們的粉絲頁喔,支持我們推出更多更好的內容創作!