OLAP与OLTP的区别(详解)

整理不易,转发请注明出处,请勿直接剽窃!
点赞、关注、不迷路!

摘要: OLTP、OLAP,数仓建模

现代工程界普遍认为,数据库系统可以在广义上分为联机事务处理(Online Transaction Process,OLTP)和联机分析处理(Online Analyze Process,OLAP)两种面向不同领域的数据库,OLAP数据库也被称为数据仓库。

制作者五块兰州拉面OLAPOLTP
用途数据仓库事务数据库
数据容量大,PB级小,GB级
事务能力弱或无
数据模型星型、雪花、星座型实体-关系模型(ER)
建模方式维度建模范式建模
建模特点从业务出发开发快全面梳理业务和数据、周期长、难度高
数据库举例Hive、HBase、ClickHouseMySQL、PostgreSQL、Oracle
数据时效当前和历史数据当前数据
数据操作不支持修改、删除增删改查
分析能力
操作粒度多表记录级
并发数
性能要求性能要求较低高吞吐量、低延时
数据质量相对低
数据来源各业务数据库各业务系统
业务类型多维分析、统计报告账户查询、转账等
业务目标数据存储、质量提升事务处理的并发、安全、高效

三范式详解
维度建模

范式建模

OLTP数据库在进行数据库设计时使用实体-关系模型(Entity-Relationship Model,E-R Model,简称ER模型)。在ER模型的建模过程中有一个非常重要的规范化过程。规范化的目的在于通过一系列手段使得数据库设计符合数据规范化(Normal Form,NF)的原则。
规范化是将数据表从低范式变成高范式的过程

范式建模意义

一般要求在设计业务数据表时,需要至少设计到第三范式避免出现数据冗余。冗余不仅增加了数据大小,更重要的是,冗余的存在会影响数据库事务,降低数据库事务性能。
表1-6展示了一个不合格的表设计,请读者关注最后两列,很明显这是不满足第三范式的一种设计。表中的最后一列“需要权限”用于设置数据权限,表格中的数据意味着第一行和第三行需要admin权限才能查看。正常情况下没有问题,如果随着业务的变化,需要将授权级别为“2 – 非公开”的权限改为admin和manager都有权限查看。对于这种需求,就需要进行全表扫描,将数据表中所有的授权级别为2的数据全部进行修改,这会严重降低数据库性能。
在这里插入图片描述数据库规范化的意义在于通过规范化降低冗余,提高数据库事务性能。正是基于这个考虑,在数据库表设计中,会要求将对数据表进行规范化。

范式建模的局限

规范化的数据表能够降低冗余,进而提高事务性能。同时,规范化的数据表无法支撑分析
统计分析时,单张表无法完成操作,需要多表进行连接(join)操作,得到的新表才能用于分析。而在绝大多数数据库系统中,join操作的过程相对于查询来说比较慢

数仓建模本质

高范式的表适合事务处理,而低范式的表适合分析处理。从中我们可以得出数仓建模的本质:逆规范化(反范式)。数仓建模本质上就是一个逆规范化的过程,将来自原始业务数据库的规范化数据还原为低范式的过程,从而用于快速分析。
在实际建模过程中,数仓经常提到的宽表本质上就是一个低范式的表。宽表将所有相关联的列全部都整合到一张表中,用于未来的分析,这样做的好处就是所有相关信息都在这张宽表中,理论上在进行分析时就不需要进行任何join操作了,因为可以直接进行相关的分析,所以提高了分析速度。这样做的缺点就是数据冗余,从而难以支持事务能力
大部分数据仓库都是基于低范式数据集进行优化的,读者在使用OLAP引擎时一定要时刻记住这一点,避免将OLTP数据库中的原始高范式数据直接用于OLAP分析,否则分析效果可能会差强人意。而应该通过逆规范化的过程将高范式数据集还原为低范式数据集,再由OLAP进行分析。

数据仓库整体架构梳理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值