1. 数据迁移的现状与挑战

聊数据迁移,得先看看我们到底从哪出发、要往哪去。这几年我参与过不少企业级数据平台的迁移项目,从传统数仓到数据湖,再到现在的 Lakehouse,每个阶段都有各自的坑。说白了,没有一种架构是万能的,关键看你业务到底要什么。

1.1 传统数据仓库的痛点

传统数仓,像 Teradata、Oracle、Greenplum 这些,十年前确实是王者。但现在业务数据量暴涨,它的短板越来越明显。

核心痛点:扩展成本高、数据形态单一、实时性差。

  • 扩展成本高:传统数仓是 Share-Nothing 架构,加节点要重新分布数据。我见过一个客户,Teradata 集群从 20 节点扩到 40 节点,光数据重分布就跑了三天,业务直接停摆。而且硬件贵,一个节点几十万,小公司根本扛不住。
  • 数据形态单一:数仓只擅长处理结构化数据。日志、图片、音视频这些半结构化、非结构化数据,要么存不进去,要么存进去也查不动。你想想看,现在哪个业务不涉及用户行为日志?传统数仓在这块基本是废的。
  • 实时性差:传统 ETL 是 T+1 的,今天跑昨天的数据。业务要实时看大屏、做风控?对不起,得等明天。我有个做金融的朋友,他们用 Oracle 做数仓,实时交易数据要延迟 6 小时才能入库,风控模型根本跑不起来。

避坑提醒:我曾经遇到一个项目,客户坚持用传统数仓做实时流处理,结果花了半年改造,性能还不如开源方案。选型时别硬扛,该换就换。

1.2 数据湖的局限性

数据湖的出现,解决了传统数仓的扩展性和数据多样性问题。Hadoop、Spark 这些技术让企业能存海量数据,成本也低。但数据湖也有自己的麻烦。

维度 传统数仓 数据湖
数据质量 强约束,Schema-on-Write 弱约束,Schema-on-Read
事务支持 ACID 事务 无事务或弱事务
查询性能 优化好,秒级响应 依赖计算引擎,常分钟级
数据治理 成熟 混乱,容易变数据沼泽

数据湖最大的问题,就是容易变成「数据沼泽」。数据往里一丢,没人管,没人用。我见过一个团队,HDFS 上存了 200TB 数据,80% 是重复的、过期的、格式混乱的。分析师想用,得先花两周清洗。

另外,数据湖不支持 ACID 事务。多个任务同时写同一个表,数据可能就乱了。我记得有一次,一个 Spark 任务跑了一半挂了,结果目标表里既有旧数据又有新数据,查出来的结果根本不对。这种问题在数据湖里太常见了。

1.3 Lakehouse 架构的兴起

Lakehouse 的出现,说白了就是把数据湖的灵活性和数仓的可靠性结合起来。它基于开放格式(如 Parquet、ORC),加上事务层(如 Delta Lake、Apache Iceberg、Apache Hudi),实现了 ACID 事务、Schema 演进、时间旅行这些能力。

我的理解:Lakehouse 不是推翻重来,而是在数据湖上盖一层「管理壳」。数据还是存在廉价对象存储上,但读写有了事务保证,查询有了优化器支持。

为什么 Lakehouse 能解决前面那些问题?

  • 扩展性:存储计算分离,存到 S3、OSS 上,算力按需伸缩。我做过一个项目,数据量从 10TB 涨到 500TB,存储成本只增加了 30%,计算资源动态扩缩,完全不用停机。
  • 数据多样性:支持结构化、半结构化、非结构化数据。同一份数据,既能跑 SQL 分析,也能跑机器学习模型。
  • 实时性:通过流批一体,实现分钟级甚至秒级的数据入湖。Delta Lake 的 Change Data Feed 功能,能直接捕获增量变更,不用再写复杂的 ETL。
  • 数据治理:Catalog、Schema Registry、血缘追踪,这些在 Lakehouse 里都是原生支持的。数据不再是一堆乱文件,而是有元数据管理的资产。

下面这张图,是我自己总结的 Lakehouse 核心架构,你可以看看它和传统数仓、数据湖的区别。

Lakehouse 核心架构 vs 传统数仓 & 数据湖 传统数仓 结构化数据 ACID 事务 扩展成本高 数据湖 任意格式数据 低成本存储 无事务 / 数据沼泽 Lakehouse 开放格式 + 事务层 ACID + 时间旅行 流批一体 + 治理 Lakehouse 核心能力 • 存储计算分离:对象存储 + 弹性计算 • 开放格式:Parquet/ORC + Delta/Iceberg/Hudi • 统一治理:Catalog + Schema + 血缘 数据源 流批一体入湖 Lakehouse 存储 BI / ML / 报表

从这张图能看出来,Lakehouse 不是简单地把数仓和数据湖拼在一起。它是在数据湖的存储层上,加了一层事务和索引能力,让数据既能像湖一样灵活,又能像仓一样可靠。

总结一下:传统数仓适合高价值、结构化、低延迟的场景;数据湖适合海量、多样、低成本存储的场景;Lakehouse 则试图把两者的优点合并,成为企业数据平台的新底座。

我个人习惯,在评估迁移方案时,先看业务对数据一致性、实时性、扩展性的真实需求。别盲目追新,也别死守旧架构。Lakehouse 是个好方向,但落地需要扎实的规划和执行。后面几章,我会详细讲怎么一步步把传统数仓和数据湖迁移到 Lakehouse 上。