📅 2025年2月6日
🏆 OLAP 和 OLTP
联机分析处理 (OLAP
) 系统和联机事务处理 (OLTP
) 都是存储和分析业务数据的数据处理系统,这两个系统都可以存储来自不同服务的数据,比如电商、聊天等,但是 OLAP
可以对数据进行合并和分组,适合分析,与之相反 OLTP
则注重于数据的安全事务数据存储具有极高的可靠性,
OLTP
由于有极高可靠性因此可以作为 OLAP
的数据来源
1️⃣ 两者的相似之处
联系分析处理 (OLAP
) 系统和联机事务处理 (OLTP
) 系统都是用于存储和处理大量数据的数据库管理系统。它们都需要高效可靠的 IT 基础设施才能平稳运行。甚至可以同时使用它们来查询现有数据或存储新数据。两者都支持组织中数据驱动的决策。比如 mysql
和 clickhouse
都支数据存储和查询
大多数公司同时使用 OLTP
和 OLAP
系统来满足其商业智能需求。但是,OLAP
和 OLTP
的数据管理方法和用途有很大不同
2️⃣ 两者的区别
联机分析处理 (OLAP
) 系统的主要用途是分析聚合数据,而联机事务处理 (OLTP
) 系统的主要用途是处理数据库事务。
一般情况下可以使用使用 OLAP
系统来生成报告、执行复杂的数据分析和确定趋势。 OLTP
系统则来处理存储订单、更新库存和管理客户账户数据等数据
主要区别如下:
⭕️ 数据格式化的区别
⭐️ OLAP (On-line Analytical Processing)
OLAP
系统使用多维数据模型,让您可以从不同的角度查看相同的数据。OLAP
数据库以多维数据集格式存储数据,其中每个维度代表不同的数据属性。多维数据集中的每个单元格代表维度交叉点的一个值或度量。
OLAP
的多维数据模型可以形象地理解为一种将数据组织成"数据魔方"的结构
核心构成要素
- 维度:观察数据的视角(如时间、地区、产品)
- 度量:被分析的数值指标(如销售额、库存量)
- 层次结构:维度内部的细化层级(时间:年→季度→月→日)
- 粒度:数据详细程度的控制(按天统计 vs 按月统计)
数据组织方式
采用星型/雪花型架构:
- 中央事实表存储度量值(如销售记录)
- 环绕的维度表存储属性(产品信息、门店信息等)
- 通过外键建立多维关联
多角度分析的实现机制
-
旋转(Pivot):切换行列维度布局
原始视图: 旋转后: 地区 | 产品销售额 产品 | 地区销售额 ------------------------------- 北京 | 手机 ¥1M 手机 | 北京 ¥1M 上海 | 手机 ¥800k 上海 ¥800k
-
切片/切块(Slice & Dice):
- 切片:固定某个维度值(只看"华东地区"数据)
- 切块:选择维度范围(2023年Q2-Q4的数据)
-
钻取(Drill):
- 上卷(Roll-up):从"月视图"升到"季度视图"
- 下钻(Drill-down):从"省级"细看到"市级"
-
跨维度计算:
支持创建计算度量(如利润率=利润/销售额),可应用于任意维度组合
技术实现特点
- 预聚合机制:提前计算常用维度的聚合结果(如各产品季销售额)
- 位图索引:快速定位维度组合对应的数据
- 内存计算:支持实时多维运算
- 稀疏数据处理:高效存储非连续维度组合
实际应用场景
- 零售分析:同时按时间(促销周期)、空间(门店位置)、产品(品类)分析销售趋势
- 财务分析:从组织架构(部门→事业部→集团)、会计科目(收入→主营收入)、时间(财年→季度)多维度透视
- 用户行为分析:结合设备类型、地域分布、访问时段分析转化率
初始视图:年度销售额(产品维度 × 地区维度)
| 华东 | 华北 | 华南
--------|--------|--------|--------
手机 | ¥5M | ¥3M | ¥4M
笔记本 | ¥8M | ¥2M | ¥6M
→ 下钻时间维度到季度:
Q1销售额 | 手机 | 华东 → ¥1.2M
Q2销售额 | 笔记本 | 华南 → ¥1.8M
→ 添加促销活动维度:
非促销期销售额 vs 618大促期间销售额
这种结构通过将离散的业务数据转化为连续的维度空间,使得分析人员可以像操作真实立方体一样自由旋转、切割数据,发现不同维度组合下的业务规律。其本质是通过空间换时间的策略,将复杂的关联查询转化为预先结构化的坐标访问,从而支撑实时多维分析
⭐️ OLTP(On-line Transaction Processing)
相比之下,OLTP
系统是单维的,只关注一个数据方面。它们使用关系数据库将数据组织成表。表中的每一行代表一个实体实例,每列代表一个实体属性;
OLTP
(在线事务处理)系统通常被设计为处理日常事务,强调高并发性和实时性,因此它们主要关注单个数据方面,以确保高效的事务处理能力。这种设计使得 OLTP
系统在处理复杂查询和多维数据分析时效率较低,因为这些操作通常需要大量的计算资源和时间
❓ OLTP
系统为何主要关注单个数据方面?
一个数据方面”指的是 OLTP
系统在处理数据时,通常只关注数据的某个特定维度或方面,而不是多维度的综合分析。具体来说,OLTP
系统设计用于高效地处理日常事务,如银行交易、订单处理等,这些事务通常涉及对数据库中单个记录的插入、更新或删除操作。因此,OLTP
系统在数据模型上采用规范化的设计,以减少数据冗余并提高数据一致性,但这使得它们在处理复杂的多维数据分析时效率较低
❓ 如果使用 OLTP
系统处理多维数据统计,会有什么代价?
如果 OLTP
系统需要处理多维数据的统计,例如统计多维度的销售额,将会面临以下代价:
- 性能下降:由于
OLTP
系统设计为处理单个数据方面,增加复杂查询会导致系统性能显著下降,无法满足高并发和实时性的要求 - 资源消耗增加:复杂查询需要更多的计算资源和内存,可能导致系统负载过高,甚至影响其他事务的处理
- 设计复杂性增加:为了支持多维数据分析,可能需要对现有的数据库设计进行重构,增加额外的索引、缓存机制等,增加了系统的复杂性和维护成本
❓ OLTP
与关系型数据库的关系是什么?
OLTP
系统通常使用关系型数据库(如MySQL、MariaDB、PostgreSQL等)来存储和管理数据。关系型数据库提供了 ACID
事务支持,适合处理高并发的事务操作
❓ Redis和MongoDB是属于哪一种?
- Redis:通常用于缓存和会话管理,属于
NoSQL
数据库,适合高并发读写场景。虽然Redis可以用于存储和查询简单的数据结构,但其设计目标并非支持复杂的多维数据分析,因此通常不归类为OLAP
系统 - MongoDB:是一种文档型
NoSQL
数据库,适合存储和查询复杂的数据结构。MongoDB可以用于OLTP
和OLAP
场景,具体取决于其使用方式。例如,作为缓存层或用于存储非结构化数据时,MongoDB可以支持OLTP
;而作为数据仓库的一部分,用于复杂查询和分析时,MongoDB可以支持OLAP
⭕️ 数据架构的区别
⭐️ OLTP
OLTP
数据库架构则优先考虑数据写入操作。它针对写入密集型工作负载进行了优化,可以在不影响数据完整性的情况下更新高频率、高容量的交易数据,想象一下你去银行 ATM
机取钱,或者在网上购物下单,这些瞬间且完整完成的操作背后,就是 OLTP
系统在默默工作
⭐️ OLAP
OLAP
数据库架构将数据读取优先于数据写入操作。您可以快速高效地对大量数据执行复杂的查询。可用性是一个低优先级的问题,因为主要使用场景是分析,如果说 OLTP
是赛车场上的短跑冠军,那么 OLAP
就是坐在办公室里的数据分析大师,它擅长从海量数据中挖掘出有价值的信息
⭕️ 性能区别
OLAP
处理时间可能从几分钟到几小时不等,具体取决于所分析数据的类型和数量。要更新 OLAP
数据库,您需要定期处理大批量数据,然后一次性将批次上传到系统。数据更新频率也因系统而异,从每天到每周,甚至每月不等。
相比之下,您以毫秒或更短的单位测量 OLTP
处理时间。OLTP
数据库实时管理数据库更新。更新快速、简短
⭕️ OLTP 与 OLAP:并排比较
OLTP 是可操作的,而 OLAP 是信息性的。看一眼这两种处理的主要特征就可以说明它们的根本区别,以及它们是如何协同工作的。
OLTP | OLAP | |
---|---|---|
特征 | 处理大量小交易 | 处理具有复杂查询的大量数据 |
查询类型 | Simple standardized queries | Complex queries |
操作 | Based on INSERT, UPDATE, DELETE commands | Based on SELECT commands to aggregate data for reporting |
响应时间 | Milliseconds | 秒、分钟或小时,具体取决于要处理的数据量 |
设计 | Industry-specific, such as retail, manufacturing, or banking | 特定主题,例如销售、库存或营销 |
来源 | Transactions | Aggregated data from transactions |
目的 | 实时控制和运行基本业务运营 | 计划、解决问题、支持决策、发现隐藏的见解 |
数据更新 | 由用户发起的简短、快速的更新 | 使用计划的、长时间运行的批处理作业定期刷新数据 |
空间要求 | 如果归档历史数据,通常很小 | 由于聚合大型数据集而通常很大 |
备份和恢复 | 需要定期备份以确保业务连续性并满足法律和治理要求 | 可以根据需要从 OLTP 数据库重新加载丢失的数据,以代替定期备份 |
生产率 | 提高最终用户的生产力 | 提高业务经理、数据分析师和高管的工作效率 |
Data view | 列出日常业务交易 | 企业数据的多维视图 |
用户示例 | 面向客户的人员、文员、在线购物者 | 知识工作者,例如数据分析师、业务分析师和高管 |
数据库设计 | 标准化数据库以提高效率 | 用于分析的非规范化数据库 |