DyTIS: A Dynamic Dataset Targeted Index Structure Simultaneously Efficient for Search, Inse...——论文泛读

EuroSys 2023 Paper 论文阅读笔记整理

问题

在现实生活中,许多数据集都是复杂且动态的,即它们的键密度在整个键空间上变化,它们的键分布随时间变化。对于这样的动态数据集,使得索引结构能够高效支持数据管理中的所有关键操作,特别是搜索、插入和扫描,是一项具有挑战性的任务。

挑战

对于内存中的数据管理系统,例如内存数据库和键值存储 [4, 12, 34, 35, 56],索引结构的效率至关重要,强烈影响系统的最终延迟 [21, 44, 57, 62]。随着快速存储系统的出现,软件层(即索引结构)变得越来越重要。

现有方法局限性

传统的索引结构,如B+-树和哈希索引,是当今系统中支持三个关键操作的组成部分,具体来说是搜索、插入和扫描。它们的局限性在于每种结构都在一种操作上表现出色,但难以有效地支持其他操作。例如,哈希索引在搜索方面表现出色,但对范围查询的支持不够好;B+-树则相反。最近,已经提出了能够在所有三个操作上表现出色的学习索引 [21, 26, 57]。但学习索引需要进行训练,当数据集的特征是静态且简单时,表现良好,一旦这个假设破裂,如何进行多少次训练以及何时再次进行训练成为难以克服的困难障碍,可能导致性能下降。

本文方法

我们提出了DyTIS,针对动态数据集的索引。定义了动态数据集,并提出了量化其动态特性的方法。

  • 基于可扩展哈希结构,利用了数据集键分布的累积分布函数(CDF),并随着数据集的增长学习和调整其结构。

  • 通过自然键顺序对键进行分组,并在每个存储桶中按排序顺序维护键,以支持哈希索引的扫描操作。

  • 通过重映射函数,将非均匀密钥重新分配到均匀分布中,同时保持密钥的自然顺序。

开源代码:GitHub - unist-ssl/DyTIS: Open-source repository for the paper "DyTIS: A Dynamic Dataset Targeted Index Structure Simultaneously Efficient for Search, Insert, and Scan", EuroSys '23

实验结果表明,对于动态数据集,DyTIS提供了比最先进的学习索引更高的性能。

实验

实验环境:两个Intel Core i9-9900K(8核,3.6Ghz)、16MB L3缓存、64GB DDR DRAM。安装了Ubuntu 18.04 LTS和Linux内核5.4版,超线程功能被关闭。

数据集:Map-M、Map-L[29,51]、ReviewM、Review-L[46]、Taxi[15]

实验对比:各种操作的吞吐量、延迟、并发性

总结

针对复杂数据集的索引,如何同时高效的支持搜索、插入和扫描。本文提出DyTIS:基于可扩展哈希结构,利用数据集键分布的累积分布函数(CDF),并随着数据集的增长学习和调整其结构;通过自然键顺序对键进行分组,并在每个存储桶中按排序顺序维护键,以支持哈希索引的扫描操作;通过重映射函数,将非均匀密钥重新分配到均匀分布中,同时保持密钥的自然顺序。

你可能感兴趣的:(论文阅读,论文阅读,KV存储)