2025年4月,一位巴西数据工程师在Medium上发布了一份架构对比文档,意外引发了全球数据社区的技术路线之争。这份文档没有提出新理论,却用一张时间线把十五年缠斗说清了。

2008-2012:数据仓库的统治时代

打开网易新闻 查看精彩图片

企业处理数据的方式曾经很简单。结构化数据进,结构化报表出,中间靠关系型数据库硬撑。

Teradata、Oracle Exadata、IBM Netezza这些名字统治着企业预算表。它们的逻辑也直白:把数据先清洗好,再按主题域建模,最后塞进预先设计好的表结构里。

这套模式有个致命假设——数据在进来之前就知道该怎么用。

2010年前后,互联网公司的日志量开始指数级爆炸。一个电商平台的点击流数据,传统仓库的ETL(抽取-转换-加载,Extract-Transform-Load)管道要跑六小时才能入库。等报表出来,促销早结束了。

更麻烦的是非结构化数据。用户上传的图片、客服录音、传感器原始信号,关系型数据库根本不知道怎么存。

数据仓库的架构师们尝试过妥协方案:把大文件存在外部存储,数据库里只存指针。但这破坏了事务一致性,查询时跨系统跳转,性能惨不忍睹。

2012-2015:数据湖的野蛮生长

2012年,Hadoop生态成熟给了技术团队新选项。

核心理念很激进:先存后治。原始数据以廉价对象存储落地,等有人要用的时候再写代码处理。存储成本从每TB数千美元降到几十美元,门槛消失了。

Netflix是最早一批重度用户。他们把每天数亿条观看记录直接灌进亚马逊S3(简单存储服务,Simple Storage Service),用Hive或Spark按需计算。不需要提前定义表结构,数据科学家可以直接用Python读原始JSON。

这种自由是有代价的。

2014年,Gartner(高德纳,一家信息技术研究和分析公司)的一份内部调研显示,60%的数据湖项目陷入"数据沼泽"——数据进去了,但没人知道里面有什么、质量如何、能不能用。分析师平均花费80%的时间在找数据和清洗数据上,真正做分析的时间不到20%。

治理缺失是结构性问题。数据仓库有严格的模式(Schema)管控,数据湖把这套扔了,却没建立替代机制。同一个用户ID,在A业务线叫"user_id",在B业务线叫"uid",在C业务线叫"customer_reference"。三份数据躺在湖里,没人知道它们是同一回事。

技术债务以肉眼可见的速度堆积。2015年,某头部互联网公司内部估算,其数据湖中有40%的存储从未被任何查询访问过,却在持续产生计算和运维成本。

2015-2019:Lambda架构的折中实验

工程师们试图缝合两套体系。

Lambda架构(由Storm的作者Nathan Marz提出)把数据流切成两条轨道:批量层(Batch Layer)用Hadoop/Spark处理全量历史数据,速度层(Speed Layer)用Storm/Flink处理实时增量,最后由服务层合并输出。

理论上兼顾了吞吐和延迟。Twitter曾用这套架构处理推文分析,批量层跑T+1的全量统计,速度层补上当天的实时增量,查询时两者相加。

实践中是维护噩梦。同一套业务逻辑要写两遍:批量代码用Scala,实时代码用Java,语义还得保证一致。2016年,LinkedIn(领英,一家职业社交网站)的工程师公开吐槽,他们的Lambda系统有30%的Bug来自双轨逻辑的不一致。

Kappa架构(由LinkedIn的Jay Kreps提出)试图简化,干脆取消批量层,全部用流处理。但2017年的硬件条件下,用Flink回溯三年历史数据,成本比Spark高出一个数量级。大多数公司退回了Lambda。

这段时间,云厂商开始入场收割。AWS推出Redshift(数据仓库即服务),Azure推出Data Lake Storage,Google推出BigQuery。它们没有解决架构矛盾,只是把矛盾打包成了托管服务。

2019-2022:湖仓一体(Lakehouse)的合流

转折点出现在2019年。

Databricks(一家数据与人工智能公司)的创始团队发表论文,提出"Lakehouse"概念——在廉价对象存储上,用开放格式(Parquet/ORC)存数据,通过元数据层(Delta Lake/Iceberg/Hudi)提供事务保证、版本控制和模式演进。

这听起来像技术缝合,但切中了要害。

数据湖终于能回答"这张表昨天长什么样"了。时间旅行(Time Travel)功能让数据科学家可以回滚到任意历史版本,调试模型时不再担心"数据昨天还能跑通今天怎么不行了"。

ACID事务(原子性、一致性、隔离性、持久性,Atomicity-Consistency-Isolation-Durability)保证了并发写入的安全。多个ETL任务同时往一张表写数据,不会互相覆盖或产生脏读。

模式强制(Schema Enforcement)和模式演进(Schema Evolution)解决了数据沼泽的元数据混乱。新字段可以动态添加,旧代码不会突然崩溃。

