OLTP、OLAP和HTAP的区别

0    79    3

Tags:

👉 本文共约10675个字,系统预计阅读时间或需41分钟。

OLTP、OLAP、HTAP简介

现代工程界普遍认为,数据库系统可以在广义上分为联机事务处理(Online Transaction Process,OLTP)和联机分析处理(Online Analyze Process,OLAP)两种面向不同领域的数据库,OLAP数据库也被称为数据仓库。从产品上看,有专门面向OLTP的数据库,例如MySQL、PostgreSQL、Oracle等,也有专门面向OLAP的数据库,例如Hive、Greenplum、HBase、ClickHouse等。还有一种尝试统一两大类型的HATP(Hybrid Transactional/Analytical Processing)系统,例如TiDB、OceanBase等。

OLTP

OLTP是传统的关系型数据库的主要应用,即记录实时的增、删、改,主要是执行基本的、日常的事务处理,例如,在银行存取一笔款,就是一个事务交易。OLTP系统强调数据库处理效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作。一般情况下,OLTP系统数据量少,DML操作比较频繁,并行事务处理多,但是一般都比较短。OLTP表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主。评估其系统的时候,一般看其每秒执行的事务数以及SQL执行的数量。在OLTP系统中,单个数据库每秒处理的事务数往往超过几百个,或者是几千个,SELECT语句的执行量每秒几千甚至几万个。典型的OLTP系统有电子商务系统、银行、证券等,例如,美国eBay的业务数据库,就是很典型的OLTP数据库。在Oracle中创建OLTP系统时,使用一般用途或事务处理(General Purpose or Transaction Processing)模板。

具体而言,OLTP的特点一般有以下几点:

(1)实时性要求高。

(2)数据量不是很大。

(3)交易一般是确定的,所以,OLTP是对确定性的数据进行存取,例如存取款都有一个特定的金额。

(4)并发性要求高,并且有严格的事务完整性、安全性。例如,有可能你和你的家人同时在不同的银行取同一个帐号的存款。

OLAP

OLAP的概念最早是由关系型数据库之父E.F.Codd于1993年提出的,他认为OLTP已不能满足终端用户对数据库查询分析的需要,SQL对大型数据库进行的简单查询也不能满足终端用户分析的要求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。OLAP是DSS(Decision Support System,决策支持系统)的一部分,是数据仓库的核心部分。DSS是辅助决策者通过数据、模型和知识,以人机交互方式进行半结构化或非结构化决策的计算机应用系统。DSS是管理信息系统(Management Information System,MIS)向更高一级发展而产生的先进信息管理系统,它为决策者提供分析问题、建立模型、模拟决策过程和方案的环境,调用各种信息资源和分析工具,帮助决策者提高决策水平和质量。所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能、决策支持等重要的决策信息;数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。数据量大,DML少。典型的应用就是复杂的动态报表系统。在Oracle中创建OLAP系统时,使用数据仓库(Data Warehouse)模板。

具体而言,OLAP的特点一般有以下几点:

(1)实时性要求不是很高,很多应用都是每天晚上更新一次数据。

(2)数据量大,因为OLAP支持的是动态查询,所以,用户需要统计很多数据以后才能得到想要知道的信息,所以,OLAP处理的数据量很大。

(3)因为重点在于决策支持,所以,OLAP查询一般是动态的,也就是说允许用户随时提出查询的要求。于是在OLAP中通过一个重要概念“维”来搭建一个动态查询的平台(或技术),供用户自己去决定需要知道什么信息。

HTAP

同时维护 OLTP 和 OLAP 两套系统,不仅会造成数据冗余存储,而且成倍增加了系统的运维成本。同时,由于 OLAP 系统的数据依赖于 ETL 通过数据复制功能从 OLTP 系统同步数据,因此时效性受到了很大的影响。于是业界提出了在线事务处理 / 在线分析处理(Hybrid Transactional/Analytical Processing,HTAP)的概念。从单个数据库的能力上看,HTAP 确实是未来的趋势,即 OLTP 和 OLAP 需要在一定程度上进行融合。早期的 Oracle、DB2 数据库都是同时具有 OLTP 和 OLAP 功能的。

从Hadoop时代开始,为了提高OLAP的性能,衍生出了MapReduce和Hive。为了提高OLTP的性能,衍生出了HBase,从此OLTP和OLAP分道扬镳。从实际应用的角度看,Hive广泛用于数据仓库的批处理平台,但是完全不支持OLTP功能,在某些场景下也是很不方便的,而HBase则无法满足批量查询要求。从OLTP和OLAP的能力维度评价各主流数据库如图1-9所示。

OLTP、OLAP和HTAP的区别

近年来,虽然实时数仓非常火热,但是实现起来只是差强人意。如果有一款用于批处理的OLAP数据平台,同时又具备较好的OLTP性能,可以满足当日数据通过Kafka源源不断地写入,并且高效地被前端应用查询到,那么我们是不是就能很好地实现流批一体、流批结合了呢。从实际情况来看,还没有这样一款成熟并且广泛应用的数据库出现。这种应用场景要求数据平台以OLAP为主,兼顾OLTP的需求,目前做得比较好的有Doris、Greenplum、Impala+Kudu组合。大型交易数据也会有一些批量查询需求,从目前的情况看,这类需求并没有被很好地满足,也是一个需要技术突破的地方。目前大多数号称已经是HTAP数据库的厂商都是在满足OLTP性能的基础上,增强OLAP查询能力。例如腾讯的TBase、PingCAP的TiDB、SAP的HANA、阿里的OceanBase等。

OceanBase是由蚂蚁金服、阿里巴巴完全自主研发的金融级分布式关系型数据库,始创于2010年。OceanBase具有数据强一致、高可用、高性能、在线扩展、高度兼容SQL标准和主流关系数据库、低成本等特点。OceanBase至今已成功应用于支付宝全部核心业务:交易、支付、会员、账务等系统以及阿里巴巴淘宝收藏夹、P4P广告报表等。除在蚂蚁金服和阿里巴巴业务系统中广泛应用外,从2017年开始,OceanBase开始服务外部客户。值得称赞的是,2020年5月,OceanBase以7.07亿的TPM-C评测成绩再次夺冠,将自己之前创造的纪录提升了近11倍。2021年5月,OceanBase再次以1526万QphH的性能总分夺冠数据分析型基准测试(TPC-H)30000GB级。这意味着,OceanBase成为唯一在OLTP和OLAP两个领域性能测试中都获得第一的中国自研数据库。

OLAP和OLTP的区别对比表

表 OLAP和OLTP的区别

区分维度OLTPOLAP
用户操作人员、低级管理人员决策人员、高级管理人员
功能用途日常操作处理,事务数据库分析决策,数据仓库
DB设计面向应用,事务驱动面向主题,面向分析,分析驱动
数据原始的、当前的、最新细节的、二维的分立的、实时更新的历史的、聚集的、多维的、集成的、统一的、导出的、综合性的、提炼性的、不实时更新但周期性刷新
存取读或写数十条记录,一次处理的数据量小读上百万条记录,一次处理的数据量大
工作单位简单的事务,DML操作比较频繁,并行事务处理多复杂的查询,数据量大,DML操作少
用户数上千个上百个
DB大小(数据容量)100MB-100GB,小,GB级,部分能达到TB级100GB-1TB,大,PB级
时间要求具有实时性对时间要求不严格
主要应用数据库数据仓库
事务能力弱(或无)
分析能力弱,只能做简单的分析
并发数
数据质量相对低
数据来源各业务系统各业务数据库

上表列出了OLAP和OLTP的一些对比。

近年来,随着技术的发展,OLAP和OLTP之间的界限也在不断模糊,几年前OLAP数据库都不支持事务,近几年已经出现了一些支持简单事务的OLAP引擎,ClickHouse也将简单的事务支持列入Roadmap。另外,随着分布式技术的发展,部分OLTP数据库也能处理更大的数据,甚至厂商推出的HATP数据库,从而直接打破了两者的界限。

OLAP和OLTP在功能上越来越趋于一致,使得在有些场景下OLAP和OLTP可以相互取代,这是否意味着原有分类方法失效了呢?是否未来就不再需要数仓或者不再需要事务数据库?ClickHouse的极致性能优化能否推动OLAP和OLTP融合?回答这些问题需要理清OLAP和OLTP分类的本质。

OLTP和OLAP的底层数据模型

OLAP和OLTP的本质区别在于底层数据模型的不同。OLAP更适合使用低范式的数据表,而OLTP则更适合使用高范式的数据表。无论它们之间的功能是否越来越相似,只要其底层数据模型不同,那么它们之间的区别就永远存在,结构决定功能。

ClickHouse是一个面向OLAP的数仓,很多的优化都是面向低范式数据模型的,并没有对高范式数据模型进行很好的优化。甚至在有些场景下,ClickHouse的join能力会成为整个系统的瓶颈。

ClickHouse更适合处理低范式数据集,特别是第零范式的数据集。ClickHouse对第零范式的数据集进行了比较多的优化。

数据三范式

OLTP数据库在进行数据库设计时使用实体-关系模型(Entity-Relationship Model,E-R Model,简称ER模型)。在ER模型的建模过程中有一个非常重要的规范化过程。规范化的目的在于通过一系列手段使得数据库设计符合数据规范化(Normal Form,NF)的原则。简单地说,规范化是将数据表从低范式变成高范式的过程。一般情况下,在OLTP中通常将数据规范化为第三范式(3NF)。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
OLTP、OLAP和HTAP的区别后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部