1:OLAP和OLTP对比
数据库系统可以在广义上分为联机事务处理(Online Transaction Process,OLTP)和联机分析处理(Online Analyze Process,OLAP)两种面向不同领域的数据库,OLAP数据库也被称为数据仓库。从产品上看,有专门面向OLTP的数据库,例如MySQL、PostgreSQL、Oracle等,也有专门面向OLAP的数据库,例如Hive、Greenplum、HBase、ClickHouse等
OLAP和OLTP设计原则。OLTP一般是基于三大范式进行数据库设计,所以查询时候会导致多表join关联查询,产生查询慢,不利于数据分析的问题。所以OLAP在设计时不是基于三大范式设计的,允许一定的冗余,基于数据仓库建模设计,为了更好的进行数据查询分析。
OLAP和OLTP的本质区别在于底层数据模型的不同。OLAP更适合使用低范式的数据表,而OLTP则更适合使用高范式的数据表。无论它们之间的功能是否越来越相似,只要其底层数据模型不同,那么它们之间的区别就永远存在,结构决定功能。
2:OLAP场景的关键特征
OLAP一般不直接产生数据,一般是存储ETL之后的数据和历史数据进行建模分析。关于数据仓库理论可以参考:数据中台和数据仓库设计
1、绝大多数是读请求
2、数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。
3、已添加到数据库的数据不能修改。
4、对于读取,从数据库中提取相当多的行,但只提取列的一小部分。
5、宽表,即每个表包含着大量的列
6、查询相对较少(通常每台服务器每秒查询数百次或更少)
7、对于简单查询,允许延迟大约50毫秒
8、列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节)
9、处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行)
10、事务不是必须的
11、对数据一致性要求低
12、每个查询有一个大表。除了他以外,其他的都很小。
13、查询结果明显小于源数据。换句话说,数据经过过滤或聚合,因此结果适合于单个服务器的RAM中
3:OLTP场景特征
OLTP一般用作实时系统中,飞机订票、银行出纳、股票交易、超市销售、饭店前后管理等。
1、支持大量并发用户定期添加和修改数据。
2、反映随时变化的单位状态,但不保存其历史记录。
3、包含大量数据,其中包括用于验证事务的大量数据。
4、可以进行优化以对事务活动做出响应。
5、提供用于支持单位日常运营的技术基础结构。
6、个别事务能够很快地完成,并且只需访问相对较少的数据。
7、实时性要求高。
8、交易一般是确定的,所以OLTP是对确定性的数据进行存取。(比如存取款都有一个特定的金额)
9、并发性要求高并且严格的要求事务的完整、安全性。(比如这种情况:有可能你和你的家人同时在不同的银行取同一个帐号的款)。