数仓建模(二) 从关系型数据库到数据仓库的演变

news2025/1/8 12:46:22

        从传统数据库出发,帮助读者更好理解数仓的核心价值和基本结构

目录

先问

1. 什么是关系型数据库?

2. 为什么需要数据仓库?

第一部分:关系型数据库的核心特点与局限性

1.1 什么是关系型数据库?

1.1.1 关系型数据库的常见类型

1.2 关系型数据库的核心特点

1.2.1 数据结构化

1.2.2 强事务支持

1.2.3 高并发性

1.2.4 实时性

1.3 关系型数据库的局限性

1.3.1 查询性能瓶颈

1.3.2 存储和扩展能力有限

1.3.3 历史数据存储不足

1.3.4 多数据源整合困难

1.4 关系型数据库的应用场景

第二部分:数据仓库的定义与核心特性

2.1 什么是数据仓库?

2.2 数据仓库的四大核心特性

2.2.1 面向主题(Subject-Oriented)

2.2.2 集成性(Integrated)

2.2.3 非易失性(Non-Volatile)

2.2.4 时变性(Time-Variant)

2.3 数据仓库与关系型数据库的本质区别

2.4 数据仓库的核心作用

2.4.1 支持复杂分析

2.4.2 整合多源数据

2.4.3 存储历史数据

2.4.4 降低生产系统负载

2.5 数据仓库的基本架构

第三部分:关系型数据库与数据仓库的对比

3.1 设计目标的区别

3.2 数据结构的区别

3.3 数据操作类型的区别

3.4 查询性能的区别

3.5 数据量与存储能力的区别

3.6 数据分析场景的区别

总结

第四部分:数据仓库的核心价值

4.1 集成多源数据

4.2 支持大规模数据分析

4.3 提供历史数据支持

4.4 减轻生产系统负载

4.5 数据驱动决策支持

总结

第五部分:从关系型数据库到数据仓库的演变过程

5.1 初始阶段:依赖关系型数据库

5.2 过渡阶段:引入OLAP工具

5.3 成熟阶段:构建独立数据仓库

5.4 数据仓库的演变案例


先问

1. 什么是关系型数据库?

关系型数据库(Relational Database, RDB)是通过关系模型来组织和存储数据的数据库系统。它以表的形式呈现数据,广泛应用于事务处理(OLTP)场景中。

  • 关系型数据库使用SQL(结构化查询语言)作为主要交互工具。
  • 每个表都有唯一的主键,列表示字段,行表示记录。

示例:订单表

order_idcustomer_idproduct_idorder_dateamount
11015012023-01-01100
21025022023-01-02200

2. 为什么需要数据仓库?

随着企业数字化转型,数据量和复杂性逐年增加,传统关系型数据库逐渐暴露出以下不足:

  1. 难以支持复杂分析需求
    如多表关联、聚合查询、时间序列分析。
  2. 数据来源多样化
    数据分散在不同系统中(CRM、ERP、API等),难以统一管理。
  3. 历史数据存储受限
    传统数据库更多关注实时事务,缺乏对历史数据的支持。

因此,数据仓库应运而生,为企业提供一站式数据管理和分析平台。

第一部分:关系型数据库的核心特点与局限性


1.1 什么是关系型数据库?

关系型数据库(Relational Database, RDB)是一种使用二维表(表格)存储数据的数据库系统。每张表格由行(记录)和列(字段)组成,数据通过主键和外键进行关联,遵循严格的关系模型。关系型数据库最早由IBM的E.F. Codd于1970年代提出,并迅速成为现代数据存储的标准。

1.1.1 关系型数据库的常见类型
  • 单机数据库:适合小型系统或轻量级应用。
    • 示例:SQLite、Access。
  • 企业级数据库:支持高并发、海量数据存储和复杂查询。
    • 示例:MySQL、PostgreSQL、Oracle、SQL Server。
  • 分布式数据库:为解决大规模数据存储和查询而设计,能支持横向扩展。
    • 示例:TiDB、CockroachDB。

