TapCub 正式上线:统计、分析、客服一个平台免费用
数据分析

湖仓一体和数据仓库(以及数据湖):怎么选

数据仓库存建好模的表供 SQL 使用,数据湖便宜地存原始文件,湖仓一体在数据湖的存储上加上数仓能力。三方对比、湖仓一体为什么出现、两家公司的算例和一份选择清单。

卢卡斯·海斯 发布于 2026 年 11 月 5 日 5 分钟阅读 数据分析
湖仓一体和数据仓库(以及数据湖):怎么选示例数据

用你自己的数据试一下

这篇文章里出现的报表免费版全都有。一段代码,网站和 App 都能接,最多 10 个站点。

免费开始

选数仓、数据湖还是湖仓一体,与其说是选产品,不如说是决定每个数据集那份受管控的正本放在哪里。本文把三者放在一起对比,讲清催生湖仓一体的两层架构问题,并分析两家公司:一家 60 人的 SaaS 应该继续用数仓,一家交易平台则不应该。

读完你会知道

  • 数仓适合结构化数据、SQL 和看板
  • 数据湖能便宜地存任何原始数据,但需要治理
  • 湖仓一体在数据湖存储上加上事务和 SQL
  • BI 和机器学习共用一份数据是湖仓一体的主要好处
  • 无论哪种,难点都在治理,不在存储

简短回答

数据仓库把结构化、清洗过的数据存成表,专门为 SQL 报表优化。数据湖把任何类型的原始文件便宜地存在对象存储里。湖仓一体(Data Lakehouse)用开放的表格式,在数据湖的存储之上加上数仓的能力(事务、表结构、快速 SQL),让同一份数据既能服务 BI 看板,也能服务机器学习。

如果你的工作主要是看板和对结构化数据跑 SQL,数仓更简单。如果你还需要大量原始、半结构化的数据做数据科学,或者想避免在数据湖和数仓之间来回复制,湖仓一体更合适。

数据仓库、数据湖和湖仓一体对比

数据仓库数据湖湖仓一体
数据结构化、建好模的表任何东西:原始文件、JSON、日志、图片任何东西,上面再建表
表结构写入时定义(加载前)读取时解释(查询时)表在写入时强制,原始区保持灵活
存储由数仓管理对象存储(S3、GCS、Azure Blob)开放格式的对象存储(Parquet + Delta Lake、Apache Iceberg 或 Hudi)
事务(ACID)有没有有,由表格式提供
主要用户分析师、BI数据工程师、数据科学家两者都有
长处SQL 快、受管控、简单便宜、灵活、什么数据都能放BI 和机器学习共用一份;开放格式;可回溯历史版本
短处数据量极大时成本高;不太适合非结构化数据和机器学习缺乏治理就变成「数据沼泽」;临时 SQL 慢组件更多;工具还比较年轻
例子Snowflake、BigQuery、Redshift、ClickHouseS3 或 GCS 存储桶配 Spark、Presto/TrinoDatabricks、能读 Iceberg 表的数仓

界线正在变模糊:主流数仓已经能读写开放表格式,湖仓引擎的 SQL 也很快。真正的问题与其说是「选哪一类产品」,不如说是「每个数据集那份受管控的正本放在哪里」。

数据仓库数据湖湖仓一体
数据结构化任何任何 + 表
表结构写入时读取时表在写入时
ACID有没有有
适合BI、SQL便宜存原始数据BI 和机器学习共用一份

主流数仓已经能读开放表格式,界线正在变模糊。

湖仓一体为什么会出现

很多公司原本是两层架构:原始数据先进数据湖,再把一部分复制到数仓给 BI 用。这意味着两份副本、两套权限、要维护同步它们的管道,看板还常常比数据湖慢一天。Armbrust 等人(2021)提出,带事务、索引和缓存的开放表格式能让一层存储同时服务两者,这就是湖仓一体的思路。

计算示例:两家公司,两个答案

A 公司:B2B SaaS,60 名员工(示例数字)

  • 每天约 12 万个产品事件,加上 CRM 和计费表;一年约 4,700 万行事件。
  • 用途:每周 KPI 看板、收入报表、留存分群、三个分析师写临时 SQL。
  • 除了一个表格规模就能搞定的流失评分,没有机器学习。

答案:数据仓库。 数据是结构化的、量不大;建数据湖只会多出基础设施,没有好处。用 ELT:把原始事件和 SaaS 数据源装进来,用 SQL 建模。

B 公司:交易平台,900 名员工(示例数字)

  • 每天约 4,000 万个事件,原始 JSON 每天约 32 GB,压缩前一年约 12 TB;还有图片、搜索日志和用于排序模型的点击流。
  • 用途:给 200 个看板用户做 BI,数据科学家用完整的原始历史训练推荐和反欺诈模型。
  • 现状:数据落到 S3,每晚把其中 15% 复制进数仓;看板慢一天,两份数据还对不上。

答案:湖仓一体。 所有数据用 Parquet 配开放表格式只存一份,分析师用 SQL 查数据科学家用的同一批表,去掉每晚的复制。一年事件压缩成列式存储大约 1–2 TB,存储成本不是重点;收益是只有一份数据、一套权限、看板更新更及时。

app.tapcub.com/platform/data

A:每年事件行数

约 4,700 万

B:每年压缩后

约 1–2 TB

B:目前复制进数仓

15%

▼ 慢一天

架构选择 · 两种情况

示例数字
A 公司(SaaS)B 公司(交易平台)
每天事件120,00040,000,000
每年原始数据约 35 GB约 12 TB
非结构化数据没有图片、日志
用原始历史做机器学习不做排序、反欺诈
选择数据仓库湖仓一体
示例数据

怎么决定

选数据仓库,如果:

  • 大部分数据是结构化的(事件、交易、CRM)。
  • 主要使用者是分析师和看板。
  • 你想要组件最少、托管的服务。

选湖仓一体,如果:

  • 你有大量半结构化或非结构化数据(日志、文本、图片)。
  • 数据科学和 BI 需要同一份数据。
  • 你已经有数据湖并在往数仓复制,同步很痛苦。
  • 你在意开放格式,避免被绑定。

无论哪种,难点都不在存储,而在治理:口径、负责人、权限和数据血缘。见数据治理和单一事实来源。

常见错误

  • 建数据湖却没有目录和负责人。 很快变成没人信的沼泽。
  • 数据又小又结构化,却因为流行而选湖仓一体。
  • 「以防万一」所有东西存两份,却从不对账。
  • 忽视个人数据。 原始区会攒下你并不需要的标识符,要在接入时就做最小化。
  • 只按存储算成本。 算力、出网流量和工程时间才是大头。

把统计数据装进任何一种

在这两种架构里,产品和网站的统计事件往往都是最大的那张表。TapCub 通过原始数据导出把原始事件导出为 gzip 压缩的 JSONL,采集时已经做了 IP 截断和标识符哈希。把文件装进数仓的表,或者在湖仓里转成 Parquet,再和计费、CRM 数据关联。围绕这些加载任务该加哪些监控,见数据管道。

参考资料

这篇文章对你有帮助吗?

我们会根据反馈修改和补充这篇内容。

卢卡斯·海斯

数据工程师

聚焦事件设计、数据质量与采集流程,分享可验证的实施方法,帮助团队建立可靠的分析基础。

给你的数仓或湖仓供数

原始事件导出为 gzip 压缩的 JSONL,隐私转换已经完成。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie