摘 要: 索引是数据库系统中用于提升数据存取性能的主要技术之一.在大数据时代,随着数据量的不断增长,传 统索引(如 B+树)的问题日益突出:(1)空间代价过高.例如,B+树索引需要借助 O(n)规模的额外空间来索引原始的数 据,这对于大数据环境而言是难以容忍的.(2)每次查询需要多次的间接搜索.例如,B+树中的每次查询都需要访问从 树根到叶节点路径上的所有节点,这使得 B+树的查找性能受限于数据规模.自 2018 年来,人工智能与数据库领域的 结合催生了“学习索引”这一新的研究方向.学习索引利用机器学习技术学习数据分布和查询负载特征,并用基于数 据分布拟合函数的直接式查找代替传统的间接式索引查找,从而降低索引的空间代价并提升查询性能.首先对学习 索引技术的现有工作进行了系统梳理和分类;然后,介绍了各种学习索引技术的研究动机与关键技术,对比分析了各 种索引结构的优劣;最后,对学习索引的未来研究方向进行了展望.

1.存在的原因:

传统索引 在大数据环境下呈现出两个主要问题:

(1)空间代价过高.例如,B+树索引需要借助 O(n)规模的额外空间来索引 原始的数据,这对于大数据环境而言是难以容忍的.

(2)每次查询需要多次的间接搜索.例如,B+树中的每次查询 都需要访问从树根到叶节点路径上的所有节点.这使得 B+树的查找性能在大规模数据集上将变得较差.

1 面向一维范围查询的学习索引

面向一维范围查询的索引结构,需要高效地支持插入、删除、更新、点查询和范围查询等操作.这一类型的索引结构应用最为普遍,被大多数通用型数据库采纳为默认索引。常见的面向一维范围查询的索引结构有 B+ 树和日志结构合并(log-structured merge,简称 LSM)树。目前,使用机器学习模型替代这一类型的索引结构吸 引了较多的关注

B+树可以看作是一个模型,它的输入是一个键,输出是该键对应的记录在排序数组中的位置。.可以将 B+树看作一个回归树(regression tree),它将一个键映射到一个具有最大误 差界限(error bound)(即内存块或磁盘页大小)的数组位置,并保证如果该键对应的记录存在,就可以在误差范围 内找到它[7].因此,用其他机器学习模型替代 B+树是可行的,只要这些模型也能够提供类似的保证.显然,所有的 回归模型都能够提供类似的保证,包括线性回归模型和神经网络模型.

总的来说,面向一维范围查询的学习索 引的设计目标如下:在一个排序数组上,使用一个或一组模型有效地近似累积分布函数(cumulative distribution function,简称 CDF),使用该模型可以高效地预测出给定键在数组中的位置.

Kraska等人提出了学习索引框架(learning index framework,简称LIF)和递归模型索引(recursive model index,简称 RMI)。RMI 旨在解决学习索引的精度问题

RMI 的结构(如图 1 所示)是由多个模型组成的分层模型结构.其中,第 1层只有一个模型,其余每一层都包含多个模型.RMI 中的每一个模型都以键 作为输入,并返回一个位置.上层模型的输出结果用于选择下一层的模型,最后一层模型的输出作为 RMI 的输 出

RMI 的分层模型结构有以下优点:

1)它利用了之前实验得到的结论,即机器学习模型可以拟合 CDF 的大体形状,这是 RMI 中第 1 层模型 的作用.由于建立在整个数据集上的单一模型难以精确定位到单条记录,RMI 将数据集划分为更小的 子空间,并在每个子空间上训练模型,从而提高查找精度

2)RMI 允许构建混合使用多种模型,因此能够充分利用不同模型的优点.对于第 1层模型,使用神经网络 是一种较好的选择,因为神经网络通常能够学习复杂的数据分布.RMI 的底层可以考虑线性回归模 型,因为线性回归模型具有更低的空间代价和执行成本.如果数据分布难以拟合为某种模型,叶节点 允许退化为 B+树节点,这保证了学习索引的最差查找性能与 B+树相当.

在 RMI 输出预测的位置后,还需要在排序数组中进行最后的搜索.RMI 的最底层的每个模型在训练时会保存一个误差界限,后续的搜索策略使用预测值作为中心点,在误差范围内执行二分搜索. Kraska等人报告的实验 结果[7]令人振奋:在多个数据集上,学习索引的查找性能比B+树快 1.5 倍至 3 倍,并且仅占用了比 B+树低 2 个数 量级的空间