1.2 关系型数据库的核心特点
1.2.1 数据结构化

关系型数据库以结构化的方式存储数据,表的每列都有明确的数据类型(如整数、字符串、日期等),数据格式一致,便于查询和分析。

示例:订单表结构

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    product_id INT,
    order_date DATE,
    amount DECIMAL(10, 2)
);
1.2.2 强事务支持

关系型数据库通过ACID(原子性、一致性、隔离性、持久性)特性保障数据可靠性:

  • 原子性:事务中的所有操作要么全部执行,要么全部回滚。
  • 一致性:事务结束后,数据库始终处于合法状态。
  • 隔离性:事务之间的操作相互隔离,防止数据污染。
  • 持久性:事务提交后,数据永久保存。

事务操作示例

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;
1.2.3 高并发性

关系型数据库可以同时处理大量用户请求,适合高频率的事务操作(如银行转账、订单提交等)。

1.2.4 实时性

关系型数据库设计用于快速处理单一事务查询,通常响应时间在毫秒级。

1.3 关系型数据库的局限性
1.3.1 查询性能瓶颈
  • 复杂查询:高度规范化的表结构需要频繁的多表关联(JOIN),在海量数据中执行复杂查询性能较差。
  • 聚合计算:统计分析(如SUMAVGCOUNT)效率低,尤其是数据量较大时。
1.3.2 存储和扩展能力有限
  • 单机数据库受硬件限制,难以应对大规模数据存储需求。
  • 横向扩展(增加节点)能力不足,性能提升受限。
1.3.3 历史数据存储不足

关系型数据库通常仅存储当前状态,不适合追踪历史变化或支持时间序列分析。例如:

  • CRM系统可能只存储客户当前地址,无法查看客户地址的历史变化。
1.3.4 多数据源整合困难

企业数据分布在多个独立系统中(如ERP、CRM、日志系统),关系型数据库缺乏高效整合和管理多数据源的能力。


1.4 关系型数据库的应用场景

尽管存在局限性,关系型数据库仍是现代信息系统的基础,广泛应用于以下场景:

  1. 事务处理系统:如电商平台、银行系统。
  2. 轻量级分析:如简单的销售报表。
  3. 核心业务系统:如库存管理、订单管理。

第二部分:数据仓库的定义与核心特性


2.1 什么是数据仓库?

数据仓库(Data Warehouse, DW)是一种专门用于支持数据分析和商业决策的存储系统,与关系型数据库不同,它更注重历史数据的整合与分析优化。

数据仓库的目标

  1. 整合数据:从多个来源提取数据,形成统一视图。
  2. 存储历史数据:记录多年的数据快照,支持时间序列分析。
  3. 提升查询效率:通过优化的存储结构和查询引擎,快速响应复杂分析需求。

示例
一家零售企业的关系型数据库可能存储每日的订单数据,而数据仓库则会整合这些数据,与客户、产品等信息关联,分析全年的销售趋势。


2.2 数据仓库的四大核心特性
2.2.1 面向主题(Subject-Oriented)
  • 数据仓库围绕业务主题组织数据,例如“销售”、“客户”、“库存”等。
  • 示例:分析“某产品在过去一年中的销售趋势”,是典型的主题分析。
2.2.2 集成性(Integrated)
  • 数据仓库整合来自不同来源的数据(如ERP、CRM、第三方API),消除数据冗余,统一格式。
  • 示例:将不同系统中关于“客户”的数据整合为一个统一视图,消除重复记录。
2.2.3 非易失性(Non-Volatile)
  • 数据仓库中的数据通常为只读,历史数据不会被修改或删除。
  • 示例:销售数据一旦存储到仓库中,不会因为订单状态改变而被修改。
2.2.4 时变性(Time-Variant)
  • 数据仓库存储不同时间点的快照数据,支持时间序列分析。
  • 示例:分析“某客户在过去五年中的购买行为变化”。

2.3 数据仓库与关系型数据库的本质区别
特性关系型数据库(OLTP)数据仓库(OLAP)
目标支持高并发事务处理支持复杂查询与报表分析
数据结构高度规范化去规范化,优化查询性能
更新频率高频插入、更新数据定期加载后不易修改
数据量较小,通常为GB级别较大,可达TB或PB级别
查询复杂度简单查询为主多表关联、聚合分析居多

2.4 数据仓库的核心作用
2.4.1 支持复杂分析

数据仓库通过优化的存储结构和查询性能,为复杂分析提供支持。例如:

  • 销售额同比增长分析。
  • 客户行为预测。
2.4.2 整合多源数据

数据仓库能够整合来自ERP、CRM、日志系统的数据,形成全局视图。例如:

  • 合并客户基础信息(CRM)与购买行为(ERP)。
2.4.3 存储历史数据

通过保存多年的历史记录,支持业务趋势分析和长期决策。例如:

  • 分析过去五年的销售额变化,预测未来需求。
2.4.4 降低生产系统负载

通过将分析型查询从事务型数据库中分离出来,数据仓库减轻了生产系统的压力,同时提升查询效率。


2.5 数据仓库的基本架构
  1. 数据源层
    包括ERP、CRM、第三方API、日志文件等。
  2. ETL层
    • 提取(Extract):从数据源中提取原始数据。
    • 转换(Transform):清洗、标准化、格式化数据。
    • 加载(Load):将清洗后的数据加载到仓库。
  3. 数据存储层
    • 包括ODS(操作数据存储)、DWD(明细数据层)、DWS(汇总数据层)、ADS(应用数据层)。
  4. 展示层
    • 使用BI工具(如Tableau、Power BI)进行数据可视化。

第三部分:关系型数据库与数据仓库的对比

在信息系统中,关系型数据库和数据仓库是两种重要的数据存储工具,但它们的设计目标和应用场景截然不同。通过对比,我们可以更清楚地理解数据仓库的独特价值。


3.1 设计目标的区别
  1. 关系型数据库(OLTP)

    • 主要用于事务型处理,支持高并发的数据插入、更新和删除操作。
    • 设计的重点在于实时性和高效的事务操作,例如订单系统或银行转账系统。
  2. 数据仓库(OLAP)

    • 专为支持分析型查询和报表设计,优化复杂查询的性能。
    • 侧重于整合历史数据,支持趋势分析、预测模型等决策支持任务。

3.2 数据结构的区别
  1. 关系型数据库

    • 数据高度规范化,减少数据冗余。
    • 数据以多表的形式存储,通过外键实现关联。

    示例:订单系统的关系型数据库结构

    • 表1:orders(订单信息)
    • 表2:customers(客户信息)
    • 表3:products(产品信息)

    查询客户某段时间内的订单需要JOIN操作:

SELECT o.order_id, c.customer_name, p.product_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN products p ON o.product_id = p.product_id
WHERE o.order_date BETWEEN '2023-01-01' AND '2023-12-31';

数据仓库

  • 数据去规范化,优化查询性能。
  • 通常以星型模型或雪花模型的形式存储。

示例:数据仓库中的订单事实表

SELECT customer_name, product_name, SUM(order_amount) AS total_amount
FROM fact_orders
WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY customer_name, product_name;
3.3 数据操作类型的区别
操作类型关系型数据库(OLTP)数据仓库(OLAP)
插入、更新、删除高频操作,事务实时处理很少修改,数据定期加载后只读
查询简单查询,多为单表操作复杂查询,多表关联和聚合分析为主

3.4 查询性能的区别
  1. 关系型数据库

    • 为事务型操作(INSERTUPDATE)优化,查询性能通常受限。
    • 复杂查询(如GROUP BYORDER BY)会导致性能瓶颈。
  2. 数据仓库

    • 为分析型查询设计,支持大规模数据处理。
    • 借助分区、索引、列式存储等技术,显著提升查询效率。

