📅 2025年2月6日

🏆 OLAP 和 OLTP

联机分析处理 (OLAP) 系统和联机事务处理 (OLTP) 都是存储和分析业务数据的数据处理系统,这两个系统都可以存储来自不同服务的数据,比如电商、聊天等,但是 OLAP可以对数据进行合并和分组,适合分析,与之相反 OLTP则注重于数据的安全事务数据存储具有极高的可靠性,

OLTP 由于有极高可靠性因此可以作为 OLAP的数据来源

1️⃣ 两者的相似之处

联系分析处理 (OLAP) 系统和联机事务处理 (OLTP) 系统都是用于存储和处理大量数据的数据库管理系统。它们都需要高效可靠的 IT 基础设施才能平稳运行。甚至可以同时使用它们来查询现有数据或存储新数据。两者都支持组织中数据驱动的决策。比如 mysqlclickhouse都支数据存储和查询

大多数公司同时使用 OLTPOLAP 系统来满足其商业智能需求。但是,OLAPOLTP 的数据管理方法和用途有很大不同

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可以用于 OLTPOLAP场景,具体取决于其使用方式。例如,作为缓存层或用于存储非结构化数据时,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 列出日常业务交易 企业数据的多维视图
用户示例 面向客户的人员、文员、在线购物者 知识工作者,例如数据分析师、业务分析师和高管
数据库设计 标准化数据库以提高效率 用于分析的非规范化数据库