为数据库构建基于存储布局的多维学习索引

作者: 徐家兴

来源: 学术头条

发布日期: 2020-09-18

本文介绍了名为Flood的多维学习索引结构,通过优化索引结构和存储布局,自动适应具体数据集和查询集合,显著优于现有的多维索引技术。Flood框架通过学习查询集合的分布函数和使用累计分布函数模型优化存储布局,实验显示其在多个真实数据集上的索引速度大大提升。

在多维索引表格上进行扫描和筛选是现代分析型数据库引擎的关键技术。为了对这些操作进行优化,数据库常建立起聚类的索引结构,如R-Trees,Z-ordering等,然而这些索引结构在不同的数据集以及查询集合下很难进行统一优化。在本篇论文中,作者提出了名为Flood的多维学习索引结构。通过同时优化索引结构以及存储布局,这种结构自动地调整自身以适应具体数据集和查询集合。

该工作用来为端到端学习型数据库系统构建索引模块。在多维索引表格上进行扫描和筛选是现代分析型数据库引擎的关键技术之一。如果数据完全根据其中某一个属性进行组织,即不会涉及到多个属性同时被访问的情况,那么通过建立平衡树或者进行简单二分搜索的方法已经足够。然而,如果数据需要通过不同属性进行筛选,那么通过建立多层索引的方法是不足以解决问题的。多层索引所带来的存储代价是的这项技术只能被应用在很小的范围内。

另一种解决方案是建立起多维索引对数据进行组织管理。如Redshift以及Spark-SQL使用Z-ordering技术来对数据进行布局,一些空间数据库则尝试使用R-tree来进行索引。然而,现有的多维索引技术有着显著的缺点。首先,这些技术都非常难以根据实际的数据集进行优化。其次,没有一项方案可以作为所有问题的统一解决方法。不同的数据集以及查询集合将会决定使用不同的多维索引技术。

为了解决上述缺点,本文提出了名为Flood的基于内存的学习多维索引。该索引方案的重点在于自动地同时优化数据存储布局以及索引的结构,以此来获得优于其他所有多维索引的索引速度。Flood框架有以下两个重点:使用一个下采样的查询集合,即一小部分查询样例构成的查询集合样本,以此来学习不同维度属性在查询过程中的使用频率。基于该信息,Flood框架自动地调节数据存储布局,以此优化索引性能。

使用一个累计分布函数CDF模型来将多维上可能的倾斜数据映射到一个均匀空间中。这个平滑过程使得每一个存储的存储单元储存的数据量基本一致。以此更快地进行索引。Flood框架的主要贡献有三:提出了第一个学习型多维索引,Flood框架。Flood从一个筛选断言集合,即一个下采样的查询集合中学习查询集合的分布函数,以此调节数据存储布局。

使用三个真实数据集评估了多个不同的多维索引结构,实验显示Flood框架大大优于其他的多维索引结构。实验显示出Flood框架在不同的Filter Predicates上都实现了搜索加速,其索引结构的建立速度与其他多维索引的建立速度相当。多维索引查询的难点在于同时对Y和Z两个属性进行筛选,对其中某一个维度进行排序的二分搜索无法顺利完成该任务。

如果把整个多维空间看作一个欧几里得空间的话,不同于单维数据,多维数据不可以基于一个维度,或者属性进行排序,这导致很多单维上可以使用的索引方法在多维索引上并不适用。但是如果将整个空间分成一个个小的格子,在单独一个格子内使用统一维度进行排序,则在访问该格子内的数据中就可以通过使用单维索引技术加速索引。

映射查找存储块:通过查询中的筛选条件得到需要遍历的数据网格,并且将索引范围约束在这些网格当中。凝练查找范围:对按照某一维度进行排序的网格数据进行进一步筛选,根据查找筛选条件对排序维度的限制进一步缩小检索的范围。进行搜索。网格分割需要决定每一个维度所应该分割的子空间个数。Flood框架可以通过学习选择合适的网格个数以及决定哪一个维度作为排序维度,即在网格内对数据进行排序的维度。

根据CDF模型,对空间进行不均匀的划分,达到每一个网格的数据点数量基本一致。实验显示当数据量方差较小时,索引的速度有所加快。在凝练搜索范围的过程中,通过使用学习索引模型,RMI这一个多层线性回归模型的索引结构,加速范围索引的速度。论文中称之为piecewise linear model。本文在Sales,OSM,Perform三个真实数据上进行了试验。

同时,还验证了数据扁平化等优化方法在提升索引速度上的有效性。

UUID: ddecdb6b-0fab-47af-9f1e-8377fcf2f639

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/学术头条公众号-pdf2txt/学术头条2020年-下/2020-09-18_SIGMOD2020为数据库构建基于存储布局的多维学习索引.txt

是否为广告: 否

处理费用: 0.0041 元