数据湖与数据仓库的区别
请比较数据湖(Data Lake)和数据仓库(Data Warehouse)的核心差异,以及Lakehouse架构如何融合两者优势。
回答
我还是少年
数据仓库(Data Warehouse):
- Schema on Write: 写入时定义模式,数据经过ETL清洗
- 存储格式: 结构化,列式存储(ORC/Parquet)
- 数据类型: 仅结构化数据
- 处理方式: ETL清洗后加载
- 目的: 支撑BI报表和业务决策分析
- ACID: 支持(Hive ACID/Greenplum)
- 典型技术: Hive、Greenplum、Snowflake、ClickHouse
数据湖(Data Lake):
- Schema on Read: 读时定义模式,原始数据直接存储
- 存储格式: 原始格式(CSV/JSON/Avro/Parquet等)
- 数据类型: 结构化+半结构化+非结构化(文本/图片/视频/音频)
- 处理方式: ELT(先加载再转换)
- 目的: 数据探索、机器学习、数据科学
- ACID: 传统不支持(新方案如Delta Lake支持)
- 典型技术: HDFS/S3 + Spark/Hive
对比表: | 维度 | 数据仓库 | 数据湖 | |------|----------|--------| | 数据模式 | Schema on Write | Schema on Read | | 数据质量 | 高(已清洗) | 原始(可能有噪声) | | 灵活性 | 低(需预先建模) | 高(随时探索) | | 存储成本 | 高(清洗后存储) | 低(原始压缩存储) | | 处理延迟 | T+1批处理 | 实时/准实时 | | 用户 | 业务分析师 | 数据科学家/工程师 |
Lakehouse(湖仓一体):
定义: 在数据湖之上增加事务层(如Delta Lake/Iceberg/Hudi),融合数仓和数据湖的优势。
核心技术:
- ACID事务: 支持多个并发读写
- Schema演进: 灵活修改表结构
- 时间旅行(Time Travel): 访问历史版本数据
- 统一存储: 一套存储同时用于批、流、ML
- 高性能查询: 利用缓存和索引加速
代表技术:
- Delta Lake(Databricks)
- Apache Iceberg(Netflix)
- Apache Hudi(Uber)
优势: 减少数据孤岛、降低运维成本、支持实时+批处理+ML