数据处理完放在哪里?一文搞懂数据仓库与数据湖

上一篇我们介绍了 ETL。数据从业务系统进入数据平台之后,需要经过清洗、转换、关联和聚合,才能真正变成可以分析的数据。

但处理完之后还有一个问题:

这些数据到底放在哪里?

如果只是把数据继续放回 MySQL,似乎也可以查询,但随着数据量越来越大,分析场景越来越复杂,传统业务数据库就很难承担这个任务。

于是,数据平台中出现了两个非常重要的概念:数据仓库和数据湖。

一、为什么不能直接用 MySQL 做数据分析?

先看一个比较简单的场景。

一家电商公司使用 MySQL 保存订单:

bash 复制代码
users
orders
products
payments

平时业务系统查询的是:

ini 复制代码
SELECT *
FROM orders
WHERE user_id = 10001;

这种查询数据量通常不大,而且主要是服务于具体业务。

但是数据分析可能会执行这样的 SQL:

scss 复制代码
SELECT
    city,
    DATE(created_at),
    SUM(amount),
    COUNT(*)
FROM orders
GROUP BY city, DATE(created_at);

甚至还需要关联几十张表,统计几年甚至几十亿条数据。

这类分析查询可能会消耗大量 CPU、内存和磁盘 I/O。

如果直接在生产 MySQL 上运行,可能影响正常的订单、支付和用户请求。

所以数据平台通常会把业务数据同步到专门用于分析的存储系统。

这就是数据仓库出现的重要原因之一。

二、数据仓库到底是什么?

数据仓库,英文叫 Data Warehouse,简称 DW。

可以简单理解为:

专门为数据分析和统计而建设的数据存储系统。

业务数据库关注的是:

复制代码
用户注册
下单
支付
发货
退款

数据仓库关注的是:

复制代码
今天卖了多少钱?
哪个城市销售额最高?
用户复购率是多少?
过去一年销售趋势怎么样?

两者的目标并不一样。

可以简单理解成:

markdown 复制代码
业务数据库
      ↓
负责业务运行

数据仓库
      ↓
负责数据分析

所以数据仓库并不是简单地把 MySQL 换成另一个数据库,而是针对分析场景重新组织数据。

三、数据仓库里的数据是什么样的?

假设业务系统中有订单表:

复制代码
orders

order_id
user_id
product_id
amount
created_at

数据仓库可能会围绕分析需求重新设计数据模型。

例如:

复制代码
事实表
fact_order

订单金额
订单数量
商品数量
用户 ID
商品 ID
时间 ID

再配合:

复制代码
维度表
dim_user
dim_product
dim_date

这样就可以从不同维度分析订单。

比如:

复制代码
按时间统计
按城市统计
按用户统计
按商品统计
按渠道统计

这也是数据仓库和业务数据库一个很大的区别。

业务数据库通常围绕业务功能设计,而数据仓库通常围绕分析需求设计。

四、什么是数据湖?

数据仓库解决了结构化数据的分析问题,但数据平台继续发展之后,又遇到了新的问题。

现实中的数据并不只有 MySQL 表。

还有:

javascript 复制代码
日志
JSON
CSV
图片
音频
视频
IoT 数据
第三方 API
半结构化数据

这些数据如果全部提前整理成数据仓库需要的结构,会非常麻烦。

于是就出现了数据湖(Data Lake) 。

数据湖可以简单理解为:

一个能够保存大量原始数据、结构化数据、半结构化数据甚至非结构化数据的数据存储平台。

它更强调:

先把数据保存下来,再根据后续需求进行处理和分析。

例如:

javascript 复制代码
MySQL 数据
日志
JSON
CSV
IoT
API
   ↓
数据湖
   ↓
后续处理

这和传统数据仓库"先整理、再存储"的思路存在一定区别。

五、数据仓库和数据湖有什么区别?

可以先用一个简单的方式理解:

对比 数据仓库 数据湖
数据 主要是结构化数据 结构化、半结构化、非结构化
数据状态 通常经过处理 可以保存原始数据
结构 相对固定 更灵活
主要用途 BI、报表、分析 大规模数据存储与处理
数据处理 通常先处理再存 可以先存后处理

比如公司每天产生 1TB 日志。

如果全部先转换成固定的数据表,再保存下来,开发成本可能比较高。

数据湖可以先把原始日志保存下来:

复制代码
原始日志
   ↓
数据湖
   ↓
需要分析的时候再处理

这样就可以保留更多原始数据。

六、数据湖是不是比数据仓库更先进?

不能简单这么理解。

它们解决的问题不同。

数据仓库更强调:

数据经过整理之后,为分析提供稳定的数据结构。

数据湖更强调:

大量数据先保存下来,同时保留原始数据和灵活处理能力。

所以实际企业里经常不是二选一。

可能是:

复制代码
业务系统
   ↓
数据采集
   ↓
数据湖
   ↓
数据处理
   ↓
数据仓库
   ↓
