【记录】OLAP和OLTP

news/2024/10/30 14:15:03/

下面为提炼的重点内容,全部内容参考:OLAP和OLTP

OLAP和OLTP的不同设计要求

对于OLTP系统和OLAP系统有哪些不同的要求?要说清楚这个,首先需要分析一下这两个系统的关键特征。

对于OLTP系统来说,最重要的事情是:

  1. 使得大量的人能够同时执行数据库事务操作,QPS至关重要。
  2. 上面涉及到的事务操作应该非常简单,且一次请求只运行涉及一条或几条记录操作。
  3. OLTP系统必须确保整个交易链(涉及多个交易)被正确记录。 在OLTP系统中,我们将花费大量的时间来确保数据在我们的系统中是一致的。例如,我们不能接受这样的事实:客户已经把钱付给了银行,但订单却没有创建。付款要么与订单创建一起失败,要么与订单创建一起成功。
  4. 要求日常业务能得到闪电般的响应速度。

对于OLAP系统,有五个关键特征:

  1. 以商业分析为重点的多维数据模型。 这个模型应该足够大,以包含所有的历史数据,并且应该足够宽,以包含所有经常使用的字段。
  2. 以商业分析为重点的指标字段。 OLAP提供大多数指标应该来自于业务团队或Bl团队本身,而不是来自于交易记录的需要。例如,在OLTP系统中,我们可能不需要记录每个客户的第一次交易时间,但在OLAP系统中,这将是非常有用和重要的。
  3. 在所有情况下为所有用户提供一致的数据和计算。 OLAP系统从许多数据源获取数据,并专注于使同一查询的结果在所有情况下对所有用户一致。然而,OLTP不太关心不同条件下的查询一致性,而是更关心结果的准确性。例如,不同的人可以在不同的OLTP系统中查询"共有多少个菜品",而很可能他们每个人都会得到不同的结果。但是OLAP系统应该能够告诉他们每个人完全相同的答案,这个答案可能是复杂点的,类似于"在点菜系统中有20个,在财务系统中有13个",或者简单点,类似于"13个"。但是无论怎么查,他们都应该得到一样的答案。
  4. 更细化的权限管理。 OLAP系统比OLTP系统更关注权限管理。OLTP系统更倾向于使用功能级别的权限控制,也就是说,用户要么能使用这个功能,要么不能使用。然而在OLAP系统中,我们常常需要在数据表的行级和列级的基础上控制访问。
  5. 大数据量下的高速分析。 用户一般会在OLAP系统做复杂的查询,但这并不意味着用户会更有耐心。也许他们可以比那些OLTP系统的客户等得更久一点,但查询的复杂性和数据量也明显更高。不管是通过预聚合还是通过大规模的并行处理,OLAP系统应该始终保证用户能够尽快获得结果。

因此 ,在产品设计方面,OLTP支持的产品最终是交易处理系统,并且需要更多的考虑如何确保流畅的用户体验,以及如何吸引用户尽可能长时间的留在产品上。产品经理主要从功能层面考虑一致性问题,希望确保所有功能总能提供一致的服务。

然而,OLAP支持的产品需要更多地考虑如何控制访问,如何设计与其他实时系统的数据交互,如何在有一些突发事情需要处理时引导和提醒用户。这是因为OLAP支持的产品是分析处理系统,是被用来支持及时的,复杂的决策。

但这并不意味着OLTP系统设计完全不用花时间在访问控制或数据模型设计上。OLAP系统设计完全不花时间在用户体验和功能上,只是时间的分配比重不同。实际上,对于OLAP产品,如仪表盘和实时监控器,数据产品经理们也花了大量的时间来考虑如何使数据被用户更好地理解——因为OLTP产品更具有不可替代性,用户放弃一个设计不好的OLAP产品甚至比放弃一个OLTP产品来的更快。

OLAP的可视化

我知道这一切听起来很合理,但是仍然很难想象。

试试看将OLAP的数据表进行可视化,这样我们就可以更直观的理解OLAP数据模型中发生的事情。

请添加图片描述
OLAP立方体从各种上游中获取数据,而且很可能是实时系统。我们把它们整合起来,重新组织成一种完全不同的数据格式,我们把这种格式称为"OLAP"格式。

你可以看到,在关系数据库中,基本上是OLTP系统中的数据库,所有的东西都被隔离并且存储在不同的表中,这样,当你在事务性的基础上写进或者读出单行记录时,你可以达到最高的效率。

