Spotify为数据湖构建外部索引实现低延迟点查询
译文 AI 逐段翻译
InfoQ 首页 新闻Spotify 构建外部索引,实现对数据湖的低延迟点查询
Spotify 构建外部索引,实现对数据湖的低延迟点查询
2026年8月12日 2分钟阅读
作者
关注我们
收听本文 - 0:00
音频已准备好播放
您的浏览器不支持音频元素。
0:00
0:00
Spotify 推出了随机访问 Parquet (RAP),这是一种存储架构,能够直接对数据湖中存储的数据进行低延迟点查询,使在线服务和 AI 应用无需将数据集复制到运营数据库即可检索单个记录。RAP 在 Apache Parquet 文件之上增加了一个外部索引层,支持交互式查找,同时继续使用相同的数据集进行分析、机器学习和在线服务。
Spotify 解释说,现代数据湖已成为分析和 AI 工作负载的中心存储库,但检索单个记录仍然低效,因为诸如Trino和BigQuery之类的分布式查询引擎针对分析扫描而非基于键的查找进行了优化。尽管诸如Google Cloud Storage之类的云对象存储现在提供毫秒级访问延迟,但查询规划、元数据遍历和文件发现会为点查询增加显著开销。Spotify 指出,它在 Bigtable 中存储 PB 级在线数据,而 EB 级数据位于基于 Google Cloud Storage 的数据湖中,大规模复制到服务数据库的成本越来越高。
RAP 通过引入外部索引解决了这一挑战,该索引将查找键(如用户 ID)直接映射到 Parquet 文件和行位置。查询不是扫描数千个文件,而是通过索引解析键,然后对对象存储发出有目的的范围读取。随着新数据写入Apache Iceberg表,索引构建器会生成仅追加的索引片段,而不修改不可变的 Parquet 文件。Spotify 表示,这种方法允许相同的数据集支持分析处理、机器学习管道、笔记本、AI 代理和延迟敏感的在线应用,而无需维护重复的存储系统。
Spotify 的公告是在扩展开放数据湖技术以超越分析处理的更广泛努力之后发布的。Google Cloud 最近描述了基于 Apache Iceberg 的湖仓架构用于 AI 应用,同样旨在减少数据重复同时实现对数据的运营访问。与此方法不同,RAP 引入了专门针对点查找优化的外部索引层,同时保持与现有 Parquet 文件和 Iceberg 表的兼容性。
该架构也在数据工程社区内引发了讨论。Andrew Lamb强调 RAP 是扩展开放数据格式以支持交互式工作负载的一个例子。在另一场LinkedIn 讨论中,Vikas Singh 认为,云对象存储性能的改进已将点查询的更多延迟转移到查询规划和元数据访问上,而 RAP 旨在通过预计算索引来减少这一延迟。
Spotify 还描述了减少点查询延迟的几种存储布局优化。这些优化包括按查找键对数据进行排序以减少访问的文件数量、将相关记录分组、交错值列以便通过一次连续读取检索多个属性,以及使用覆盖索引,无需读取 Parquet 文件即可满足某些查询。根据 Spotify 的说法,这些技术以适度的文件或索引大小增加换取更少的存储操作,从而允许某些点查询通过仅几 KB 的单次范围读取来服务。
交错值列布局支持从多个列检索相关值(来源:Spotify 博客文章)
Spotify 还支持二级索引,允许跨多个查找维度进行高效查询,例如买家 ID 或卖家 ID,而无需重写Parquet 文件。基于哈希的索引支持精确查找,而排序索引支持范围查询。Spotify 表示,二级索引在服务层进行管理,允许在无需更改数据管道的情况下添加新的访问路径,同时继续使用相同的 Parquet 数据集进行分析扫描和交互式点查询。诸如Z-order和希尔伯特曲线等存储布局技术可以进一步改善二级查找维度的数据局部性。
关于作者
Leela Kumili
显示更多 显示更少
该内容属于Apache Iceberg主题
相关主题:
- 开发
- 架构与设计
- AI、机器学习与数据工程
- Google Cloud
- AI 架构
- 大数据
- IndexedDB
- Apache Iceberg
- 数据湖
- 软件工程
- 数据
- 分布式系统
- Apache
- 查询
- 低延迟
- Stripe 使用图搜索和状态机自动化数据库修复
- Project Valhalla 首个预览版:JEP 401 重新定义 Java 对象的 == 运算符
- Pinterest 如何使用集中式 Terraform 管道大规模保护 AWS 基础设施
- Canva 分享基于 S3 的架构,实现数亿会话的会话撤销
- Vercel Labs 推出 Zero:一种图优先语言,专为智能体编写代码而构建
- 2026 年文化与方法趋势:AI 工程中的人性化
InfoQ新闻通讯
每周二发送上周 InfoQ 内容的摘要。加入超过 25 万资深开发者的社区。查看示例