简述

  • OLTP:是对事务要求比较高。 (业务系统)
  • OLAP:偏向数据存储、压缩、分析。(数据仓库)

OLTP:

Online Transaction Processing System,在线事务处理系统

  • OLTP 是一个在线事务处理系统。OLTP 系统的主要重点是记录当前事务的更新、插入和删除。OLTP 查询更简单、更短,因此需要更少的处理时间,也需要更少的空间。

  • OLTP 数据库经常更新。可能会发生 OLTP 中的事务在中间失败,这可能会影响数据完整性。因此,它必须特别注意数据完整性。OLTP 数据库具有规范化表 (3NF)。

  • OLTP 系统的最佳示例是 ATM,我们在其中使用短交易来修改我们帐户的状态。OLTP 系统成为 OLAP 的数据源。

OLAP:

Online Analytical Processing System,在线分析处理系统

  • OLAP 是一个在线分析处理系统。OLAP 数据库存储 OLTP 输入的历史数据。它允许用户查看多维数据的不同摘要。使用 OLAP,您可以从大型数据库中提取信息并对其进行分析以制定决策。

  • OLAP 还允许用户执行复杂的查询以提取多维数据。在 OLTP 中,即使事务在中间失败,也不会损害数据完整性,因为用户使用 OLAP 系统从大型数据库中检索数据进行分析。只需用户再次触发查询并提取数据进行分析。

  • OLAP 中的事务较长,因此处理时间相对较长,需要较大的空间。与 OLTP 相比,OLAP 中的事务频率较低。甚至 OLAP 数据库中的表也可能没有被规范化。OLAP 的示例是查看财务报告或预算、营销管理、销售报告等。

对比

OLTP 和 OLAP 之间的主要区别

  • OLTP和OLAP的区别在于OLTP是在线交易系统,OLAP是在线数据检索和分析系统。
  • 在线事务数据成为 OLTP 的数据来源。但是,不同的 OLTP 数据库成为 OLAP 的数据源。
  • OLTP 的主要操作是插入、更新和删除,而 OLAP 的主要操作是提取多维数据进行分析。
  • OLTP 具有短而频繁的事务,而 OLAP 具有长且不频繁的事务。
  • 与 OLTP 相比,OLAP 事务的处理时间更长。
  • OLAP 查询相对于 OLTP 更为复杂。
  • OLTP 数据库中的表必须进行规范化(3NF),而 OLAP 数据库中的表可能未进行规范化。
  • 由于 OLTP 经常在数据库中执行事务,如果任何事务在中间失败,可能会损害数据的完整性,因此必须注意数据的完整性。虽然在 OLAP 中事务的频率较低,但它不会过多地担心数据完整性。

OLTP与OLAP的关系

  • 在底层数据处理层面,OLTP 以SQL增删改处理为主,OLAP以SQL查询操作为主。数据来源层面,OLTP 的数据来源就是它们前端的应用,就是B/S架构或者C/S架构的 B Browser 浏览器或者 C Client,就理解为用户在各种系统上录入数据就可以了。
  • OLAP的数据来源就是不同的 OLTP数据库,所以OLAP本身是不产生数据的,通过ETL从OLTP抽取数据到OLAP数据库即数据仓库中做整合清洗达到可分析的数据标准。
  • OLTP数据处理的时间相对较短,增、删、改操作,就像在页面上点击一个提交案例、下一步操作等等;但是OLAP数据处理的时间可能就会很长,比如一个大查询可能查询的数据量非常长,相对增删改时间周期会拉的更长一些,取决于OLAP数据结构的规范性以及返回数据量的大小。
  • OLTP 也有查询操作,但查询的操作都相对比较简单;OLAP 的查询相对可以很复杂;
  • OLTP系统在底层数据库的设计上通常采用3NF设计方式,避免数据冗余,很适合频繁的增删改操作;OLAP系统主要是面向分析型应用准备的,因此在底层数据库即数据仓库的设计上通常会采用反三范式的方式,比如Kimball 的维度建模方式,刻意的保留数据冗余,很适合分析查询操作。当然,在OLAP系统底层数据仓库的架构中也有采用3NF建模的,主要目的是为了统一业务数据标准,但真正面向分析服务的时候还是会在3NF的基础上再构建一套反三范式的Kimball星型模型或者雪花型模型的数据架构。
  • OLTP由于采用3NF建模,所以对数据的完整性要求很高,必须采用完整性约束。但是OLAP本身就不是面向业务交易信息的,不对业务过程负责,并且数据也不会频繁修改,所以是没有完整性约束这一说的。比如OLTP里面一个事务没有提交成功,或者失败了,事务是要回滚的。OLAP里面没有这种处理,跑不成功再重新跑一遍就可以了。