什么是 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 做重要报表。