在游标,我们可以看到OLAP数据模型。当然,现实生活中的OLAP立方体要比这个复杂得多,但原理都是相同的。立方体的长度、高度和宽度是三个业务维度。这三个业务维度也可以根据不同的值进行分析下钻,或者根据其自身的层次结构进行汇总。

例如,如果你想检查第一季度通过航空运输从非洲发出的包裹数量。OLAP数据模型中你可以简单地检查左上角的那个小立方体。但在关系型数据库中,这将是异常噩梦。你至少需要连接三个表。当我们的分析越复杂,OLAP立方体就越有优势。就像如果问题是"与第二季度相比,从澳大利亚通过航空路线发出的包裹的增长情况如何?",基于OLTP表的设计将非常麻烦,但在立方体中就容易多了,这就是OLAP数据模型的魔力。

小结:什么时候使用OLAP

读者可能已经注意到,我们已经提到了OLAP系统比OLTP系统更适合的几个领域,但我们在这里重新总结一下。

如果你正在解决的问题涉及到以下任意一个方面,你可能需要一个OLAP解决方案。

1.如果你的应用程序包含相当敏感的数据和信息。 如果你的应用程序包含敏感的数据,并且计划分局不同的用户工作和不同的场景暴露给他们。

2.如果你的应用与历史数据高度相关, 并试图根据OLTP系统中不存在的指标来建立用户的洞察力。

3.如果与允许用户在当下实现事情或自动化交易过程相比,你的应用程序更关心的是帮助人们在未来做出复杂的决策。


http://www.ppmy.cn/news/107910.html

相关文章

PMP-识别相关方的重要性

一、为什么要识别相关方 每个项目都有相关方,他们会受项目的积极或消极影响,或者能对项目施加积极或消极的影响。有些相关方影响项目工作或成果的能力有限,而有些相关方可能对项目及其期望成果有重大影响。项目经理和团队正确识别并合理引导所…

spring boot 单元测试JUnit5使用断言Assertions和假定Assumptions、嵌套、参数测试

spring boot 单元测试JUnit5使用断言Assertions和假定Assumptions、嵌套、参数测试 本文基于spirng boot 2.7.11, 大家注意自己的版本 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖 源码地址&am…

知识变现海哥:知识变现从入门到实操,缺的不是知识,而是知识变现的能力。

知识只能改变学历,知识变现才能改变命运。通过研究知识变现的路径,无论市文案工作者还是声音工作者我们能看到的微信生态圈,抖音类视频生态,百度等搜索系生态圈,喜马拉雅FW,荔枝等音频生态都是很好的知识变…

如何在 Alpine Linux 上启用或禁用防火墙?

防火墙是计算机网络安全的重要组成部分,它用于保护计算机和网络免受未经授权的访问和恶意攻击。Alpine Linux 是一种轻量级的 Linux 发行版,常用于构建容器化应用和嵌入式系统。本文将详细介绍如何在 Alpine Linux 上启用或禁用防火墙。步骤 1&#xff1…

Qt(C++)使用QChart静态显示3个设备的温度变化曲线

一、QChart介绍 QChart模块是Qt Charts库的基础,提供了用于创建和显示各种类型图表的类和接口。Qt Charts库是一个功能丰富、易于使用的数据可视化工具库,可以帮助开发者在应用程序中添加漂亮而又交互性强的图表。 QChart模块主要包括以下类: QChart:表示一个基本的图表容…

RocketMQ 多级存储设计与实现

作者:张森泽 随着 RocketMQ 5.1.0 的正式发布,多级存储作为 RocketMQ 一个新的独立模块到达了 Technical Preview 里程碑:允许用户将消息从本地磁盘卸载到其他更便宜的存储介质,可以用较低的成本延长消息保留时间。本文详细介绍 …

ORA-01555

ORA-01555 rollback records needed by a reader for consistent read are overwritten by other writers 回滚数据时被其他事务覆写 从应用角度来看ORA-015551.查询执行时间太长。首先是优化查询,然后考虑在数据块不繁忙的时候运行,最后考虑加大回滚段…

voc xml 转 coco json

# -*- coding: utf-8 -*- # !/usr/bin/env pythonimport os import json from tqdm import tqdm from imutils import paths import xml.etree.ElementTree as ETdef xml2coco(name_id, xml_dir, json_file):# COCO JSON 文件的初始化数据结构coco_dict {"images": …