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 解决了三个核心问题:
- 事务支持:多个任务并发读写时,数据不会乱
- Schema 管理:写入时检查 Schema,但允许 Schema 演化
- 性能优化:通过索引、分区、缓存等手段,让查询速度接近数据仓库
我的经验:刚开始接触 Delta Lake 时,我其实挺怀疑的——一个开源项目能解决数据湖这么多年的顽疾?后来在一个实时数仓项目里,我们用 Delta Lake 替换了原来的 Hive 表。最直观的感受是:再也不用担心并发写入导致数据损坏了。而且时间旅行(Time Travel)功能,让我们能轻松回滚到任意历史版本,排查问题方便太多了。
1.4 核心驱动力:为什么非变不可?
架构演进的背后,是几个实实在在的驱动力在推着走。
| 驱动力 | 数据仓库时代 | 数据湖时代 | Lakehouse 时代 |
|---|---|---|---|
| 数据多样性 | 仅结构化 | 结构化 + 半结构化 + 非结构化 | 全类型,统一存储 |
| 实时性要求 | T+1 批处理 | 近实时(分钟级) | 实时(秒级) |
| 成本压力 | 高(专用硬件) | 低(通用硬件) | 低(对象存储) |
| 数据治理 | 强(集中管控) | 弱(缺乏管控) | 强(统一元数据 + 权限) |
| AI/ML 支持 | 弱(不适合训练) | 强(原始数据可用) | 强(直接训练 + 特征工程) |
你看这个表格就清楚了。数据仓库太贵太死板,数据湖太乱太慢。Lakehouse 正好卡在中间——既有数据仓库的治理能力,又有数据湖的灵活性。
嗯,这里要注意一点:Lakehouse 不是银弹。如果你的场景只是简单的 BI 报表,传统数据仓库可能更合适。但如果你需要同时做批处理、流处理、机器学习,那 Lakehouse 就是目前最好的选择。
1.5 一张图看懂架构演进
下面这张图,是我自己总结的架构演进路线。从数据仓库到数据湖,再到 Lakehouse,每一步都解决了前一步的痛点。
从这张图能看出来,Lakehouse 不是推倒重来,而是在数据湖的基础上「打补丁」。这个补丁就是元数据层和事务层。有了它们,数据湖就不再是沼泽,而是真正可用的数据平台。
1.6 小结
数据架构的演进,本质上是在「成本、灵活性、可靠性」这三个维度上找平衡。数据仓库太贵太死板,数据湖太乱太不可靠,Lakehouse 正好找到了一个不错的平衡点。
我个人觉得,Lakehouse 最大的价值不是技术上的创新,而是思路上的转变——不再把存储和计算绑死,也不再区分「数据仓库」和「数据湖」。统一存储、统一元数据、统一计算,这才是未来数据平台该有的样子。