3.5 数据量与存储能力的区别
  1. 关系型数据库

    • 适合小规模数据存储(通常为GB级别)。
    • 数据量增长后,单机性能迅速下降。
  2. 数据仓库

    • 设计用于大规模数据存储(TB至PB级别)。
    • 支持分布式存储和并行计算,扩展性强。

3.6 数据分析场景的区别
场景关系型数据库(OLTP)数据仓库(OLAP)
查询客户订单查询当前订单状态分析客户年度消费趋势
销售数据获取单日销售数据分析月度销售额及同比增长
库存管理更新库存状态分析库存周转率

总结

关系型数据库和数据仓库在功能上各有侧重:

  • 关系型数据库专注于实时事务处理(OLTP),适合操作型任务。
  • 数据仓库面向历史数据分析(OLAP),为企业提供决策支持。

第四部分:数据仓库的核心价值

数据仓库不仅仅是一个存储工具,它在数据整合、性能优化和决策支持方面具有独特的价值。以下是数据仓库的核心价值与其在实际场景中的体现。


4.1 集成多源数据

现代企业的数据来源复杂,包括:

  • 内部系统(ERP、CRM、财务系统)。
  • 外部来源(第三方API、社会经济数据等)。
  • 半结构化或非结构化数据(日志文件、JSON数据等)。

数据仓库的作用

  • 将来自不同来源的数据清洗、格式化后存储在统一平台中,形成全局视图。
  • 示例:合并客户信息(CRM系统)与订单数据(ERP系统),分析客户生命周期价值(Customer Lifetime Value, CLV)。

4.2 支持大规模数据分析

数据仓库通过以下技术提升数据分析能力:

  1. 列式存储:按列存储数据,适合聚合查询和分析场景。
  2. 分区与索引:加速大规模数据查询,减少扫描行数。
  3. 并行计算:借助分布式架构,同时处理多个查询任务。
4.3 提供历史数据支持

数据仓库存储不同时间点的数据快照,支持时间序列分析。

  • 示例:分析某客户在过去五年的购买行为变化。
  • 实际场景:对比不同年份的销售额变化,评估市场趋势。
4.4 减轻生产系统负载

在没有数据仓库的情况下,分析型查询会直接作用于事务型数据库(OLTP),导致系统性能下降。数据仓库通过分担复杂查询任务,确保生产系统专注于核心事务操作。

4.5 数据驱动决策支持

数据仓库为企业提供了一个统一的分析平台:

  • 快速生成报表:例如年度财务报表。
  • 数据可视化:通过BI工具(如Power BI、Tableau)展现复杂数据。

总结

数据仓库的核心价值体现在以下几个方面:

  1. 统一整合多源数据:打破数据孤岛,形成全局视图。
  2. 优化查询性能:支持大规模数据分析与聚合计算。
  3. 支持历史分析:存储时间序列数据,揭示趋势和模式。
  4. 减轻生产系统压力:分担复杂查询任务,提高系统稳定性。

第五部分:从关系型数据库到数据仓库的演变过程

        数据仓库的基本架构由数据源、ETL流程、存储层和展示层组成,各层次相辅相成,支持数据的整合、存储和分析。从关系型数据库到数据仓库的演变经历了从简单事务处理到复杂分析支持的转变,为现代企业提供了强大的数据分析能力和决策支持基础。


5.1 初始阶段:依赖关系型数据库

在企业数字化初期,关系型数据库被广泛应用于数据存储和处理。然而,随着数据量的增长和分析需求的复杂化,关系型数据库逐渐暴露出以下问题:

  1. 性能瓶颈:复杂查询和多表关联导致查询速度变慢。
  2. 数据孤岛:不同系统的数据难以整合。
  3. 历史数据管理不足:难以存储和分析长期历史数据。

5.2 过渡阶段:引入OLAP工具

为弥补关系型数据库的不足,企业逐步引入OLAP工具(如ROLAP、MOLAP),提升分析能力。

  1. ROLAP(Relational OLAP)

    • 基于关系型数据库实现多维分析。
    • 优点:兼容关系型数据库。
    • 缺点:查询性能受限。
  2. MOLAP(Multidimensional OLAP)

    • 基于多维数据集实现分析。
    • 优点:查询速度快,适合固定报表需求。
    • 缺点:数据量大时存储效率低。

