《数据库、数据仓库与数据湖:从概念到湖仓一体》
三者关系先用一句大白话定性:
数据库(DB)管”正在发生的业务”,数据仓库(DW)管”已经发生完的业务”,数据湖(Lake)管”还不知道以后拿来干啥的原始数据”。
OceanBase 这类现代分布式数据库正在往数据仓库和数据湖两边伸手,但基因和边界仍然不一样。下面分层讲,不绕术语。
1 传统三者各自是啥
1.1 数据库(Database,OLTP)
- 干啥:跑业务系统。下单、扣库存、转账、改密码——每次操作一条或几条记录,要毫秒级返回 + 绝对不能丢 + 事务 ACID。
- 代表:MySQL、Oracle、PostgreSQL、OceanBase、TiDB(偏 TP)。
- 存什么:高度结构化的”热数据”,行列规整,随时被读写。
- 特点:强一致、低延迟、并发高、存储量相对小(TB 级为主)。
1.2 数据仓库(Data Warehouse,OLAP)
- 干啥:分析历史。昨天卖了多少、季度报表、用户留存漏斗、BI 大屏——扫全表、聚合、不修改只查询。
- 代表:Teradata(老牌)、Snowflake、Redshift、ClickHouse、Greenplum、StarRocks、Hologres。
- 存什么:从数据库同步过来的清洗后结构化数据,按主题建模(星型/雪花模型)。
- 特点:列存、向量化执行、吞吐大、秒级~分钟级响应、单条写入不重要。
1.3 数据湖(Data Lake)
- 干啥:先把公司所有原始数据”倒进来”再说。日志、JSON、图片、音频、埋点、MySQL binlog、IoT 流,不管结构不结构,先落地对象存储(S3/OSS/HDFS)。
- 代表:基于 S3 + Iceberg/Delta/Hudi 文件层;计算用 Spark/Flink/Trino 搭着用。Databricks 就是”湖”上长出来的平台。
- 存什么:Raw data,格式乱、schema 可无、后期再按需 schema-on-read。
- 特点:存储极便宜(对象存储)、容量 PB~EB 级、不能直接当业务系统用、得配合计算引擎。
2 三者传统关系(经典架构)
业务系统
│ (CDC / 批量同步)
▼
[数据库 MySQL/Oracle/OB] ───── 交易实时读写
│ ETL
▼
[数据仓库 Snowflake/StarRocks] ── BI/报表/OLAP
│
▼
[数据湖 S3+Iceberg] ──────────── ML训练 / 日志归档 / 数据科学
过去是三层孤立:
- 库和仓之间靠 ETL 搬数据(T+1 或小时级延迟)。
- 湖是”垃圾场+金矿”,分析师直接查湖容易把性能搞崩,所以湖和仓之间还得再同步一份。
痛点:冗余存储、链路长、口径不一致、AI 要用湖里的原始数据还得再导出。
3 “湖仓一体”和”湖库一体”是怎么抹边界的
3.1 Databricks 的 Lakehouse(湖仓一体)
- 起点:湖。
- 在 S3/Iceberg 上叠 Delta Lake(ACID 事务)+ Spark(批流计算)+ MLflow(ML)+ Unity Catalog(治理)。
- 结果:湖上也能跑 SQL 分析、也能跑事务、也能训模型,把 DW 的能力吸进湖。
- 缺点:原生 OLTP(每秒几万笔转账)不是它的强项,所以后来补了 Lakebase(Postgres 系)去接交易。
3.2 OceanBase 的 Lakebase(湖库一体)
- 起点:库(分布式 TP 数据库)。
- 在 OB 内核里长进:多模类型(文本/向量/图/音视频同表)+ 混合检索 + 列存 AP 能力 + 开放 Iceberg 外表。
- 结果:一个 OceanBase 集群,既能跑支付宝交易(TP),又能跑报表(AP),还能直接存企业文档做 RAG、给 Agent 当记忆体(AI)。
- 缺点:PB 级冷数据存对象存储的成本优势不如真正的数据湖,分析生态(Spark/MLflow 那套)比 Databricks 弱。
3.3 第三类:Snowflake / StarRocks
- 仓往湖伸(Snowflake 支持 Iceberg 外表、StarRocks 存算分离 + 湖仓加速)。
- 但不碰 OLTP 核心交易,和 OB 方向错开。
4 一张对照表
| 维度 | 数据库(OceanBase 传统面) | 数据仓库(Snowflake/StarRocks) | 数据湖(S3+Iceberg) | OB Lakebase / Databricks Lakehouse |
|---|---|---|---|---|
| 主要负载 | OLTP 交易 | OLAP 分析 | 存储+批处理+ML | 混合(TP+AP+AI) |
| 数据形态 | 结构化热数据 | 清洗后结构化 | 原始多模态 | 结构化+半结构+向量 |
| 事务 | ACID 强 | 弱(批级) | 无(靠文件层补) | OB 原生强 / DB 补强 |
| 典型延迟 | 毫秒 | 秒~分钟 | 分钟~小时(批) | 毫秒~秒 |
| 存储成本 | 中(块存储) | 中高(本地/缓存) | 极低(对象存储) | OB 中 / DB 低(对象底层) |
| AI 友好度 | 传统库低,OB 新版本高 | 中等(向量插件) | 高(直接喂训练) | 高(内置向量/检索/Agent) |
5 最直白的类比
- 数据库 = 便利店收银台,每笔买卖当场结账,不能乱。
- 数据仓库 = 月底盘点用的 Excel 总表,查”本月哪些好卖”,不改原始小票。
- 数据湖 = 把收银小票、监控录像、顾客微信聊天记录全塞进仓库,以后想用啥再翻。
- OceanBase Lakebase = 收银台旁边直接放了盘点系统和 RAG 知识柜,店员(Agent)结账时能顺手查历史、查说明书、记客户偏好。
- Databricks Lakehouse = 先把整个仓库数字化,然后在数字仓库里搭收银台 + 盘点 + AI 训练室。
所以”OB 是不是模仿 Databricks”——现在能对应上了:两者都不是纯库/纯仓/纯湖了,都在抢”统一数据底座”的位置,只是从哪个房间往外打通的区别。
6 一个电商公司一天的数据流向
以时间线把三者串起来,最直观:
- 白天(交易期):用户在 App 下单 → 订单写入 MySQL/OceanBase(DB)。每一次查询”库存够不够”、”这个订单状态是什么”都走 DB,毫秒级返回。
- 夜间(同步期):DB 里当天产生的订单、支付流水,通过 CDC/ETL 同步进数据仓库(DW)。分析师跑报表:”今天 GMV 多少、哪个品类卖得最好、转化漏斗什么样”。
- 全天候(原始沉淀):App 埋点日志、用户点击流、客服录音、商品图片直接落数据湖(Lake)。数据团队后续用它训练推荐模型、做风控分析、喂给 Agent。
- 融合(湖仓/湖库一体):报表查不到的问题,可以直接从湖里取原始数据补充;Agent 结账时又能读历史订单(DB)+ 查知识库(湖)给出个性化建议。
阅读 —
·
全站 —