Databricks Lakehouse:当数据湖终于遇上数据仓库
数据湖便宜却杂乱,数据仓库快却僵硬。Lakehouse 模式——Delta Lake、Unity Catalog 和 medallion 架构——正是 Databricks 融合两者的方式。这里讲的是真正重要的东西。
- Databricks
- Lakehouse
- Delta Lake
- 数据工程
- Azure
过去十年里,每个像样的数据平台都在跑两套系统。一个数据湖把一切都倒进廉价的对象存储,一个数据仓库提供业务真正会去查询的、干净且已建模的表。两份数据副本,两套管道,两笔账单,外加一场关于哪一份才是真相的永无止境的争论。
Lakehouse 就是试图把这道裂缝合成一条。Databricks 既没发明存储,也没发明文件格式,但它把这套模式打包成了一个团队可以拿去生产环境运行的东西。做过好几个这样的项目之后,这里说说什么是真材实料、什么是营销话术。
两个世界,以及团队为何两个都用
数据湖就是对象存储——Azure Data Lake Storage Gen2、S3、GCS——存放任意格式的原始文件。它便宜、可无限扩展,而且是 schema-on-read:结构由你在查询时决定,而不是写入时。代价是,一个缺乏纪律的湖会变成沼泽。没有事务,没有 schema 校验,也没有简便的办法去更新单独一行。
数据仓库正相反。结构化的表、ACID 保证、快速的 SQL、真正的治理。代价是僵硬和费用:你要为把数据装进去付费,要为专有存储付费,而那些想要原始文件的 machine learning 负载根本套不进这个模型。
两个都用就意味着要在它们之间来回拷贝数据,并永远地对账这些副本。Lakehouse 提出的问题很简单:如果湖能像仓库那样运作,而不需要第二份副本呢?
Lakehouse 到底是什么
诀窍在于给对象存储里的文件叠上一层开放的表格式。在 Databricks 上,那就是 Delta Lake:Parquet 数据文件外加一份事务日志。这份日志才是全部关键。它给你带来:
- ACID 事务——并发写入不再会损坏一张表。
- Schema 校验与演进——坏数据被拒之门外,好的改动被版本化保存。
- Time travel(时间回溯)——查询这张表上周二时的样子,或者回滚一次糟糕的加载。
- Upsert 与删除——
MERGE能用,这对 GDPR 的删除权和变更数据捕获(CDC)都很重要。
由于数据始终以开放的 Parquet 格式留在你自己的存储账户里,一份副本就能服务一切:SQL 仪表盘、流式作业和 ML 训练读的都是同一批表。字节上没有厂商锁定,也没有导出这一步。这就是回报所在。
Medallion 架构
Lakehouse 给你的是原语;medallion 架构则是你保持它们井然有序的办法。数据流经三个质量层级:
- Bronze(青铜)——原始摄入,原封不动,一如到达时的样子。只追加、可审计、绝不编辑。
- Silver(白银)——已清洗、已去重、已规整。做过关联并定好类型,但仍保持细粒度。
- Gold(黄金)——业务级别的聚合与星型模型,供仪表盘和报表消费。
纪律比工具更重要。青铜层是你的保险单——如果某个白银层的转换出了错,你可以从青铜层重新处理,而不必从源头重新摄入。跳过它,你就失去了修正历史的能力。
Unity Catalog:事后无法硬加的治理
Unity Catalog 是大多数团队会低估的那块。它是横跨所有 workspace 的单一治理层:细粒度的访问控制、列级和行级掩码,以及——审计时能救你一命的那部分——自动血缘(lineage)。你能看清哪份报表依赖哪张黄金表,那张表又依赖哪个白银作业,一路追溯到原始文件。
治理不是那种等你有了五百张表、没人知道谁能读什么之后再回头加装的功能。在第一张表上就把它打开。日后再迁移的代价极其残酷。
性能:Photon 与 SQL 仓库
过去对湖的老诟病是速度:查询文件拼不过一个调优过的仓库。有两样东西弥合了这道差距。Photon 是一个用 C++ 写的向量化查询引擎,无需改动你的代码就能加速 SQL 与 DataFrame 负载。而 Databricks SQL 仓库给分析师提供了一个熟悉的端点——他们接上一款 BI 工具去查黄金表,浑然不觉底下其实是对象存储。
存储与计算相互分离,所以你可以在月末结账压力大时把查询集群扩上去,之后再缩回来,而完全不用碰数据。这种弹性正是云的经济性真正倒向你这一边的地方——也正是我在从容的 AI 平台里所主张的那种纪律。
什么时候 lakehouse 是错误答案
它并非放之四海皆宜的升级。对规模要诚实:
- 小而纯关系型的数据。如果一切都能舒舒服服地装进 Postgres,而你只服务 BI,那么一个托管仓库更简单也更便宜。Lakehouse 是你用不上的机械装置。
- 没有工程投入。Delta、集群和 medallion 流程都是实打实的运维面。一个小团队会被淹没。
- 纯粹稳定的星型模型,没有 ML 也没有流式。Lakehouse 在负载混合时才大放异彩。如果你的负载永远不会混合,那份灵活性就是死重。
当你真的两个世界兼有——原始与流式数据喂养 ML,同时干净的表喂养业务——而你已经厌倦了为让它们保持同步而付两遍钱时,lakehouse 才配得上它的位置。从 Delta 和 medallion 层级起步,立刻打开 Unity Catalog,把速度交给 Photon 去操心。本系列下一篇:微软如何用 Fabric、OneLake 和 Copilot Studio 玩同一场游戏。
这篇有帮助吗?