1. 数据架构演进:从数据仓库到数据湖再到 Lakehouse

聊实时数据处理,得先搞清楚数据架构是怎么一步步走到今天的。我入行那会儿,数据仓库还是的主角。后来数据湖火了,大家一股脑往里灌数据。再到现在,Lakehouse 成了新宠。

这背后不是技术发烧友的瞎折腾,而是实实在在的业务需求在推着走。说白了,就是「既要又要还要」——既要数据仓库的强一致性,又要数据湖的低成本存储,还要能实时处理。

1.1 数据仓库时代:结构化数据的「贵族」

数据仓库(Data Warehouse)的概念,最早是 Bill Inmon 在 90 年代提出的。它的核心思想很简单:把业务系统的数据抽出来,清洗、转换、加载(ETL),然后存到一个专门的分析型数据库里。

那时候的数据仓库,典型代表就是 Teradata、Oracle、IBM DB2。我印象很深,2010 年左右在一家金融公司,他们的核心数仓用的是 Teradata,一个查询跑几分钟是常事,但胜在稳定、准确。

数据仓库的核心特征:

  • Schema-on-Write:写入数据前必须先定义好表结构
  • 强一致性:ACID 事务保证,数据准确无误
  • 高成本:专用硬件、商业许可,烧钱大户
  • 仅支持结构化数据:日志、图片、视频?对不起,存不了

但问题也很明显。你想想看,业务部门想分析用户行为日志,数据仓库说「不行,你这数据没结构」。想存个传感器数据?「不行,格式不对」。而且那成本,小公司根本扛不住。

我记得有一次,业务方要接入社交媒体数据做舆情分析。数据团队折腾了两周,最后发现数仓根本不适合存非结构化数据。那怎么办?只能另起炉灶。

1.2 数据湖时代:数据「大杂烩」的狂欢

2011 年左右,Hadoop 生态开始成熟,数据湖(Data Lake)的概念应运而生。它的口号很诱人:把所有数据都存进来,原始格式,想怎么用就怎么用。

数据湖的核心思想是 Schema-on-Read——写入时不检查结构,读取时再解析。这听起来很美好,对吧?

我早期参与过一个数据湖项目,用的是 HDFS + Hive。团队把几百 TB 的日志、点击流、传感器数据一股脑全灌进去。刚开始大家都很兴奋,觉得终于可以「数据自由」了。

但很快问题就来了。

数据湖的「沼泽化」陷阱:

  • 数据质量堪忧:没有 Schema 约束,脏数据、重复数据泛滥
  • 性能瓶颈:Hive 跑个 SQL 要几分钟甚至几小时
  • 缺乏事务支持:多个任务同时写同一个表,数据就乱了
  • 元数据管理混乱:没人知道某个目录下的数据是什么格式、谁生成的

说白了,数据湖变成了数据沼泽。你往里扔数据容易,想捞出来用?难。我曾经在一个项目里,光排查一个数据湖里的脏数据就花了两周。最后发现是某个上游任务写入了重复的 JSON 文件,但因为没 Schema 校验,系统根本发现不了。

1.3 Lakehouse 的诞生:取长补短

2017 年左右,Databricks 提出了 Lakehouse 的概念。它的目标很明确:把数据仓库的可靠性和数据湖的灵活性结合起来。

Lakehouse 不是简单的「数据湖 + 数据仓库」,而是在数据湖的底层存储上,加了一层「元数据层」和「事务层」。这层就是 Delta Lake、Apache Iceberg、Apache Hudi 这些技术在做的事。

我个人的理解是,Lakehouse 解决了三个核心问题:

  1. 事务支持:多个任务并发读写时,数据不会乱
  2. Schema 管理:写入时检查 Schema,但允许 Schema 演化
  3. 性能优化:通过索引、分区、缓存等手段,让查询速度接近数据仓库

我的经验:刚开始接触 Delta Lake 时,我其实挺怀疑的——一个开源项目能解决数据湖这么多年的顽疾?后来在一个实时数仓项目里,我们用 Delta Lake 替换了原来的 Hive 表。最直观的感受是:再也不用担心并发写入导致数据损坏了。而且时间旅行(Time Travel)功能,让我们能轻松回滚到任意历史版本,排查问题方便太多了。

1.4 核心驱动力:为什么非变不可?

架构演进的背后,是几个实实在在的驱动力在推着走。

驱动力 数据仓库时代 数据湖时代 Lakehouse 时代
数据多样性 仅结构化 结构化 + 半结构化 + 非结构化 全类型,统一存储
实时性要求 T+1 批处理 近实时(分钟级) 实时(秒级)
成本压力 高(专用硬件) 低(通用硬件) 低(对象存储)
数据治理 强(集中管控) 弱(缺乏管控) 强(统一元数据 + 权限)
AI/ML 支持 弱(不适合训练) 强(原始数据可用) 强(直接训练 + 特征工程)

你看这个表格就清楚了。数据仓库太贵太死板,数据湖太乱太慢。Lakehouse 正好卡在中间——既有数据仓库的治理能力,又有数据湖的灵活性。

嗯,这里要注意一点:Lakehouse 不是银弹。如果你的场景只是简单的 BI 报表,传统数据仓库可能更合适。但如果你需要同时做批处理、流处理、机器学习,那 Lakehouse 就是目前最好的选择。

1.5 一张图看懂架构演进

下面这张图,是我自己总结的架构演进路线。从数据仓库到数据湖,再到 Lakehouse,每一步都解决了前一步的痛点。

数据架构演进路线 数据仓库 结构化数据 Schema-on-Write ACID 事务 成本高 灵活性差 数据湖 全类型数据 Schema-on-Read 低成本存储 数据沼泽 无事务 Lakehouse 统一存储 + 计算 ACID 事务 实时 + 批处理 核心能力层:元数据层 + 事务层 Delta Lake / Apache Iceberg / Apache Hudi 底层存储:对象存储 / HDFS AWS S3 / Azure Blob / Google Cloud Storage / MinIO Lakehouse 在数据湖的底层存储上,增加了元数据层和事务层,实现了「湖仓一体」 既保留了数据湖的低成本,又获得了数据仓库的可靠性和性能

从这张图能看出来,Lakehouse 不是推倒重来,而是在数据湖的基础上「打补丁」。这个补丁就是元数据层和事务层。有了它们,数据湖就不再是沼泽,而是真正可用的数据平台。

1.6 小结

数据架构的演进,本质上是在「成本、灵活性、可靠性」这三个维度上找平衡。数据仓库太贵太死板,数据湖太乱太不可靠,Lakehouse 正好找到了一个不错的平衡点。

我个人觉得,Lakehouse 最大的价值不是技术上的创新,而是思路上的转变——不再把存储和计算绑死,也不再区分「数据仓库」和「数据湖」。统一存储、统一元数据、统一计算,这才是未来数据平台该有的样子。