一种基于布隆过滤器的学习索引方法及系统技术方案

技术编号:36751962 阅读:20 留言:0更新日期:2023-03-04 10:39
一种基于布隆过滤器的学习索引方法及系统,具体涉及一种基于前缀布隆过滤器的学习索引方法及系统,为了解决现有索引在计算机查询数据不存在计算机数据库中时,需遍历相应索引的整体结构或机器学习模型才能确定计算机查询数据是否存在于计算机数据库中及其在数据库中的存在位置,使得计算机数据查询时间过长的问题,它包括构建树形结构的学习索引,学习索引包括非叶子结点和叶子结点,针对非叶子结点,利用前缀布隆过滤器判断计算机数据是否存在于计算机数据库内,若不存在,则返回计算机数据不存在于计算机数据库的结果;若存在,在叶子结点中利用机器学习模型查询计算机数据在计算机数据库内的位置。属于数据库索引领域。域。域。

【技术实现步骤摘要】
一种基于布隆过滤器的学习索引方法及系统


[0001]本专利技术涉及一种索引方法及系统,具体涉及一种基于前缀布隆过滤器的学习索引方法及系统,属于数据库索引领域。

技术介绍

[0002]随着硬件技术不断提高,现在的计算机系统使用具有千兆字节数量级大小的主存储器。当整个计算机数据库存储在主存储器中时,假设以磁盘I/O作为数据库操作的主要成本,此时研究人员的重点则在一些可以严重影响计算机数据库系统性能的结构上,索引结构就是其中的研究重点之一。现代计算机数据库基本使用传统索引结构,如B+树等,相较于无索引的搜索算法,B+树的I/O次数要小得多,因此B+树被大多数传统计算机数据库系统所采用。然而现在计算机数据库的数据量已然达到了PB级以上,传统的计算机数据库索引也相应增大,因此不可能将全部索引放到内存中,因为这会影响索引的性能,进而限制计算机数据库的性能。为了解决这个问题,学习索引(Learned Index)的概念被提出,学习索引将机器学习算法与传统索引结构相融合,使用机器学习模型优化/替代传统索引结构。由于机器学习模型只需要存储少部分参数,因此极大地降低了空间代价,同时,学习索引相较于传统索引考虑了数据的一些特征,如数据分布规律等,进而提高了索引性能。
[0003]在计算机的数据查询时,上述索引结构在数据真实存在于计算机数据库中时,无论是在空间代价还是查询效率上都具有很好的表现,但是当数据不存在于计算机数据库中时,上述学习索引仍然需要运行完整的机器学习模型或整体索引结构判断数据在计算机数据库中的位置,因此在数据集中非键过多时限制了学习索引的性能。虽然布隆过滤器是可以用来判断数据是否存在,但是布隆过滤器不能返回数据的实际位置,而是返回数据是否存在于计算机数据库中。因此本文提出了基于布隆过滤器的一维学习索引,解决当查询数据不存在于计算机数据库中时查询浪费时间的问题。

技术实现思路