2. 面向多维范围查询的学习索引

多维查询是指一次查询涉及多个属性维度.最经典的多维查询应用是空间查询.这类查询返回二维平面空间中的一个矩形范围,目前关于空间索引已有大量研究成果,主要可分为以下三类:

第一类索引将空间划分为区域,并对这些区域建索引,典型的索引结构有 KD 树[59](面向 k 维空间)、四叉树(quadtree)[60](面向二维空间)和八叉树(octree)[61](面向三维空间).

第二类索引将数据集划分为不同的子集,然后 对这些子集进行索引,经典的索引结构有R树[62]和它的变体[63-65].

第三类索引将多维空间转换为一维空间,然后 在一维空间上建索引,典型的转换方法有希尔伯特空间填充曲线(Hilbert space filling curve)[66]和 Z 顺序曲线 (Z-order curve)[66,67].这些结构有的是专为二维或三维空间设计的,有的结构可以适用于更高维空间,或者易于扩 展到高维场景.

将学习索引的思想应用到多维索引中并不容易,因为学习索引要求数据有序,而多维数据并不是天然有序的.一种直观的解决方式是使用第三类索引,即将多维空间上的数据投影到一维空间上,并在一维空间上建立学 习索引.这种方法的难点在于投影策略的设计.如果使用简单的多维CDF作为映射函数,那么具有相同映射值的 两个点可能在多维空间中相距很远.所以,设计优秀的映射函数,或者说设计优秀的数据布局(data layout)策略, 是设计学习多维索引的关键 

3 面向点查询的学习索引

它们不支持或不需要范围查询.针对这些应用需求,人们设计了面向点查询的索引结构.例如,哈希索引具有 O(1)的查询时间复杂度和空间复杂度,优于 B+树索引结构。

学习哈希索引的目标是将学到的数据分布均匀的映射到给定数量的哈希桶中,这 只需要将键的 CDF 按照给定的哈希桶数量缩放即可.与面向范围查询的学习索引相同,学习哈希索引继续使用 RMI 模型学习键的分布.与简单的哈希函数相比,学习哈希索引显著降低了哈希冲突的概率。学习哈希索引的大小不会受到数据集大小的影响。在较小的数据集 上,学习哈希索引显然在空间效率上不具备优势.

4 面向存在查询的学习索引

存在查询用于判断某一元素是否存在于一个集合中.最经典的支持存在查询的数据结构是布隆过滤器(Bloom filter)。 布隆过滤器由一个二进制位向量和一组哈希函数组成,具有高插入 性能、高查找性能、低空间占用等优点.当插入一个新的元素时,布隆过滤器使用哈希函数将键映射得到一组 数字,并在二进制位向量中将这组数字对应的位置设为 1.当查找某个元素时,如果元素对应的一组哈希值在二 进制向量中都为 1,则布隆过滤器判定该元素存在于集合中,否则判定不存在

学习哈希索引的目标是降低存在的键之间的冲突概率,而学习布隆过滤器的目标是降低存在的键 与不存在的键之间的冲突概率

7 结束语

学习索引尝试使用机器学习模型直接替代传统的数据库索引结构,并提升查找性能和降低索引的空间代价.学习索引是目前机器学习和数据库技术相结合的一个重要突破,因此一经提出即引起了学术界的广泛关注. 本文综述了学习索引的研究进展,并提出了学习索引的一个分类框架.基于该分类框架,论文详细讨论了各类学 习索引的问题、进展和存在的问题.其中,第一类是面向一维范围查询的学习索引,这一类学习索引得到了最多 的关注,在插入策略和模型设计等方面得到了优化.第二类是面向多维范围查询的学习索引,这一类工作主要关 注如何将多维空间数据投影到一维空间,并使用面向一维空间的机器学习模型进行学习.第三类是面向点查询 的学习索引,这一类工作关注如何使用机器学习方法降低或增加哈希冲突的概率.最后一类是存在索引,这一类 工作将存在查询建模为二元概率分类任务.最后,论文还介绍了面向学习索引的测试基准研究进展,并对学习索 引的未来研究方向进行了展望.

