什麼是 OLTP?什麼是 OLAP?
在數據管理中有兩個很重要的名詞,很基本但是也是很重要的觀念。就是 OLTP 以及 OLAP 這兩個名詞皆是代表數據管理,其目標以及應用情境是完全不一樣,這也包含他們的設計理念是不一樣的。
讓我們來仔細了解這兩者的差異吧!
什麼是 OLTP?
OLTP 是指 Online Transactional Processing 的簡稱,這個詞中 Transactional 是非常重要的,代表的是說他的處理通常包含了讀以及寫,通常 OLTP 是指系統能夠處理大量的更新以及新增的查詢。所以在傳統的 OLTP 系統中,數據的正確性以及一致性是首要要達到的目標之一。所以一般的 OLTP 中會常常聽到 ACID (Atomatic, Consistent, Isolated, Durable) 合規。這代表他們諄循著一個事務 (Transaction) 完成後才會執行下一筆,確保整個系統的資料一致性。
數據一致性為什麼這麼重要?因為 OLTP 可能同時有多位使用者同時操作,所以要確保當一個使用者更新資料後,另一個操作中的使用者也能拿到最終的狀態。不然就可能會有數據不一致以及不同步問題。這也是為什麼常常會聽到 ACID compliance 這個詞在 OLTP 中。
什麼是 ACID
根據 Wiki 中的定義:
ACID,是指資料庫管理系統(DBMS)在寫入或更新資料的過程中,為保證事務(transaction)是正確可靠的,所必須具備的四個特性:原子性(atomicity,或稱不可分割性)、一致性(consistency)、隔離性(isolation,又稱獨立性)、持久性(durability)。
Atomicity(原子性):一個事務(transaction)中的所有操作,或者全部完成,或者全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。即,事務不可分割、不可約簡。
Consistency(一致性):在事務開始之前和事務結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設約束、觸發器、級聯回滾等。
Isolation(隔離性):資料庫允許多個並發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務並發執行時由於交叉執行而導致數據的不一致。事務隔離分為不同級別,包括未提交讀(Read uncommitted)、提交讀(read committed)、可重複讀(repeatable read)和串行化(Serializable)。
Durability(持久性):事務處理結束後,對數據的修改就是永久的,即便系統故障也不會丟失。
OLTP 使用的情境
當您在使用銀行系統的時候就是一個非常標準使用 OLTP 的系統,銀行系統必須要確保您每次拿取的資料都是一致性而且是完全正確的。想像真實世界,不太可能你現在領了一些錢之後到了另一個 ATM 你的金額還是維持照舊,所以銀行系統都會需要很高的資料一致性,且完全符合 ACID 的規範。
什麼是 OLAP 呢?
OLAP 又是什麼呢?它代表著 Online Analytical Processing。一般的 OLAP 的系統可以讓數據聚合 (data aggregation) 以及批次處理 (Batch processing),OLAP 大部分是用來做歷史資料的分析以及報告。和 OLDP 最大的不一樣是他不需要處理、儲存、以及保持資料的一致性,而是用 OLAP 可以很快的使用 Query 去得到數據洞察得到數據聚合後的結果。
OLAP 使用情境
對於所有的 BI 系統以及報告工具都是 OLAP 的系統。像是如果銀行中他有 OLTP 的系統確保他的一致性後,他就能用 OLAP 的系統去做報告以及商業智慧分析等應用。例如:他可以把所有全台灣的使用者在過去一個月的交易做分析,這時候他就會較適合使用 OLAP 系統作分析。
結論
OLTP 重視數據處理以及一致性,OLAP 重視數據分析。但通常他們兩個會搭配使用,儲存資料的時候先存到 OLTP 中確保數據一致性,要做分析的時候再使用 OLAP 做重要報表。