数据处理OLTP与OLAP的概念

在系统软件出现的初期,数据通常被保存在单个文件中进行管理,但随着业务的不断发展与系统数据处理逻辑的不断复杂,关系型数据库成为了主流的数据管理系统,例如Oracle、Mysql等,随后又出现了各式各样数据管理的解决方案,例如Elasticsearch、Redis、HBase等。然而,无论数据库管理系统如何更新与发展,涉及数据处理的核心术语与概念永远离不开这两个名词,即OLTP与OLAP。

===========================================================

首先我们先对OLTP和OLAP做个简单的介绍和比较

 

介绍:

OLTP,全称on-line transaction processing,即联机事务处理,是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易,强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作。

OLAP,全称on-Line Analytical Processing,联机分析处理,是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果,强调数据分析,强调SQL执行时长,强调磁盘I/O,强调分区等。

比较:

 

OLTP

OLAP

用户

操作人员

决策人员

功能

操作处理

分析决策

设计

面向业务

面向主题

存取

读/写数十条

读百万条

性能

较高

较低

事务

支持

不支持

体量

万级

亿级

 

 

数据处理OLTP与OLAP的概念

===========================================================

接着来深入的了解一下它们的特性和使用场景

 

OLTP:

是一种以事务为核心的作业方式,一次的作业过程通常会涉及在数据库中执行插入、更新及删除的操作,但是操作的数据量比较小,可以即时地处理输入的数据,及时地响应,经常也被称为实时系统。典型的案例有用户在线转账、ATM交易、账单查询等。

数据处理OLTP与OLAP的概念

特点:

  1. 多用户、高并发、响应快
  2. 事务性约束,过程数据量较小
  3. 并发处理严格遵循ACID要求

 

技术选型:

OLTP通常又分为关系型和非关系型数据库2种类型

 

关系型数据库常见的有Oracle、Mysql、PostgreSQL等,通常用于数据模型固定、结构化数据、复杂事务处理的场景,具有严格的ACID约束原则;

 

非关系型数据库常见的有Redis、MongoDB、Elasticsearch、Neo4j等,强项在于非结构化数据的处理,例如Redis适合K/V数据,MongoDB适合文档数据、Elasticsearch适合搜索数据、Neo4j适合图数据。

 

注:非关系型数据库具有较强的横向扩展性,服务节点可以动态扩展,保持服务的有效性。但是在复杂事务处理方面,表现不如关系型数据库。

 

OLAP:

是一种通过多维分析进行数据分析提供智能决策的技术,基于数据仓库,与商务智能、数据挖掘联系紧密,提供对数据不同视角的分析与查看,重点在于分析与报告,不在于实时在线业务的处理。典型的应用场景有销售报告、市场趋势预测等。

数据处理OLTP与OLAP的概念

特点:

1)数据查询量及存储量大

2)没有事务性约束,但计算相对复杂

3)数据更新并不频繁,不用严格遵循ACID要求

4)不面向具体的业务处理,而面向业务分析与挖掘

 

技术选型:

OLAP通常又分为MOLAP、ROLAP和HOLAP 3种类型

 

MOLAP常见的有Kylin,它会对原始数据进行预计算得到用户可能需要的所有结果,将其存储到优化过的多维数组存储中。

优势:

查询时无需进行复杂计算,且以数组形式可以进行高效的免索引数据访问,用户发起的查询均能够稳定地快速响应,此类结果集是高度结构化的,可以进行压缩/编码来减少存储占用空间。

劣势:

因为需要进行预计算,需要花去很多时间,每次写入增量数据后均要进行全量预计算,需要支持仅对增量数据进行迭代计算,如果业务发生需求变更,原有的实例就无法再次使用,只能重新进行建模和预计算。

 

ROLAP常见的有ClickHouse、Spark,它无需进行预计算,直接在构成多维数据模型的事实表和维度表上进行计算。

优势:

增量数据导入后,也无需进行重新计算,用户有新的查询需求时只需写好正确的SQL语句既能完成获取所需的结果。

劣势:

在数据体量巨大的场景下,用户提交SQL后,获取查询结果所需的时间无法准确预知,可能秒回,也可能需要花费数十分钟甚至数小时。

 

HOLAP其实是想将MOLAP和ROLAP的优点进行互补,H表示混合型(Hybrid),即对于查询频繁而稳定但又耗时的那些SQL,通过预计算来提速;对于较快的查询、发生次数较少或新的查询需求,像ROLAP一样直接通过SQL操作事实表和维度表,但至今还没有开源的产品出现,但相信未来HOLAP可能会得到进一步发展,并获得更大规模的使用。

 

===========================================================

总结:通过以上的介绍可以发现,不管是OLTP还是OLAP,没有一个数据处理系统是能够满足各种场景的需求的,因此我们需要结合不同的业务场景来选择适合的数据处理技术,并从规模、性能、灵活这三个方面根据系统设计进行取舍。