在大数据时代,数据访问速度是衡量大规模存储系统性能的一个重要指标,而索引是用于提升数据库系统中数据存取性能的主要技术之一。近几年,使用机器学习模型代替B+树等传统索引,拟合数据分布规律,将数据的间接查找优化为函数直接计算的学习索引(Learned Index,LI)被提出,LI提高了查询的速度,减少了索引空间开销。但是LI的拟合误差较大,不支持插入等修改性操作。文中提出了一种利用梯度下降算法拟合数据的学习索引模型GDLIN(A Learned Index By Gradient Descent)。GDLIN利用梯度下降算法更好地拟合数据,减少拟合误差,缩短本地查找的时间;同时递归调用数据拟合算法,充分利用键的分布规律,构建上层结构,避免索引结构随着数据量而增大。另外,GDLIN利用链表解决LI不支持数据插入的问题。实验结果表明,GDLIN在无新数据插入的情况下,吞吐量是B+树的2.1倍;在插入操作占比为50%的情况下,是LI的1.08倍。
数据库系统的性能通常可以使用多种指标来衡量,其中就包括数据访问速度,索引则是提高数据库系统访问速度的重要工具之一。然而,随着大数据时代的到来,不同领域的数据量都呈现爆发式增长。最近的一项研究表明,在最先进的内存数据库管理系统中,索引所占用的空间开销已经达到了总内存的55%,传统数据库索引已经遇到了发展瓶颈。因此,近年来,人们提出了学习索引(Learned Index,LI),这是一种使用机器模型代替B+树等传统索引,通过模型拟合数据分布规律,将数据的间接查找优化为函数直接计算的索引结构。LI提高了查询的速度,减少了索引的空间开销。但是目前提出的一些学习索引结构都存在数据拟合效果一般,不支持插入等修改性操作的问题。本文为了解决学习索引中存在的一些问题,提出了一种利用梯度下降算法拟合数据的学习索引结构,简称GDLIN(A Learned Index By Gradient Descent,GDLIN)。GDLIN首先利用余弦相似度对数据集进行划分,与之前其他学习索引采用的均等划分和欧几里得相似度不同,均等划分忽视了数据之间的联系,而欧几里得相似度将重点放在了向量的距离上。但是对于数据划分最重要的是将分布在同一条线段附近的点划分在一起,更注重方向上的差异,所以本文提出了一种基于余弦相似度的数据划分,并采用梯度下降拟合数据。相比于其他学习索引采用的斜率取中间值的方式,梯度下降算法可以更好地拟合数据,减少拟合的误差,提高查询效率。在构建上层结构时,GDLIN递归调用数据划分算法和数据拟合算法,充分利用数据的分布规律,避免索引结构随着数据量而增大。实验表明,在无新数据插入的情况下,GDLIN的吞吐量是B+树的2.2倍,是FITing-Tree的1.1倍。在数据插入方面,目前大多数的学习索引都是采用额外的索引结构进行存储,这些方式都是以查询时的额外搜索为代价,降低了查询的性能。在本文中,GDLIN设计了一种新的节点结构,在每个叶子节点中不仅存储模型的参数,还分配了一个数组,用于存储新插入的数据,在保证查询性能的基础上,支持数据的更新操作。实验表明,在插入操作占比为50%的情况下,GDLIN的吞吐量是LI的1.15倍,是FITing-Tree的1.07倍。
暂无评论