学习索引: 现状与研究展望相关推荐

  1. 数据治理的研究现状及未来展望

    数据作为人工智能和大数据的核心要素,将对人类社会发展带来深刻影响.随着数据容量的快速积累.数据质量和运算能力的不断提高,如何使用和管理数据成为第四次工业革命带给人类社会的一个重要命题. 数据治理有两种 ...

  2. 【论文笔记】基于深度强化学习的机器人操作行为研究综述

    目录 摘要 关键词 1 引言 2 概念和术语 2.1 深度学习 2.2 强化学习 2.2.1 强化学习算法原理 2.2.2 强化学习算法分类 1. 无模型(model-free)算法和基于模型(mod ...

  3. 万字长文概览深度学习的可解释性研究

    ↑ 点击蓝字 关注视学算法 作者丨王小贱@知乎 来源丨https://www.zhihu.com/column/buaabigcity 编辑丨极市平台 本文仅用于学术分享,如有侵权,请联系后台作删文处 ...

  4. 《强化学习周刊》第26期:UCL UC Berkeley发表深度强化学习中的泛化研究综述、JHU推出基于强化学习的人工决策模型...

    No.26 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,其研究进展与成果也引发了众多关注.为帮助研究与工程人员了解该领域的相关进展和 ...

  5. 详解深度学习的可解释性研究(上篇)

    作者 | 王小贱 来源 | BIGSCity知乎专栏 摘要:<深度学习的可解释性研究>系列文章希望能用尽可能浅显的语言带领大家了解可解释性的概念与方法,以及关于深度学习可解释性工作的研究成 ...

  6. 全球及中国生物识别车辆访问技术行业十四五应用现状及未来展望规划报告2022-2027年

    全球及中国生物识别车辆访问技术行业十四五应用现状及未来展望规划报告2022-2027年 [搜索鸿晟信合查看官网更多内容!]  生物识别车辆访问技术位于起步阶段,指纹识别.虹膜扫描.面部识别等技术可以取 ...

  7. 干货 | 深度学习的可解释性研究(一):让模型「说人话」

    在这篇文章中: 可解释性是什么? 我们为什么需要可解释性? 有哪些可解释性方法? 在建模之前的可解释性方法 建立本身具备可解释性的模型 在建模之后使用可解释性性方法作出解释 关于 BIGSCity 参 ...

  8. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文(下)

    [摘要] 除了范围索引之外,点查找的Hash Map在DBMS中起着类似或更重要的作用. 从概念上讲,Hash Map使用Hash函数来确定性地将键映射到数组内的随机位置(参见图[9 ],只有4位开销 ...

  9. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文(中)

    [摘要] 为了克服挑战并探索模型作为索引替代或丰富的潜力,我们开发了学习索引框架 (LIF),递归模型索引(RMI)和基于标准误差的搜索策略. 我们主要关注简单的全连接神经网络,因为它们的简单性,但其 ...

最新文章

  1. 手把手教你熟悉Git操作
  2. SAP PM IW33里查看维护订单相关的维护计划
  3. 多线程编程学习笔记——async和await(三)
  4. Redis系列二:reids介绍
  5. NopCommerce 4.2的安装与运行
  6. Popular Cows POJ - 2186(tarjan算法)+详解
  7. 工作207:修改表头按钮样式
  8. SpringCloud Ribbon之概述(一)
  9. 国潮艺术插画设计没有灵感看这里
  10. RAID原理分析总结-运维工作记录
  11. windows下测试flask的例子tuorial报错flask KeyError: 'DATABASE'
  12. 傅里叶变换公式整理,意义和定义,概念及推导
  13. 什么是网络安全等级保护
  14. 在 LaTeX 中插入图片
  15. 前端工程师项目能力精选文章50篇
  16. java星星闪烁代码_jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
  17. 2019年8月23日 星期五(韩天峰的swoole)
  18. Win11如何关闭自动更新?Win11更新服务关闭教程
  19. 用芯弹一首《大加洛普舞曲》:从AI-ISP,透视vivo的双芯之路
  20. android指南针程序,如何在Android上制作精确的指南针

热门文章

  1. dmb mysql_MySQL DMB监控备份系统更新至v2.2
  2. 乐视电视的病毒式增速效应与“可怕”现象
  3. oracle中字段长度与汉字,Oracle存储汉字字段长度
  4. 把本地firefox书签导入到QQ收藏夹
  5. GoTrace快递查询接口
  6. 意志力训练 (个人笔记)
  7. Python用pandas读取excel数据
  8. linux下实时时钟芯片(RTC)的读写
  9. Android面试需要考察的方面
  10. 图像的边缘检测和缺失修复(附matlab代码)