[0004]本专利技术为了解决当待查询的计算机数据不存在于计算机数据库中时,现有索引需遍历整体索引结构或机器学习模型才能确定待查询数据是否存在于计算机数据库中及其在计算机数据库中的位置,导致计算机数据查询时间过长的问题,进而提出了一种基于布隆过滤器的学习索引方法及系统。
[0005]本专利技术采取的技术方案是:
[0006]它包括以下步骤:
[0007]S1、获取计算机数据库作为训练集;
[0008]S2、构建树形结构的学习索引,学习索引包括非叶子结点和叶子结点,利用训练集对学习索引进行训练,针对非叶子结点,利用前缀布隆过滤器判断训练数据是否存在于计算机数据库内,若不存在,则返回数据不存在于计算机数据库的结果;若存在,在叶子结点中利用机器学习模型查询训练数据在计算机数据库内的位置,得到训练好的学习索引;
[0009]S3、将待查询的计算机数据输入训练好的学习索引内,获得计算机数据不存在于计算机数据库的结果或计算机数据在计算机数据库内的位置。
[0010]进一步地,S2中构建树形结构的学习索引,学习索引包括非叶子结点和叶子结点,利用训练集对学习索引进行训练,针对非叶子结点,利用前缀布隆过滤器判断训练数据是否存在于计算机数据库内,若不存在,则返回数据不存在于计算机数据库的结果;若存在,在叶子结点中利用机器学习模型查询训练数据在计算机数据库内的位置,得到训练好的学习索引,具体过程为:
[0011]根据训练数据自定义学习索引的层数和每层的节点个数,节点分为叶子结点和非叶子结点,一个非叶子节点处设置一个前缀布隆过滤器,叶子结点处设置一个机器学习模型,将训练集内的每个训练数据转换为二进制数据,将某个二进制数据输入构建的学习索引的第一层内,利用第一层非叶子节点的前缀布隆过滤器查询本层内是否存在对应的二进制数据,若存在对应的二进制数据,则进入下一层,利用下一层每个非叶子节点的前缀布隆过滤器查询所述下一层内是否存在对应的二进制数据;若不存在对应的二进制数据,则返回某个二进制数据不存在于计算机数据库的结果,结束查询;
[0012]重复上述操作,当每层非叶子节点的前缀布隆过滤器的判断结果均为存在某个二进制数据时,进入叶子节点,利用叶子节点的机器学习模型查询某个二进制数据在计算机数据库中的存在位置,返回位置。
[0013]进一步地,S2中机器学习模型包括多个回归模型。
[0014]进一步地,S2中学习索引的叶子结点在训练时,机器学习模型会根据叶子结点的输入数据自动选取与输入数据最拟合的回归模型进行训练,并将所述回归模型作为叶子结点的最佳模型。
[0015]进一步地,S2中学习索引的前缀布隆过滤器在训练时,根据训练数据和查询效率手动优化前缀布隆过滤器的前缀长度和hash函数。
[0016]进一步地,S2中学习索引每层非叶子节点的前缀布隆过滤器的前缀长度相较于上一层前缀布隆过滤器的前缀长度依次递增,即底层前缀布隆过滤器的前缀长度高于上一层前缀布隆过滤器的前缀长度。
[0017]一种基于布隆过滤器的学习索引系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如一种基于布隆过滤器的学习索引方法的任一步骤。
[0018]一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如一种基于布隆过滤器的学习索引方法的任一步骤。
[0019]有益效果:
[0020]本专利技术构建了树形结构的学习索引,学习索引包括叶子结点和非叶子结点,根据待查询的计算机数据对学习索引进行分层,自定义学习索引的层数和每层的节点数量,如此,采用分层结构划分数据减少了因待查询数据过大带来的模型准确率降低问题;针对学习索引的叶子节点,利用机器学习模型查询计算机数据在计算机数据库中的位置,由于机器学习模型代替节点能够考虑数据特征,所以能够更好地拟合数据;针对非叶子结点,利用前缀布隆过滤器判断待查询数据是否存在计算机数据库中,前缀布隆过滤器在有效过滤数
据的同时,能够有效的降低空间代价。即本专利技术提供了一种学习索引方法,得到了一种学习索引,利用此学习索引在查询计算机数据时,当计算机数据存在计算机数据库中时,根据学习索引叶子结点的机器学习模型能够直接输出查询的计算机数据在计算机数据库中的位置;当查询的计算机数据不存在计算机数据库中时,不需要遍历整个学习索引,只需要遍历数据连续存在的索引相邻层,直至查询的计算机数据不存在,直接返回查询的计算机数据不存在于计算机数据库的结果,无需遍历整个学习索引,节省了大量的查询时间。
[0021]由于布隆过滤器具有假阴性为0的性质,当数据存在于数据库时,布隆过滤器不会判断数据不存在,因此对存在的数据不会产生影响。然而当数据不存在于数据库时,只需设计良好的hash算法,即可使布隆过滤器以非常小的概率返回存在,因此布隆过滤器对于不存在于数据库的数据具有良好的过滤性。所以本专利技术将前缀布隆过滤器与学习索引的非叶子节点融合为一体,当查询数据不存在于数据库时,不需要遍历索引模本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于布隆过滤器的学习索引方法,其特征在于:它包括以下步骤:S1、获取计算机数据库作为训练集;S2、构建树形结构的学习索引,学习索引包括非叶子结点和叶子结点,利用训练集对学习索引进行训练,针对非叶子结点,利用前缀布隆过滤器判断训练数据是否存在于计算机数据库内,若不存在,则返回数据不存在于计算机数据库的结果;若存在,在叶子结点中利用机器学习模型查询训练数据在计算机数据库内的位置,得到训练好的学习索引;S3、将待查询的计算机数据输入训练好的学习索引内,获得计算机数据不存在于计算机数据库的结果或计算机数据在计算机数据库内的位置。2.根据权利要求1中所述的一种基于布隆过滤器的学习索引方法,其特征在于:S2中构建树形结构的学习索引,学习索引包括非叶子结点和叶子结点,利用训练集对学习索引进行训练,针对非叶子结点,利用前缀布隆过滤器判断训练数据是否存在于计算机数据库内,若不存在,则返回数据不存在于计算机数据库的结果;若存在,在叶子结点中利用机器学习模型查询训练数据在计算机数据库内的位置,得到训练好的学习索引,具体过程为:根据训练数据自定义学习索引的层数和每层的节点个数,节点分为叶子结点和非叶子结点,一个非叶子节点处设置一个前缀布隆过滤器,叶子结点处设置一个机器学习模型,将训练集内的每个训练数据转换为二进制数据,将某个二进制数据输入构建的学习索引的第一层内,利用第一层非叶子节点的前缀布隆过滤器查询本层内是否存在对应的二进制数据,若存在对应的二进制数据,则进入下一层,利用下一层每个非叶子节点的前缀布隆过滤器查询所述下一层内是否存在对应的二进制数据;若不存在对应的二进制数据,则返回某个二进制...

【专利技术属性】
技术研发人员:王宏志朱锐夏晟
申请(专利权)人:哈尔滨工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1