一种索引模型的构建方法及装置制造方法及图纸

技术编号:27224067 阅读:16 留言:0更新日期:2021-02-04 11:45
一种索引模型的构建方法及装置,该方法包括:基于第一数组预估所述第一数组对应的索引模型的参数;基于索引模型的参数和第一条件对第一数组进行切分,获得用于描述索引模型中每个节点的函数和用于描述索引模型中的根节点和每个中间节点的映射表。因此,采用上述方法构建的索引模型可以实现提升索引模型的查询速度且减少索引模型占用的内存空间。速度且减少索引模型占用的内存空间。速度且减少索引模型占用的内存空间。

【技术实现步骤摘要】
一种索引模型的构建方法及装置


[0001]本申请涉及数据库
,尤其涉及一种索引模型的构建方法及装置。

技术介绍

[0002]目前,在存储、数据库和大数据等领域,数据快速查找的需求越来越高。业界主流做法是对数据构建索引以加速数据查找。主流的索引包括B树,B+树等,比如,当前索引主要是通过指纹(fingerprint)关键字(key)和逻辑区块地址(logical block address,lba)key构建的B树或者B+树索引,用以支持精确查找和区间查找,如图1所示为一个B+树索引,其中,B+树是高度为3,每页存放4条记录,扇出为5。
[0003]随着人工智能技术的发展,把机器学习和索引相结合成为一种发展趋势,利用数据分布信息来构建索引,可以实现加速查找,减少索引空间。
[0004]如图2(a)和图2(b)所示为一种学习型索引构建示意图,其主要设计思路为对数据按分布进行大致切分,然后在误差范围内进行二分查找,具体步骤如下:
[0005]1、应用机器学习获取keys分布的累积分布函数(Cumulative Distribution Function,CDF)函数:
[0006]F(K)=P(key<=K),表示一个随机出现的key值不超过给定K的概率。
[0007]2、假设N是所要存储keys的总数,则p=F(key)*N就给出了给定key的位置估计。
[0008]3、只要上述估计能像B树一样保证误差范围(Min-err和Max_err),则上述模型就可替代B树:对给定key,计算p=F(key)*N,则在[p-min_err,p+max_err]范围内可以搜索到该给定key。如图2(a)所示,pos(即position,简称p)。
[0009]由上可知,传统的索引表构建是基于固定规则的,与数据无关,通过严谨的规则设定,可以保证在最坏情况下索引结果的准确无误,但是针对大多数情况,固定规则过于冗余,占用内存空间较大。而当前的学习型索引构建方法存在更新代价较高的问题,如果数据有变化就需要全部重新训练。

技术实现思路

