核心要点
数据湖:存原始/多格式数据,廉价对象存储,schema-on-read,灵活但治理弱
数据仓库:存结构化建模数据,schema-on-write,强一致与高性能查询,但成本高、扩展性受限
湖仓一体:在数据湖上加开放表格式(Delta/Iceberg/Hudi),带来 ACID、表管理与时间旅行
湖仓兼顾湖的低成本弹性与仓的事务/查询能力,统一批流与 BI/AI 负载
标准回答
数据湖:schema-on-read
数据湖把原始数据(结构化、半结构化、非结构化)以多种格式直接存进廉价对象存储(如 S3/OSS/HDFS),读取时才解析 Schema(schema-on-read)。优点是接入快、成本低、格式灵活,适合数据科学与探索;缺点是缺乏事务与质量约束,容易沦为"数据沼泽"。
数据仓库:schema-on-write
数据仓库要求数据先按维度/事实模型建模、清洗后写入(schema-on-write),保证强一致与高性能聚合查询,适合稳定的 BI 报表。代价是存算成本高、对非结构化数据支持弱、Schema 变更不灵活。
湖仓一体:两者融合
湖仓在数据湖之上引入开放表格式 Delta Lake / Iceberg / Hudi,提供 ACID 事务、Schema 演进、分区与小文件管理、时间旅行(按版本/时间戳查询历史)。它让同一份廉价存储既能跑批流 ETL,又能直接支撑 BI 与 AI 训练,避免湖与仓之间反复搬数据。
常见误区
⚠️ 常见踩坑
湖仓的 ACID 不是存储本身提供的,而是表格式层(Delta/Iceberg/Hudi)通过元数据日志和快照实现。也别把数据湖等同于 HDFS,重点是 schema-on-read 与开放格式,而非具体存储介质。
追问
追问 1:Iceberg、Hudi、Delta 的侧重点有何不同?
三者都提供 ACID 与时间旅行。Delta 与 Spark 生态深度绑定、事务日志简单;Iceberg 表格式中立、隐藏分区与 Schema 演进强、多引擎支持好;Hudi 偏重高频 upsert 与增量拉取(CDC 场景),有 COW/MOR 两种表类型权衡读写。
追问 2:时间旅行(Time Travel)是怎么实现的?
表格式为每次写入生成不可变的数据文件与对应快照/版本元数据。查询时指定版本号或时间戳,引擎根据元数据定位该时刻有效的文件集合即可读到历史状态,常用于回滚、审计和可复现实验。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。