Pinterest基于CDC的摄取系统将数据库延迟从24小时缩短至15分钟

小新 正九品 (县丞) 2026-03-07 17:48 0 0
小新 正九品 (县丞) 楼主
2026-03-07 17:48
第1楼

摘要:nbsp;正如Pinterest的一位工程师所强调的那样nbsp;该框架是一个配置驱动的通用框架,支持MySQL、TiDB"和KVStore,便于快速部署,集成了监控且提供至少有一次的送达保证。下一代数据库摄取架构概述(图片来源:Pinterest博客文章") 该架构将CDC表与基表分开。


Pinterest推出了新一代数据库摄取框架",旨在突破传统批处理系统的局限性,提升实时数据的可用性。旧有的基础设施依赖于多条独立维护的数据管道和全表批处理任务,导致延迟高、运维复杂且资源利用率低下。包括数据分析、机器学习和产品功能在内的关键应用场景亟需更快、更可靠的数据访问能力。

 

传统系统面临着几个关键的挑战。数据延迟经常超过24小时,拖慢了分析和机器学习工作流程。许多表每日的数据变化量不足5%,但全表批处理会重复处理未更改的记录,浪费计算和存储资源。此外,传统系统未提供对行级删除的原生支持,管道之间的操作碎片化导致数据质量不一致且维护开销高。

 

正如Pinterest的一位工程师所强调的那样:

 

基于Change Data Capture(Debezium"/TiCDC")、Kafka、Flink、Spark和Iceberg构建的统一数据库摄取框架仅处理有变化的记录,在几分钟内(而不是几小时或几天)就可以提供对在线数据库更改的访问,显著节省了基础设施成本。

 

该框架是一个配置驱动的通用框架,支持MySQL、TiDB"和KVStore,便于快速部署,集成了监控且提供至少有一次的送达保证。

下一代数据库摄取架构概述(图片来源:Pinterest博客文章")

 

该架构将CDC表与基表分开。作为只追加账本,CDC表记录每个变更事件的延迟通常低于五分钟。基表维护完整的历史快照,每15分钟至1小时通过Spark Merge Into"操作进行更新。Iceberg的合并操作提供两种更新策略:写时复制"(COW)和读时合并(MOR)。写时复制策略在更新时重写整个数据文件,增加存储和计算开销。读时合并策略将变更写入独立的文件并在读取时应用,从而降低写入放大效应。经过评估,Pinterest最终采用了读时合并策略,因为在多数工作负载中,写时复制产生的存储成本远超它所带来的收益。该方案既支持增量更新,又使基础设施成本在PB级数据规模下仍然可控。

 

Spark作业首先对CDC表中的最新更改去重,然后在基表上应用更新或删除。历史数据最初通过引导管道加载,后续维护作业负责处理压缩和快照过期。

 

该框架的优化包括:使用Iceberg分桶通过主键哈希对基表进行分区,允许Spark并行化upsert操作,以及减少每次操作扫描的数据量。该框架还通过指示Spark按分区分布写入来解决小文件问题,减少了每个任务多个小文件造成的开销。

 

测量结果包括将数据可用性延迟从超过24小时降低到低至15分钟,避免不必要的全表操作,仅处理每天变化的5%的记录,降低基础设施成本。该系统可以处理PB级规模的数据,跨数千个管道,同时支持增量更新和删除。

 

Pinterest基于CDC的摄取框架提供了对数据库更改的实时访问,其中,Iceberg表存储在AWS S3上,Flink-Spark处理流和批处理工作负载。未来的改进将集中在自动化模式演变上,如何安全地将上游更改传播到下游,增强大规模管道的可靠性和可维护性。

 

 

 

声明:本文为InfoQ翻译,未经许可禁止转载。

 

原文链接:https://www.infoq.com/news/2026/02/pinterest-cdc-db-ingestion/"

  • 1 / 1 页
敬请注意:文中内容观点和各种评论不代表本网立场!若有违规侵权,请联系我们.