[0010]本申请实施例提供一种索引模型的构建方法及装置,用以优化现有的模型构建方法。
[0011]第一方面,本申请实施例一种索引构建方法,该方法包括:基于第一数组预估所述第一数组对应的索引模型的参数;基于所述索引模型的参数和第一条件对所述第一数组进行切分,获得用于描述所述索引模型中每个节点的函数和用于描述所述索引模型中的根节点和每个中间节点的映射表;其中,所述索引模型包括一个根节点,多个中间节点和多个叶节点,所述根节点对应所述第一数组,每个中间节点和每个叶节点对应所述第一数组切分后的一段数组;用于描述所述根节点的函数是基于所述第一数组训练得到的,用于描述每个中间节点的函数是基于该中间节点对应的数组训练得到的,用于描述每个叶节点的函数是基于该叶节点对应的数组训练得到的;用于描述所述根节点的映射表是将所述第一数组
首次切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;用于描述每个中间节点的映射表是将该中间节点对应的段数组切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;其中,所述第一条件是指任一用于描述叶节点的函数满足:该叶节点对应的数组中任一关键字采用用于描述该叶节点的函数计算得到的估计下标值与该关键字在该叶节点对应的数组中的真实下标值的差值的绝对值不超过第一阈值。
[0012]采用上述方法构建的索引模型可以实现提升索引模型的查询速度且减少索引模型占用的内存空间。
[0013]在一种可能的设计中,所述方法还包括:接收新关键字插入请求;基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,若确定用于描述所述第一叶节点的函数满足所述第一条件,则所述索引模型不更新;若确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。
[0014]采用上述设计,可以实现支持局部数据的重新训练,进而减少全量或大量数据重新训练的频率,可以降低索引模型更新的代价,提升索引模型的更新效率。
[0015]在一种可能的设计中,所述方法还包括:接收新关键字插入请求;基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数不满足所述第一条件,将所述第一叶节点作为一个新的中间节点,将新的用于描述第一叶节点的函数作为用于描述所述新的中间节点的函数,将更新后的所述第一叶节点对应的数组切分为多个数组,确定用于描述所述新的中间节点的映射表,并基于所述多个数组确定与每个数组对应新的叶节点,用于描述每个新的叶节点的函数;采用用于描述所述新的中间节点的函数和映射表以及用于描述每个新的叶节点的函数更新所述索引模型。
[0016]采用上述设计,可以实现支持局部数据的重新训练,进而减少全量或大量数据重新训练的频率,可以降低索引模型更新的代价,提升索引模型的更新效率。
[0017]在一种可能的设计中,所述方法还包括:接收关键字删除请求;基于用于描述根节点和每个中间节点的映射表,确定第二叶节点,所述第二叶节点为所述关键字对应的叶节点,将所述关键字从所述第二叶节点对应的数组中删除,获得更新后的所述第二叶节点对应的数组;在将所述关键字从所述第二叶节点对应的数组中删除后,若确定用于描述所述第二叶节点的函数满足所述第一条件,则所述索引模型不更新;若确定用于描述所述第二叶节点的函数不满足所述第一条件,基于更新后的所述第二叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第二叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。
[0018]采用上述设计,可以实现支持局部数据的重新训练,进而减少全量或大量数据重
新训练的频率,可以降低索引模型更新的代价,提升索引模型的更新效率。
[0019]在一种可能的设计中,所述索引模型的参数包括所述第一数组切分成的总段数、每段数组平均覆盖的数据点数以及所述索引模型的第二层包括的中间节点的数目。
[0020]在一种可能的设计中,任一叶节点对应的数组包括的数据点数大于等于第二阈值。
[0021]采用上述设计可以避免第一数组切分碎片化的问题。
[002本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种索引构建方法,其特征在于,包括:基于第一数组预估所述第一数组对应的索引模型的参数;基于所述索引模型的参数和第一条件对所述第一数组进行切分,获得用于描述所述索引模型中每个节点的函数和用于描述所述索引模型中的根节点和每个中间节点的映射表;其中,所述索引模型包括一个根节点,多个中间节点和多个叶节点,所述根节点对应所述第一数组,每个中间节点和每个叶节点对应所述第一数组切分后的一段数组;用于描述所述根节点的函数是基于所述第一数组训练得到的,用于描述每个中间节点的函数是基于该中间节点对应的数组训练得到的,用于描述每个叶节点的函数是基于该叶节点对应的数组训练得到的;用于描述所述根节点的映射表是将所述第一数组首次切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;用于描述每个中间节点的映射表是将该中间节点对应的段数组切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;其中,所述第一条件是指任一用于描述叶节点的函数满足:该叶节点对应的数组中任一关键字采用用于描述该叶节点的函数计算得到的估计下标值与该关键字在该叶节点对应的数组中的真实下标值的差值的绝对值不超过第一阈值。2.如权利要求1所述的方法,其特征在于,还包括:接收新关键字插入请求;基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,若确定用于描述所述第一叶节点的函数满足所述第一条件,则所述索引模型不更新;若确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。3.如权利要求1所述的方法,其特征在于,还包括:接收新关键字插入请求;基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数不满足所述第一条件,将所述第一叶节点作为一个新的中间节点,将新的用于描述第一叶节点的函数作为用于描述所述新的中间节点的函数,将更新后的所述第一叶节点对应的数组切分为多个数组,确定用于描述所述新的中间节点的映射表,并基于所述多个数组确定与每个数组对应新的叶节点,用于描述每个新的叶节点的函数;采用用于描述所述新的中间节点的函数和映射表以及用于描述每个新的叶节点的函
数更新所述索引模型。4.如权利要求1-3任一项所述的方法,其特征在于,还包括:接收关键字删除请求;基于用于描述根节点和每个中间节点的映射表,确定第二叶节点,所述第二叶节点为所述关键字对应的叶节点,将所述关键字从所述第二叶节点对应的数组中删除,获得更新后的所述第二叶节点对应的数组;在将所述关键字从所述第二叶节点对应的数组中删除后,若确定用于描述所述第二叶节点的函数满足所述第一条件,则所述索引模型不更新;若确定用于描述所述第二叶节点的函数不满足所述第一条件,基于更新后的所述第二叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第二叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。5.如权利要求1-4任一项所述的方法,其特征在于,所述索引模型的参数包括所述第一数组切分成的总段数、每段数组平均覆盖的数据点数以及所述索引模型的第二层包括的中间节点的数目。6.如权利要求1-5任一项所述的方法,其特征在于,任一叶节点对应的数组包括的数据点数大于等于第二阈值。7.如权利要求1-6任一项所述的方法,其特征在于,还包括:接收第一关键字的位置查询请求;基于用于描述所述索引模型中的根节点和每个中间节点的映射表,确定第三叶节点,所述第三叶节点为所述第一关键字对应的叶节点;基于用于描述所述第一叶节点的函数确定所述第一关键字在所述第一叶节点对应的数组中的真实下标值;反馈所述第一关键字在所述第一叶节点对应的数组中的真实下标值。8.一种索引构建的装置,其特征在于,包括:收发器、处理器和存储器;所述处理器调用所述存储器执行:基于第一数组预估所述第一数组对应的索引模型的参数;基于所述索引模型的参数和第一条件对所述第一数组进行切分,获得用...

【专利技术属性】
技术研发人员:李嘉周文礼
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1