5.3 成熟阶段:构建独立数据仓库

随着数据分析需求的增加,企业逐渐构建独立的数据仓库:

  1. 采用去规范化模型,提升查询性能。
  2. 支持大规模数据分析,如时间序列、聚合分析。
  3. 整合多数据源,形成全局视图。

5.4 数据仓库的演变案例

案例:零售企业的数据仓库演变

  1. 初期使用关系型数据库存储订单数据,但分析速度慢,报表生成时间长。
  2. 引入OLAP工具,实现简单的销售分析,但无法整合其他来源数据(如网站点击数据)。
  3. 构建独立数据仓库,整合ERP、CRM、网站日志等多来源数据,支持多维度的销售趋势分析和客户行为预测。

下节预告:数仓建模三步走:需求分析、模型设计与数据加载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

apex安装

安装过程复杂曲折,网上说的很多办法,貌似成功了,实际还是没起作用。 先说成功过程,执行下面命令,安装成功(当然,前提是你要先配置好编译环境): (我的环境&a…

select下拉框,首次进入页面没有显示value的情况

bug场景: 类似这种bug情况排查如下: 首先 理解含义 options就是存放键值对的,id就是key,对上了它就自动把label显示 而且如果你用来当作key和label的字段,与后端返回的不一致,还可以进行更改 其次 排查接…

krpano 实现文字热点中的三角形和竖杆

krpano 实现文字热点中的三角形和竖杆 实现文字热点中的三角形和竖杆 一个后端写前端真的是脑阔疼 一个后端写前端真的是脑阔疼 一个后端写前端真的是脑阔疼 实现文字热点中的三角形和竖杆 上图看效果 v:2549789059

playwright 录制

一、新建项目TestProject3 二、准备swagger 三、开始录制 打开PowerShell 7 (x64) cd D:\xxx\xxx\VS2022Projects\TestProject3\TestProject3\bin\Debug\net8.0 pwsh playwright.ps1 codegen --targetcsharp -b chromium localhost:5252/swagger/index.html #支持的语言 java…

uni-app 资源引用(绝对路径和相对路径)方法汇总

文章目录 一、前言🍃二、绝对路径和相对路径2.1 绝对路径2.2 相对路径 三、引用组件四、引用js4.1 js 文件引入4.2 NPM支持 五、引用css六、引用json6.1 json文件引入 七、引用静态资源7.1 模板内引入静态资源7.2 css 引入静态资源7.3 js/uts 引入静态资源7.4 静态资…

go如何从入门进阶到高级

针对Go语言的学习,不同阶段应采取不同的学习方式,以达到最佳效果.本文将Go的学习分为入门、实战、进阶三个阶段,下面分别详细介绍 一、社区 Go语言中文网 作为专注于Go语言学习与推广的平台,Go语言中文网为开发者提供了丰富的中…

现代密码学期末重点(备考ing)

现代密码学期末重点,个人备考笔记哦 密码学概念四种密码学攻击方法什么是公钥密码?什么是对称密码?什么是无条件密码? 中国剩余定理(必考)什么是原根什么是阶 经典密码学密码体制什么是列置换? …

基于SMT32U575RIT单片机-中断练习

任务 查看手册对所有的拓展板上和相对应的底板的引脚对应的端口找到以下结论 通过STM32MX软件对各个引脚进行相应的配置 1.第一种切换模式电脑发送 #include "main.h" #include "icache.h" #include "usart.h" #include "gpio.h"/*…

KCP解读:拥塞控制

本文是系列文章中的一篇,内容由浅到深进行剖析,为了方便理解建议按顺序一一阅读。 KCP技术原理 KCP解读:基础消息收发 KCP解读:重传机制 KCP解读:滑动窗口 KCP解读:拥塞控制 本文摘取https://xiaolincodin…

HCIA-Access V2.5_8_2_EPON基本架构和关键参数

EPON数据利用方式 EPON和GPON同样只有一根光纤,所以为了避免双向发送数据出现冲突,我们同样采用WDM技术,那么主要利用两个波长,一个是1490纳米的波长,一个是1310纳米的波长,下行OLT给ONU发送数据的时候&…

如何快速上手一个鸿蒙工程

作为一名鸿蒙程序猿,当你换了一家公司,或者被交接了一个已有的业务。前辈在找你之前十分钟写了一个他都看不懂的交接文档,然后把一个鸿蒙工程交接给你了,说以后就是你负责了。之后几天你的状态大概就是下边这样的,一堆…

FPGA实现UART对应的电路和单片机内部配合寄存器实现的电路到底有何区别?

一、UART相关介绍 UART是我们常用的全双工异步串行总线,常用TTL电平标准,由TXD和RXD两根收发数据线组成。 那么,利用硬件描述语言实现UART对应的电路和51单片机内部配合寄存器实现的电路到底有何区别呢?接下来我们对照看一下。 …

patchwork++地面分割学习笔记

参考资料:古月居 - ROS机器人知识分享社区 https://zhuanlan.zhihu.com/p/644297447 patchwork算法一共包含四部分内容:提出了以下四个部分:RNR、RVPF、A-GLE 和 TGR。 1)基于 3D LiDAR 反射模型的反射噪声消除 (RNR)&#xff…

【VScode】设置代理,通过代理连接服务器

文章目录 VScode编辑器设置代理1.图形化界面1.1 进入proxy设置界面1.2 配置代理服务器 2.配置文件(推荐)2.1 打开setting.json 文件2.2 配置代理 VScode编辑器设置代理 根据情况安装nmap 1.图形化界面 1.1 进入proxy设置界面 或者使用快捷键ctrl , 。…

【HarmonyOS】鸿蒙应用点9图的处理(draw9patch)

【HarmonyOS】鸿蒙应用点9图的处理(draw9patch) 一、前言: 首先在鸿蒙中是不支持安卓 .9图的图片直接使用。只有类似拉伸的处理方案,鸿蒙提供的Image组件有与点九图相同功能的API设置。 可以通过设置resizable属性来设置Resiza…

光伏仿真与设计系统应用架构深度剖析

在光伏产业蓬勃发展的时代背景下,绿虫光伏仿真与设计系统成为推动其高效发展的核心力量。其应用架构涵盖多个关键步骤,每个环节都紧密相扣,共同构建起精准且高效的设计体系。 气象分析作为开篇之笔,起着基石般的重要作用。系统全…

k8s dashboard离线部署步骤

确定k8s版本,以1.23为例。 部署metrics-server服务,最好用v0.5.2。 用v0.6.0,可能会报以下错误: nodekubemaster:~/Desktop/metric$ kubectl top nodes Error from server (ServiceUnavailable): the server is currently unabl…

05-Linux系统编程之进程(下)

一、子进程资源回收 1.概述 在每个进程退出的时候,内核释放该进程所有的资源,包括一些存储在栈区、全局区的数据、打开的文件、占用的内存等。但是仍有一部分信息没有释放,这些信息主要指进程控制块 PCB 的信息(包括进程号、退出…

HDFS异构存储和存储策略

一、HDFS异构存储类型 1.1 冷、热、温、冻数据 通常,公司或者组织总是有相当多的历史数据占用昂贵的存储空间。典型的数据使用模式是新传入的数据被应用程序大量使用,从而该数据被标记为"热"数据。随着时间的推移,存储的数据每周…

【51单片机】02LED流水灯实验

点亮你的LED 一、点亮第一个LED1.GPIO介绍2.P1、P2、P3端口 二、LED实验2.尝试点亮LED3.LED流水灯 一、点亮第一个LED 1.GPIO介绍 这块内容这里可以做简单的了解,与数电知识强相关。后续可以再回过头来学习 GPIO (general purpose input output) 通用输入输出端口…