OLTP VS OLAP
背景
在OLAP的选型上,陆陆续续有1年多了。做个总结。
OLTP
OLTP:On-Line Transaction Processing,联机(线上)事务处理。指处理事务型应用的场景,事务这个词的英文是 Transaction,其实就是交易(一般指金融交易)。这种场景有个最常见的业务,就是转账,从一个账户转到另一个账户。一般要求实时处理,对响应的速度要求很高,并且要保证事务的 ACID 特性。面向 OLTP 场景的数据库管理系统就叫做 OLTP DBMS。一般涉及大量的增删改操作。
OLTP 与 NSM(N-ary storage model)行存储: OLTP 的场景一般需要一次操作一个对象的多个属性,比如查询一个人的姓名、银行账号、余额等。而 NSM 这种将一个对象的多个属性连续存储的行式存储模型就很适合 OLTP 的场景了。同时 NSM 也适用于写密集场景,一个对象的写入只需要一次写磁盘就能完成。
传统的关系数据库都是面向 OLTP 场景的,如 Oracle 通常用在银行系统、医疗系统等对操作的响应速度要求很高的场景。
OLAP
OLAP:On-Line Analytical Processing,联机(线上)分析处理。指处理分析型应用的场景。进入大数据时代,数据多了,计算机计算能力增强,并出现了分布式存储、分布式计算等技术,人们开始对大量的数据有分析的需求了。这种分析型的场景一般需要查询大量的数据进行分析,对速度的要求没有 OLTP 高,每天晚上或每周做一次,慢慢分析就好了。一般涉及大量的查询操作,对数据的修改需求不高。
列存数据库等就是面向 OLAP 的,因此,列式存储在大数据时代这种分析型场景中火了一把,如数据仓库 HBase。
OLAP的12准则
- 准则1 OLAP模型必须提供多维概念视图
- 准则2 透明性准则
- 准则3 存取能力准则
- 准则4 稳定的报表能力
- 准则5 客户/服务器体系结构
- 准则6 维的等同性准则
- 准则7 动态的稀疏矩阵处理准则
- 准则8 多用户支持能力准则
- 准则9 非受限的跨维操作
- 准则10 直观的数据操纵
- 准则11 灵活的报表生成
- 准则12 不受限的维与聚集层次
OLAP场景的关键特征
- 大多数是读请求
- 数据总是以相当大的批(> 1000 rows)进行写入
- 不修改已添加的数据
- 每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
- 宽表,即每个表包含着大量的列
- 较少的查询(通常每台服务器每秒数百个查询或更少)
- 对于简单查询,允许延迟大约50毫秒
- 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
- 处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
- 事务不是必须的
- 对数据一致性要求低
- 每一个查询除了一个大表外都很小
- 查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中
场景示例:
- 市场营销:当 OLAP 用于营销时,它使营销分析师能够更多地了解他们的客户、哪些产品是有价值的、区域和季节性趋势等等。
- 医疗保健:医疗保健数据仓库使用 OLAP 可用于预测健康风险和结果、与保险公司共享信息并生成报告。
- 金融服务:公司首席财务官可以利用 OLAP 多维数据集为他们提供将数据转换为所需信息的方法,同时允许他们轻松生成定制财务报告。
OLAP分析的分类:ROLAP与MOLAP
- ROLAP(RelationalOLAP)
这是一种通过在RDMS后端服务和客户前端之间建立中间层的OLAP实现方式。通过RDMS来存储和管理数据仓库数据,而通过OLAP中间件来实现多维数据上的操作映射为标准关系操作。其优点在于可以利用RMDS中本身固有的一些功能,例如: 本质上来讲 “slicing and dicing”的操作等同于在SQL语句中添加“WHERE”子句。
- MOLAP(MultidimensionalOLAP)
这些服务器通过基于数据的多维存储引擎,支持数据的多维视图。能够将多维视图直接映射到数据立方体数组结构。其数据都存在多维数据立方体(multidimensional cube)中,以专有的格式存储。使用数据立方体的优点是能够对预计算的汇总数据进行快速索引,尤其是对”slicing and dicing”有着非常优秀的支持。
- HOLAP(HybridOLAP)混合型OLAP
HOLAP结合了ROLAP和MOALP技术,从而继承了ROLAP的伸缩性强和MOLAP快速计算的优点。例如HOLAP利用多维数据集技术来提高性能,而当需要详细数据时,HOALP可以从多维数据“钻取”到底层的RDMS中去获取数据。
名称 | 描述 | 细节数据存储位置 | 聚合后的数据存储位置 |
---|---|---|---|
ROLAP(Relational OLAP) | 基于关系数据库的OLAP实现 | 关系型数据库 | 关系型数据库 |
MOLAP(Multidimensional OLAP) | 基于多维数据组织的OLAP实现 | 数据立方体 | 数据立方体 |
HOLAP(Hybrid OLAP) | 基于混合数据组织的OLAP实现 | 关系型数据库 | 数据立方体 |
对比
联机分析处理(OLAP,On-line Analytical Processing),数据量大,DML少。使用数据仓库模板
联机事务处理(OLTP,On-line Transaction Processing),数据量少,DML频繁。使用一般用途或事务处理模板
OLTP与OLAP 不同的是,OLTP系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作,强调事务性。
OLAP系统则强调数据分析,强调SQL执行时长,强调磁盘I/O,强调分区。
总的来说,可以认为OLAP的产生是因为一些特性OLTP无法满足,所以一些OLTP异变了一些特性,变成了OLAP,OLAP可以看做是OLTP的一种延展,一个让OLTP产生的数据发现价值的过程。
OLAP数据库选型
常见的OLTP如,mysql、PostgreSQL、Oracle等,不需要多讲,但是OLAP随着这些年层出不穷,我们汇总选型一下,并看看他们的特点。
目前市面上主流的开源OLAP引擎包含不限于:Hive、Spark SQL、Presto、Kylin、Impala、Druid、Clickhouse、Greeplum等,可以说目前没有一个引擎能在数据量,灵活程度和性能上做到完美,用户需要根据自己的需求进行选型。
- Hive
- Spark SQ
- Presto
- Elasticsearch
- Impala
- Druid
- Clickhouse
- Greeplum
- Kylin
- Drios
- StarRocks
按数据量划分
按建模类型划分
1、ROLAP
Elasticsearch
solr
ClickHouse
Druid
GreenPlum
Drios
StarRocks
2、MOLAP
3、HOLAP