2020年,Netflix把1.5PB的Hive表迁移到Iceberg,查询性能提升3-5倍,运维工单减少70%。他们不是唯一一家。

开源社区迅速分化。Databricks押注Delta Lake,Netflix和Apple力推Iceberg,Uber和小米选择Hudi。三者的技术差异体现在:

Delta Lake与Spark绑定最深,功能迭代快,但生态相对封闭;Iceberg采用无服务器元数据设计,对计算引擎中立,被AWS、Google、腾讯等云厂商广泛采纳;Hudi强调增量处理和流式摄入,适合CDC(变更数据捕获,Change Data Capture)场景。

2021年,Apache Iceberg成为Apache顶级项目。同年,Snowflake(一家云数据平台公司)宣布支持Iceberg外部表,传统数仓厂商也开始向开放格式低头。

2022-2024:性能优化的军备竞赛

架构统一后,战场转向查询效率。

对象存储的带宽足够,延迟却是硬伤。一次点查可能要发起数十次HTTP请求,传统数仓的索引优势在此显现。

Databricks在2022年推出Photon引擎,用C++重写Spark的SQL执行层,向量化处理让部分查询快8倍。同年,他们收购Tabular(Iceberg的创始团队),试图统一Delta与Iceberg生态。

Snowflake走另一条路。2023年,他们发布Iceberg Tables,允许客户把数据存在自己的S3桶里,用Snowflake引擎查询。这意味着客户可以随时把数据搬走,不再被存储锁定。作为交换,Snowflake按计算量收费,商业模式从"卖存储"转向"卖算力"。

开源侧,Trino(原PrestoSQL)和Starburst(一家数据湖分析公司)把即席查询(Ad-hoc Query)性能推到极致。2023年的基准测试显示,Trino在TPC-DS(决策支持基准测试)上的部分查询比Hive快100倍。

但性能数字有陷阱。这些优化针对的是星型模型、预聚合场景。真正的数据科学工作负载——特征工程、模型训练、非结构化数据处理——仍然需要Spark或Ray的分布式计算。

2024年,一个微妙的变化:越来越多的企业采用"双模架构"。湖仓一体处理结构化分析,原始数据湖保留给AI团队。同一份数据,两种治理策略,用元数据层做权限隔离。

2025:当前战局与未解矛盾

回到那份巴西工程师的文档。他的核心观察是:技术选型正在从"功能对比"转向"成本结构对比"。

数据仓库(如Snowflake、BigQuery、Redshift)按存储+计算分离计费,适合查询模式稳定、团队技术储备弱的场景。起步快,但数据量膨胀后成本曲线陡峭。

数据湖(纯S3+Spark)按存储+自建集群计费,适合数据科学家占比高、查询模式多变的场景。人力成本高,但硬件成本可控。

湖仓一体试图折中,却引入了新的复杂性。元数据层本身成为瓶颈——Iceberg的元数据文件在表达到百万级分区时,查询规划时间可能超过实际执行时间。2024年,Uber工程师分享过优化案例:通过分区裁剪和元数据缓存,把规划时间从45秒降到200毫秒。

AI的崛起正在改写规则。

大语言模型(Large Language Model,LLM)需要海量非结构化语料,向量数据库(Vector Database)成为新热点。但向量数据怎么与结构化业务数据关联?目前的主流方案是把向量索引建在湖仓之上,用近似最近邻(Approximate Nearest Neighbor,ANN)算法加速检索,再JOIN回业务表。

这种架构能跑通,但远非最优。2024年底,Databricks推出Vector Search,Snowflake宣布与Pinecone(一家向量数据库公司)集成,都是试图把向量能力收进统一平台。

更深层的问题是治理。湖仓一体解决了技术层面的元数据管理,没解决组织层面的数据所有权。数据产品经理、数据工程师、数据科学家、机器学习工程师,四类角色对"数据质量"的定义完全不同。技术架构再先进,跨团队扯皮依然消耗80%的项目时间。

巴西工程师的文档最后没有给出选型建议。他只列了一张表:三种架构在成本模型、技能要求、扩展路径、供应商锁定四个维度的对比。

这张表的价值不在于结论,而在于框架。2025年的数据架构决策,不再是技术优劣的判断题,而是组织能力的匹配题。

有成熟数据工程团队的公司,湖仓一体是合理赌注。团队薄弱却预算充足,托管数仓能更快产生价值。处于AI转型早期的企业,保留灵活的数据湖可能比强治理更重要——因为你还不知道模型需要什么数据。

技术史很少线性演进。数据仓库、数据湖、湖仓一体,更像是针对不同约束条件的局部最优解,而非代际更替。2025年的聪明做法,是承认这种多元并存,用元数据层和开放格式作为缓冲,保持选项的开放性。

那位巴西工程师的文档被转发时,附言只有一句:"我们终于不用选边站了。"这句话的准确版本应该是:选边站的代价,现在可以被工程手段降低了。