OLAP / OLTP

kyaa111 9月前 ⋅ 264 阅读

数据库系统可以在广义上分为

  • 联机事务处理(Online Transaction Process,OLTP)

  • 联机分析处理(Online Analyze Process,OLAP)

两种面向不同领域的数据库,OLAP数据库也被称为数据仓库。

从产品上看,有专门面向OLTP的数据库,例如MySQL、PostgreSQL、Oracle等

也有专门面向OLAP的数据库,例如Hive、Greenplum、HBase、ClickHouse等

主要区别就是 T (Transaction) 和 A (Analyze)

OLAPOLTP
用途数据仓库事务数据库
数据容量大, PB级小, GB级, 部分能达到TB级
事务能力弱/无
分析能力弱, 只能做简单分析
并发数
数据质量相对低
数据来源业务数据库业务系统

OLAP和OLTP设计原则

OLTP一般是基于三大范式进行数据库设计,所以查询时候会导致多表join关联查询,产生查询慢,不利于数据分析的问题。所以OLAP在设计时不是基于三大范式设计的,允许一定的冗余,基于数据仓库建模设计,为了更好的进行数据查询分析。
OLAP和OLTP的本质区别在于底层数据模型的不同。OLAP更适合使用低范式的数据表,而OLTP则更适合使用高范式的数据表。无论它们之间的功能是否越来越相似,只要其底层数据模型不同,那么它们之间的区别就永远存在,结构决定功能。

OLAP场景的关键特征

OLAP一般不直接产生数据,一般是存储ETL之后的数据和历史数据进行建模分析。关于数据仓库理论可以参考:数据中台和数据仓库设计

  1. 绝大多数是读请求
  2. 数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
  3. 已添加到数据库的数据不能修改。
  4. 对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
  5. 宽表,即每个表包含着大量的列
  6. 查询相对较少(通常每台服务器每秒查询数百次或更少)
  7. 对于简单查询,允许延迟大约50毫秒
  8. 列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
  9. 处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
  10. 事务不是必须的
  11. 对数据一致性要求低
  12. 每个查询有一个大表。除了他以外,其他的都很小。
  13. 查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中

OLTP场景特征

OLTP一般用作实时系统中,飞机订票、银行出纳、股票交易、超市销售、饭店前后管理等。

  1. 支持大量并发用户定期添加和修改数据。
  2. 反映随时变化的单位状态,但不保存其历史记录。
  3. 包含大量数据,其中包括用于验证事务的大量数据。
  4. 可以进行优化以对事务活动做出响应。
  5. 提供用于支持单位日常运营的技术基础结构。
  6. 个别事务能够很快地完成,并且只需访问相对较少的数据。
  7. 实时性要求高。
  8. 交易一般是确定的,所以OLTP是对确定性的数据进行存取。(比如存取款都有一个特定的金额)
  9. 并发性要求高并且严格的要求事务的完整、安全性。(比如这种情况:有可能你和你的家人同时在不同的银行取同一个帐号的款)。