BI

数据湖保存原始数据,数据仓库保存经过加工、适合分析的数据。

两者可以同时存在。

七、什么是 Data Lakehouse?

学习数据平台的时候,还会经常看到一个新的概念:

Data Lakehouse,数据湖仓。

它试图把数据湖和数据仓库的一些能力结合起来。

简单理解就是:

diff 复制代码
数据湖
+
数据仓库
=
Lakehouse

它希望既能够像数据湖一样保存大量原始数据,又能够提供类似数据仓库的数据管理、事务和分析能力。

现在很多现代数据平台都会围绕 Lakehouse 架构建设。

其中经常会看到:

复制代码
Apache Iceberg
Apache Hudi
Delta Lake

这些技术主要解决数据湖中的表格式、事务、更新、版本管理等问题。

对于刚开始学习数据平台的人来说,不需要马上深入这些技术。

先理解:

数据仓库解决分析问题,数据湖解决大规模、多类型数据存储问题,Lakehouse 尝试把两者结合起来。

八、数据到底应该怎么存?

假设现在有一个电商平台。

每天产生:

复制代码
订单数据
用户数据
商品数据
访问日志
支付数据
推荐数据

可以设计成:

markdown 复制代码
                    ┌── 数据仓库 ──→ BI
                    │
业务系统 → 数据采集 → 数据湖
                    │
                    └── 数据处理 → 实时分析

原始数据进入数据湖保存。

经过 ETL / ELT 处理之后,可以把适合分析的数据写入数据仓库。

最后 BI 工具从数据仓库中读取数据,生成报表和数据看板。

这样一来,整个数据链路就越来越清晰了。

九、常见的数据仓库和数据湖技术

了解概念之后,再来看技术就比较容易了。

数据仓库领域经常会看到:

复制代码
Hive
ClickHouse
Snowflake
BigQuery
Redshift

数据湖相关技术则可能看到:

复制代码
S3
HDFS
Iceberg
Hudi
Delta Lake

数据处理过程中还可能结合:

复制代码
Spark
Flink
Trino

数据平台最终可能是这些技术组合起来的,而不是只使用某一个产品。

例如:

复制代码
MySQL
 ↓
Kafka
 ↓
Flink
 ↓
Iceberg
 ↓
Trino
 ↓
BI

也可能是另一套技术组合。

所以学习数据平台时,不应该一开始就陷入"到底应该学哪个框架"。

更重要的是先理解每个组件在整个数据链路中的位置。

十、从整个数据平台重新看数据仓库和数据湖

现在把前面几篇文章放到一起:

复制代码
业务系统
   ↓
数据采集
   ↓
全量 / 增量 / CDC
   ↓
Kafka
   ↓
ETL / ELT
   ↓
数据湖 / 数据仓库
   ↓
数据分析 / BI

第一篇我们认识了数据平台。

第二篇解决了数据怎么进入平台。

第三篇解决了数据进入之后怎么处理。

这一篇解决了:

处理好的数据应该放在哪里。

到这里,数据平台的基本骨架已经出来了。

接下来还需要把这些组件真正串起来,看看一条数据从业务系统产生,到最终进入 BI 报表,中间到底经历了什么。

这也是下一篇要解决的问题。

总结

数据仓库和数据湖都是数据平台的重要组成部分。

数据仓库主要面向结构化数据分析,强调经过整理的数据和稳定的分析模型;数据湖则更加关注大规模、多类型以及原始数据的存储。

实际企业中,两者往往会结合使用,再配合 Kafka、Flink、Spark、Iceberg、ClickHouse 等技术,形成完整的数据平台架构。

真正学习数据平台,不是把这些技术一个个背下来,而是要理解:

数据为什么从这里流向那里,以及每一个组件到底解决了什么问题。

相关推荐
遇码4 小时前
流式调用中途断连别直接报错:瞬态故障识别、退避重试与中文根因诊断的搭建方法
大数据·人工智能·ai·rust·数据分析·大模型·agent
JXJD20045 小时前
224G PAM4 高速线束:阻抗匹配设计与损耗控制的核心逻辑
大数据·ai
康实训5 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
ha_lydms5 小时前
Datetime Functions(日期时间函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
lisw055 小时前
制造业信息化:现代工业的发展趋势!
大数据·网络·人工智能
AllData公司负责人5 小时前
AllData搭建大模型资产中台集成开源项目BISHENG/Crater/Coze-Studio/Coze-Loop/DataFIow,建设AI大模型开发底座
大数据·人工智能·开源·bisheng·coze-studio·crater·datafiow
CCblandy5 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
我是人✓5 小时前
SpringBoot项目的五种创建方式
java·spring boot·后端
cc5725026535 小时前
2027校招岗位拆解:数学与应用数学转量化运营,SQL、Python与量化研究要求有何不同?
大数据
quantdash_cc5 小时前
Pandas 处理分钟级股票行情:从原始数据清洗到 K 线聚合
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash