正文
数据库从0到0.1 (二): OLTP VS OLAP VS HTAP
作者: 康凯森
日期: 2018-05-27
分类:
数据库
OLTP是Online Transaction Processing的简称;OLAP是OnLine Analytical Processing的简称;HTAP是Hybrid Transactional/Analytical Processing的简称。Transaction是指形成一个逻辑单元,不可分割的一组读,写操作;Online一般指查询延迟在秒级或毫秒级,可以实现交互式查询。
OLTP的查询一般只会访问少量的记录,且大多时候都会利用索引。在线的面向终端用户直接使用的Web应用:金融,博客,评论,电商等系统的查询都是OLTP查询,比如最常见的基于主键的CRUD操作。
OLAP的查询一般需要Scan大量数据,大多时候只访问部分列,聚合的需求(Sum,Count,Max,Min等)会多于明细的需求(查询原始的明细数据)。 OLAP的典型查询一般像:现在各种应用在年末会发布的大数据分析和统计应用,比如2017豆瓣读书报告,2017豆瓣读书榜单,网易云音乐2017听歌报告; OLAP在企业中的一个重要应用就是BI分析,比如2017年最畅销的手机品牌Top5;哪类人群最喜欢小米或华为手机等等。
《Designing-Data-Intensive-Applications》一书指出的OLTP和OLAP的主要区别如下:
在CMU-CS 15-415的课程中对OLAP和OLTP这样介绍:
在《An Overview of Data Warehousing and OLAP Technology》论文中对OLAP和OLTP这样介绍:
OLTP的特点:
-
专门用来做日常的,基本的操作
-
任务由短的,原子的,隔离的事务组成
-
处理的数据量在G级别
-
重视一致性和可恢复性
-
事务的吞吐量是关键性能指标
-
最小化并发冲突
OLAP的特点:
-
专门用来做决策支持
-
历史的,总结的,统一的数据比具体的,独立的数据更重要
-
侧重于查询
-
查询吞吐量和相应时间是关键性能指标
通过前面对OLTP和OLAP特点的介绍,大家对OLTP和OLAP应该有了感性的认识。
最开始的时候,数据量比较小,所以数据库可以用来同时做OLTP和OLAP查询的,比如Mysql,如果数据比较小的话,Mysql的OLAP查询性能也是可以满足需求的。但是随着数据量越来越大,大概在1990年代,业界开始用单独的数据库来满足OLAP需求,并把这种专门满足OLAP需求的数据库称之为数据仓库(Data Warehousing)。这样做的原因是为了保证在线OLTP业务的稳定性,不让复杂的OLAP查询线上业务的稳定性和性能。
Data Warehousing是所有决策支持技术的集合,目标是让行政管理人员,分析人员做出更好,更快的决策;Data Warehousing是主题相关的,完整的,时间变化的,稳定的数据集合,被用来作为组织制定决策的主要依据。Data Warehousing一般是公司各个OLTP系统数据的只读Copy, 数据一般会从各个OLTP数据库中抽取(Extract)出来,进行数据清理,并转换(Transform)为对OLAP更友好的数据格式,最终导入(Load)进Data Warehousing中。
这就是所谓的Extract–Transform–Load (ETL)过程,下图是个示例。 目前业界使用最广泛的Data Warehousing应该都是基于Hive构建的。