资讯

数据湖是什么?以原始格式集中存放海量数据的地方

2026-11-052 分钟阅读百科
TL;DR数据湖(Data Lake)是一种集中存储大量原始数据的架构,结构化、半结构化和非结构化的数据都以原生格式存放,通常建立在低成本的对象存储之上,需要时再进行处理和分析,与需要预先定义结构的数据仓库相对。

数据湖(Data Lake)是一个集中存放大量原始数据的存储架构,数据以原生的格式存放,不需要事先整理成统一的结构。它通常建立在搭载对象存储的扁平架构上,用元数据来管理文件。“数据湖”这个说法由 Pentaho 公司的首席技术官 James Dixon 在 2010 年前后提出,此后随着大数据和云计算的发展被广泛采用。

它为什么叫“湖”

Dixon 用了一个比喻来区分数据湖和数据集市(或数据仓库):数据仓库就像一瓶瓶包装好的瓶装水,已经过滤、清洗、装瓶,可以直接饮用;而数据湖就像一个大湖,各种水源从四面八方以原始的状态汇入,人们可以根据自己的需要,到湖里取水、检验、提炼。数据湖里可以存放各种类型的数据:数据库导出的表格这样的结构化数据,JSON、日志文件这样的半结构化数据,以及图片、音频、视频、文档这样的非结构化数据。

和数据仓库的区别

数据仓库是经过精心设计的:数据在存入之前,就要按照预先定义好的结构进行清洗、转换和整理,这叫“写入时定义结构”。它适合用来做固定的业务报表和分析,查询速度快、数据质量高,但前期需要大量的设计工作,而且只能存放预先规划好的数据,存储成本相对较高。

数据湖则采用“读取时定义结构”的方式:数据先原样存进来,等到真正需要使用的时候,再根据具体的分析需求去处理和解释。这样做的好处是灵活:可以先把所有可能有用的数据都存下来,不用一开始就想清楚它们将来怎么用;存储成本低,通常使用廉价的对象存储,比如亚马逊 S3、阿里云 OSS;适合数据科学家进行探索性的分析,以及机器学习和 AI 的训练,因为这些任务往往需要海量的、多种多样的原始数据。

风险和发展

数据湖也有明显的风险:如果缺乏良好的管理,没有记录清楚哪些数据是什么、从哪来、质量如何,数据湖很容易变成一个杂乱无章、谁也找不到有用数据的“数据沼泽”。因此需要完善的元数据管理、数据目录、权限控制和数据治理。近年来出现了“湖仓一体”(Lakehouse)的架构,借助 Delta Lake、Apache Iceberg、Apache Hudi 等技术,在数据湖低成本、灵活存储的基础上,增加了数据仓库那样的事务支持、数据质量管理和高效查询能力,试图兼得两者的优点。