Skip to main content
QUICK REVIEW

[论文解读] RadixSpline: A Single-Pass Learned Index

Andreas Kipf, Ryan Marcus|arXiv (Cornell University)|Apr 30, 2020
Advanced Data Storage Technologies参考文献 30被引用 26
一句话总结

RadixSpline (RS) 是一种单遍学习索引,通过两阶段方法在排序数据上高效构建:首先以有界误差拟合累积分布函数(CDF)的分段线性样条,然后使用基数表实现快速查找路由。与最先进的学习索引(如 RMI)相比,RadixSpline 在索引大小和查找性能方面表现具有竞争力,仅需两个可调超参数,且实现复杂度极低。

ABSTRACT

Recent research has shown that learned models can outperform state-of-the-art index structures in size and lookup performance. While this is a very promising result, existing learned structures are often cumbersome to implement and are slow to build. In fact, most approaches that we are aware of require multiple training passes over the data. We introduce RadixSpline (RS), a learned index that can be built in a single pass over the data and is competitive with state-of-the-art learned index models, like RMI, in size and lookup performance. We evaluate RS using the SOSD benchmark and show that it achieves competitive results on all datasets, despite the fact that it only has two parameters.

研究动机与目标

  • 设计一种学习索引结构,可在对排序数据的单次遍历中完成构建,克服现有学习索引存在的多轮训练瓶颈。
  • 支持高效的等值查询和范围查询(例如下界查找),同时保持极低的内存占用和低延迟。
  • 通过将超参数数量减少至仅两个(样条误差和基数表大小)来简化超参数调优。
  • 评估其在真实系统中的适用性,特别是 LSM-tree 架构,其中索引重建发生在合并操作期间。

提出的方法

  • 对排序数据的累积分布函数(CDF)拟合分段线性样条,确保每段的最大误差不超过用户定义的样条误差参数。
  • 使用键的最高有效位(例如 20 位)构建扁平的基数表,排除公共前缀位,以实现对相关样条段的快速路由。
  • 在对排序数据的单次遍历中同时完成样条拟合与基数表构建,实现每个元素的常数时间处理。
  • 在选定的样条段内使用二分查找定位精确键,最大限度降低查找延迟。
  • 采用基于步长的索引策略(例如每 32 个键取一个)以与传统 B+树和 ART 索引进行对比。
  • 使用 SOSD 基准测试真实世界数据集,测量构建时间、查找延迟和索引大小。

实验结果

研究问题

  • RQ1能否在对排序数据的单次遍历中构建学习索引,同时保持与现有方法相当的索引大小和查找性能?
  • RQ2与需要多轮训练的多遍学习索引(如 RMI)相比,单遍学习索引在索引大小和查询延迟方面的性能表现如何?
  • RQ3两个超参数(样条误差和基数大小)在多大程度上可用于调节内存使用与查找速度之间的权衡?
  • RQ4RadixSpline 是否能有效集成到 LSM-tree 架构中,以在极低写入开销下提升读取性能?
  • RQ5在数据偏斜或存在大量异常值的分布下,RadixSpline 相较于其他学习索引结构的表现如何?

主要发现

  • RadixSpline 的查找延迟与最先进的 RMI 模型相当,所有数据集的平均延迟均低于 800ns。
  • RadixSpline 的索引大小约为未压缩键大小的 6.6%(200M 个 64 位键为 100 MiB),与 RMI 相当,显著小于传统索引。
  • RadixSpline 的构建时间几乎与 ART 和 B+树相当,且远快于 RMI(后者需要多轮训练)。
  • 在 RocksDB 的 LSM-tree 实验中,用 RadixSpline 替代 B+树后,平均读取时间减少超过 20%,总执行时间从 712 秒降至 521 秒,内存使用量减少 45%。
  • 通过将样条误差从 2 调整至 16,基数位数从 25 调整至 20,RadixSpline 将内存使用量减少了 99.9%(从约 650 MiB 降至约 200 MiB),仅在 face 数据集上导致 11.5% 的性能下降。
  • 单遍构建机制使得 RadixSpline 能够高效集成到 LSM-tree 的合并流程中,在已执行重建操作的场景下,延迟开销可忽略不计。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。