Spotify 正面临一个日益严峻的挑战:在线服务和人工智能代理需要从其“数据湖”的艾字节(exabyte)级数据中,进行亚秒级的“点查询”(即查找特定用户的数据)。虽然云存储延迟已大幅降低,但像 Trino 或 BigQuery 这样的标准查询引擎主要针对分析型吞吐量进行了优化,而非单行查找。
随机访问 Parquet(Random Access Parquet,简称 RAP)通过直接在现有 Parquet 文件上实现交互式查询,填补了这一空白,且无需数据冗余或专门的键值(KV)存储。
RAP 使用“外部索引”将键(如 `user_id`)直接映射到文件位置和行偏移量。这消除了标准 Parquet 文件中常见的昂贵、高延迟的扫描以及“依赖读取链”。通过优化文件布局(例如按键排序、交错列存储以及使用 ZSTD 帧重置),RAP 可以将查询简化为仅需几次千字节的并行范围读取,甚至可以通过覆盖索引完全免除存储读取。
最终,RAP 将数据湖从仅能进行批处理的系统,转变为能够提供交互式、实时 AI 上下文的系统,使企业能够以传统服务系统极低的分数成本和复杂度来查询历史数据。
受寻找琐事“最优解”(例如免费餐厅面包)的启发,一位软件工程师开始探寻“幂等键”(idempotency key)的起源,这是一种用于分布式系统中防止同一请求被重复处理的工具。
作者首先通过一个生动的类比阐述了这一概念:如何防止家里的狗林戈(Ringo)被不同的家庭成员重复喂食。在反驳了大型语言模型关于 Stripe 在 2011 年发明该概念的说法后,作者追溯了幂等性的演变过程,从 21 世纪初的“仅限一次 POST”(POST Once Exactly)规范和企业级传输协议,一直回溯到印加结绳记事等古老的记录方法。
将搜索范围聚焦于数字计算领域后,作者将这一谱系追溯到了施乐帕罗奥多研究中心(Xerox PARC)1984 年发表的研究论文《实现远程过程调用》(Implementing Remote Procedure Calls,作者为 Birrell 和 Nelson)。该论文描述了一种用于消除重复数据包的“调用标识符”,标志着该机制的一个基础实例。尽管作者承认要确定绝对的“首例”依然困难,但他们总结认为,对这类问题的探索凸显了人类是如何不断地重新发明解决方案,以应对分布式系统中“仅处理一次”这一持久难题的。