扫盲:OLTP和OLAP的区别

定义

OLTP是Online Transaction Processing的缩写,其中文含义为:联机事务处理;

OLAP是Online Analysis Processing的缩写,其中文含义为:联机分析处理。

上世纪60年代,关系数据库之父E.F.Codd提出了关系模型,造就了基于OLTP的传统关系型数据库的大发展;1993年,E.F.Codd认为传统OLTP已无法满足需求,又提出了多维数据库和多维分析的概念,即OLAP。

通过上述定义和图示,大家对OLTP和OLAP应该有了一些直观认识。一言以蔽之,二者均是有关数据处理的技术架构和标准,但侧重点不同,二者区别就如她们名称的区别一般,OLTP的核心在于事务、OLAP的核心在于分析。

场景和应用的区别

OLTP主要用来记录具体某类业务事件的发生,如交易行为,当行为产生后,数据库会记录这个事件是谁在什么时候什么地方做了什么事,这样的一行(或多行)数据会以(增删改)的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功,常见的业务系统如商场系统,ERP,客服系统,OA等系统都是基于OLTP开发的系统。我们常见的传统大型关系型数据库,包括PostgreSQL、MySQL、SQL Server、Oracle、DB2等,对OLTP的支持都是非常棒的。换言之,对OLTP的良好支持是传统关系型数据库的主要特色之一。

当业务发展到一定程度,积累了一些数据的时候,对过去发生的事情做一个总结分析的需求就会产生,这类需求往往需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,我们管这类场景就叫做OLAP。所以,借用合适的OLAP工具实现OLAP业务就显得尤为重要。当下比较知名的开源OLAP工具主要包括:Impala、Presto、Spark SQL、Drill、Hawq、Druid、Pinot、Kylin等,其中Apache Kylin,麒麟,开发团队主要由国人组成,速度很有优势,在国内的应用也比较广泛。

集中度不同

OLTP数据往往是一个业务系统一个数据库,因此会分散在不同的业务系统中。

OLAP数据仓库往往是夸多业务的,因此需要将不同的业务数据集中到一起进行统一综合的分析,这时候就需要根据业务分析需求做对应的数据清洗后存储在数据仓库中,然后由数据仓库来统一提供OLAP分析。所以我们常说OLTP是数据库的应用,OLAP是数据仓库的应用,两者主要的区别如下图。

总的来说,可以认为OLAP的产生是因为一些特性OLTP无法满足,所以一些OLTP异变了一些特性,变成了OLAP,OLAP可以看做是OLTP的一种延展,一个让OLTP产生的数据发现价值的过程。

相关推荐
AIgorithmGEEK7 小时前
MySQL 索引全解(下):建、查、删实战与知识速查表
数据库·mysql·b+树·索引
唠点键盘之外的10 小时前
26 向量数据库实战:从 0 搭一条能用的检索链路(pgvector + Spring AI)
数据库·人工智能·spring
云和恩墨10 小时前
数据库监控简史:监控不止于告警——从图表大爆发到健康管理闭环
数据库
ly768910 小时前
MongoDB 事务开销实测:快照隔离下的写冲突、重试与分片事务边界
数据库·mongodb·事务·分片集群·快照隔离·写冲突
豆角焖肉10 小时前
Spring AOP 自定义注解实现系统操作日志
数据库·自定义注解·springaop·操作日志·aop 切面
金伟API102411 小时前
不会写复杂SQL怎么办?
数据库·sql
执笔为剑12 小时前
2.1.2-1、V8R3迁移到V8R6-Oracle兼容特性
数据库
江湖有缘12 小时前
Docker实战 | 使用Docker部署rmoments社交平台
jvm·docker·oracle
geovindu12 小时前
sql:Search-Optimized SQL Queries using mysql 9.0
android·数据库·sql·mysql·数据库开发·数据库架构
for_ever_love__12 小时前
MySQL SELECT 与 WHERE 优化实战:可搜索条件、联合索引与执行计划
数据库·mysql·oracle·select·where·条件优化·查询优化技巧