CN112307266A - 一种索引模型的构建方法及装置 - Google Patents

一种索引模型的构建方法及装置 Download PDF

Info

Publication number
CN112307266A
CN112307266A CN201910703886.9A CN201910703886A CN112307266A CN 112307266 A CN112307266 A CN 112307266A CN 201910703886 A CN201910703886 A CN 201910703886A CN 112307266 A CN112307266 A CN 112307266A
Authority
CN
China
Prior art keywords
leaf node
describing
node
array
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910703886.9A
Other languages
English (en)
Other versions
CN112307266B (zh
Inventor
李嘉
周文礼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910703886.9A priority Critical patent/CN112307266B/zh
Publication of CN112307266A publication Critical patent/CN112307266A/zh
Application granted granted Critical
Publication of CN112307266B publication Critical patent/CN112307266B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种索引模型的构建方法及装置,该方法包括:基于第一数组预估所述第一数组对应的索引模型的参数;基于索引模型的参数和第一条件对第一数组进行切分,获得用于描述索引模型中每个节点的函数和用于描述索引模型中的根节点和每个中间节点的映射表。因此,采用上述方法构建的索引模型可以实现提升索引模型的查询速度且减少索引模型占用的内存空间。

Description

一种索引模型的构建方法及装置
技术领域
本申请涉及数据库技术领域,尤其涉及一种索引模型的构建方法及装置。
背景技术
目前,在存储、数据库和大数据等领域,数据快速查找的需求越来越高。业界主流做法是对数据构建索引以加速数据查找。主流的索引包括B树,B+树等,比如,当前索引主要是通过指纹(fingerprint)关键字(key)和逻辑区块地址(logical block address,lba)key构建的B树或者B+树索引,用以支持精确查找和区间查找,如图1所示为一个B+树索引,其中,B+树是高度为3,每页存放4条记录,扇出为5。
随着人工智能技术的发展,把机器学习和索引相结合成为一种发展趋势,利用数据分布信息来构建索引,可以实现加速查找,减少索引空间。
如图2(a)和图2(b)所示为一种学习型索引构建示意图,其主要设计思路为对数据按分布进行大致切分,然后在误差范围内进行二分查找,具体步骤如下:
1、应用机器学习获取keys分布的累积分布函数(Cumulative DistributionFunction,CDF)函数:
F(K)=P(key<=K),表示一个随机出现的key值不超过给定K的概率。
2、假设N是所要存储keys的总数,则p=F(key)*N就给出了给定key的位置估计。
3、只要上述估计能像B树一样保证误差范围(Min-err和Max_err),则上述模型就可替代B树:对给定key,计算p=F(key)*N,则在[p-min_err,p+max_err]范围内可以搜索到该给定key。如图2(a)所示,pos(即position,简称p)。
由上可知,传统的索引表构建是基于固定规则的,与数据无关,通过严谨的规则设定,可以保证在最坏情况下索引结果的准确无误,但是针对大多数情况,固定规则过于冗余,占用内存空间较大。而当前的学习型索引构建方法存在更新代价较高的问题,如果数据有变化就需要全部重新训练。
发明内容
本申请实施例提供一种索引模型的构建方法及装置,用以优化现有的模型构建方法。
第一方面,本申请实施例一种索引构建方法,该方法包括:基于第一数组预估所述第一数组对应的索引模型的参数;基于所述索引模型的参数和第一条件对所述第一数组进行切分,获得用于描述所述索引模型中每个节点的函数和用于描述所述索引模型中的根节点和每个中间节点的映射表;其中,所述索引模型包括一个根节点,多个中间节点和多个叶节点,所述根节点对应所述第一数组,每个中间节点和每个叶节点对应所述第一数组切分后的一段数组;用于描述所述根节点的函数是基于所述第一数组训练得到的,用于描述每个中间节点的函数是基于该中间节点对应的数组训练得到的,用于描述每个叶节点的函数是基于该叶节点对应的数组训练得到的;用于描述所述根节点的映射表是将所述第一数组首次切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;用于描述每个中间节点的映射表是将该中间节点对应的段数组切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;其中,所述第一条件是指任一用于描述叶节点的函数满足:该叶节点对应的数组中任一关键字采用用于描述该叶节点的函数计算得到的估计下标值与该关键字在该叶节点对应的数组中的真实下标值的差值的绝对值不超过第一阈值。
采用上述方法构建的索引模型可以实现提升索引模型的查询速度且减少索引模型占用的内存空间。
在一种可能的设计中,所述方法还包括:接收新关键字插入请求;基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,若确定用于描述所述第一叶节点的函数满足所述第一条件,则所述索引模型不更新;若确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。
采用上述设计,可以实现支持局部数据的重新训练,进而减少全量或大量数据重新训练的频率,可以降低索引模型更新的代价,提升索引模型的更新效率。
在一种可能的设计中,所述方法还包括:接收新关键字插入请求;基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数不满足所述第一条件,将所述第一叶节点作为一个新的中间节点,将新的用于描述第一叶节点的函数作为用于描述所述新的中间节点的函数,将更新后的所述第一叶节点对应的数组切分为多个数组,确定用于描述所述新的中间节点的映射表,并基于所述多个数组确定与每个数组对应新的叶节点,用于描述每个新的叶节点的函数;采用用于描述所述新的中间节点的函数和映射表以及用于描述每个新的叶节点的函数更新所述索引模型。
采用上述设计,可以实现支持局部数据的重新训练,进而减少全量或大量数据重新训练的频率,可以降低索引模型更新的代价,提升索引模型的更新效率。
在一种可能的设计中,所述方法还包括:接收关键字删除请求;基于用于描述根节点和每个中间节点的映射表,确定第二叶节点,所述第二叶节点为所述关键字对应的叶节点,将所述关键字从所述第二叶节点对应的数组中删除,获得更新后的所述第二叶节点对应的数组;在将所述关键字从所述第二叶节点对应的数组中删除后,若确定用于描述所述第二叶节点的函数满足所述第一条件,则所述索引模型不更新;若确定用于描述所述第二叶节点的函数不满足所述第一条件,基于更新后的所述第二叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第二叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。
采用上述设计,可以实现支持局部数据的重新训练,进而减少全量或大量数据重新训练的频率,可以降低索引模型更新的代价,提升索引模型的更新效率。
在一种可能的设计中,所述索引模型的参数包括所述第一数组切分成的总段数、每段数组平均覆盖的数据点数以及所述索引模型的第二层包括的中间节点的数目。
在一种可能的设计中,任一叶节点对应的数组包括的数据点数大于等于第二阈值。
采用上述设计可以避免第一数组切分碎片化的问题。
在一种可能的设计中,所述方法还包括:接收第一关键字的位置查询请求;基于用于描述所述索引模型中的根节点和每个中间节点的映射表,确定第三叶节点,所述第三叶节点为所述第一关键字对应的叶节点;基于用于描述所述第一叶节点的函数确定所述第一关键字在所述第一叶节点对应的数组中的真实下标值;反馈所述第一关键字在所述第一叶节点对应的数组中的真实下标值。
采用上述设计可以实现提升索引模型的查询速度,简化索引模型的查询流程。
第二方面,本申请实施例提供一种装置,该装置可以是服务器,也可以是服务器内的芯片。该装置可以包括处理单元、收发单元。应理解的是,收发单元还可以是发送单元和接收单元。当该装置是服务器时,该处理单元可以是处理器,该收发单元可以是收发器;该服务器还可以包括存储单元,该存储单元可以是存储器;该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该服务器执行第一方面或第一方面任意一种可能的设计中的方法。当该装置是服务器内的芯片时,该处理单元可以是处理器,该收发单元可以是输入/输出接口、管脚或电路等;该处理单元执行存储单元所存储的指令,以使该芯片执行第一方面或第一方面任意一种可能的设计中的方法。该存储单元用于存储指令,该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该服务器内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。
第三方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面至第二方面的方法。
第四方面,本申请实施例还提供一种包含程序的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面至第二方面的方法。
附图说明
图1为本申请中B+树索引的示意图;
图2(a)为本申请中学习型索引构建示意图之一;
图2(b)为本申请中学习型索引构建示意图之二;
图3为本申请中索引模型的结构示意图;
图4为本申请中索引模型的创建流程图;
图5为本申请中数组A的切分示意图;
图6为本申请中数组A对应的索引模型;
图7为本申请中查询索引模型的示意图;
图8为本申请中索引模型的更新示意图;
图9为本申请中装置的结构示意图之一;
图10为本申请中装置的结构示意图之二;
图11为本申请中装置的结构示意图之三。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
应理解的是,索引是一种通用技术,在存储,数据库,大数据等领域都有使用场景,因此,本申请实施例可以应用于多种场景,且包括但不限于上述提到的场景。例如,本申请实施例与机器学习和系统相结合,还可以应用于人工智能(Artificial Intelligence,AI)领域。
本申请提供的索引创建方法采用分层拟合思想。采用本申请实施例提供的索引创建方法得到的索引模型包括一个根节点,多个中间节点和多个叶节点。其中。索引模型的第一层包括一个根节点,索引模型的最后一层包括多个叶节点,中间各层包括的节点可能为中间节点,也可能为叶节点。其中,根节点对应整个数组,每个中间节点和叶节点对应整个数组的一部分数据(或又可称为整个数组切分后的一段数组)。根节点和中间节点可以用函数和映射表描述,叶节点可以用函数描述。其中,这里的函数均为单调函数,例如,线性单调函数。每个函数是根据该函数描述的节点对应的数组训练得到的,例如,对一段数组包括的数据采用线性拟合方式得到对应的线性单调函数。映射表是该函数描述的节点对应的数组进行切分后的每段数组中的第一个(或最后一个)key计算得到的值(value)构建的键值对(key-value)表,映射表的作用是便于后续快速查询、插入数据以及删除数据时使用。
具体的,用于描述根节点的函数是基于整个数组训练得到的,用于描述每个中间节点的函数是该中间节点对应的数组训练得到的,用于描述每个叶节点的函数是该叶节点对应的数组训练得到的。用于描述根节点的映射表是将整个数组首次切分后得到的每段数组中的第一个key计算得到的value构建的key-value表。用于描述每个中间节点的映射表是将该中间节点对应的数组进行切分后得到的每段数组中的第一个key计算得到的value构建的key-value表;或者,用于描述根节点的映射表是将整个数组首次切分后得到的每段数组中的最后一个key计算得到的value构建的key-value表。用于描述每个中间节点的映射表是将该中间节点对应的数组进行切分后得到的每段数组中的最后一个key计算得到的value构建的key-value表。
以下仅以图3为例,说明索引模型的结构。
如图3所示为采用本申请实施例提供的索引构建的方法对数组A进行索引构建得到的索引模型示意图。其中,第一层的根节点对应数组A,用F(x)和M描述。第二层包括k个中间节点,即将数组A切分为k段,得到A1,A2,……,Ak,切分后得到的每一段数组对应一个中间节点。因此,第二层包括的k个中间节点分别对应A1(用F1(x)和M1描述),A2(用F2(x)和M2描述),……,Ak(用Fk(x)和Mk描述)。在第三层中,第二层的第1个中间节点(即用F1(x)和M1描述的中间节点)对应t个叶节点,即将A1切分为t段,得到A11,A12,……,A1t,切分后得到的每一段数组对应一个叶节点。其中,这t个叶节点分别对应A11(用F11(x)描述),A12(用F12(x)描述),……,A1t(用F1t(x)描述)。
应理解的是,图3并非数组A对应的完整的索引模型。第三层中还包括属于第二层中的其他中间节点的中间节点或叶节点,此处并未画出。例如,在第三层中,第二层的第3个中间节点(即用F3(x)和M3描述的中间节点)包括q个叶节点,q可能等于t,q也可能不等于t。
下面结合附图,以处理器为例,说明索引模型创建流程、索引模型查询流程和索引模型更新流程。
A:索引模型创建流程。参阅图4所示,为索引模型的创建流程图。
S401:当用户存储的数据达到预设数量时,处理器基于存储的数据构成的第一数组启动索引模型构建。
S402:处理器基于第一数值预估第一数组对应的索引模型的参数。
在一种可能的设计中,索引模型的参数包括第一数组切分成的总段数N_slots、每段数组平均覆盖的数据点数PN以及索引模型的第二层包括的中间节点的数目X。
在一示例中,处理器采用数据拟合算法,比如A树(A-tree)算法,对数组进行扫描,预估N_slots和PN。或者,对部分数组进行扫描,确定对该部分数组进行切分后得到PN,然后用数组包括的数据点总数除以PN得到N_slots。应理解的是,现有技术中公开了多种数据拟合算法可以实现预估N_slots和PN,此处不再赘述。进一步地,处理器根据预估的N_slots确定X。例如,第一层包括一个根节点,第二层包括的中间节点的数目X可以设定为N_slots/2、N_slots/4或者其他比例。应理解的是,第二层包括的中间节点的数目X与N_slots的比例关系可以根据经验值进行设定。
例如,数组A包括1000个数据点,处理器采用A树算法对数组A进行扫描,预估N_slots为20,PN为50,并设定第一层包括一个根节点,第二层包括5个中间节点,其中,N_slots/4=20/4=5。
S403:处理器根据上述索引模型的参数和第一条件对第一数组进行切分,获得用于描述索引模型中每个节点的函数和用于描述根节点和每个中间节点的映射表。
其中,第一条件是指任一用于描述叶节点的函数满足:该叶节点对应的数组中任一key采用用于描述该叶节点的函数计算得到的估计下标值与该key在该叶节点对应的数组中的真实下标值的差值的绝对值不超过第一阈值。
示例性地,处理器基于第一数组进行训练得到用于描述根节点的函数,然后,根据上述索引模型的预估参数中的第二层包括的中间节点的数目X,将第一数组切分为X段,进而基于X段数组确定用于描述根节点的映射表。其中,处理器可以根据用于描述根节点的函数的取值范围,将用于描述根节点的函数的取值范围分为X段,每段取值范围的长度可以相同。处理器根据这X段取值范围将第一数值切分为X段。其中,用于描述根节点的映射表为该X段数组中每段数组中的第一个key计算得到的value构建的key-value表。基于此,处理器可以获得用于描述根节点的函数和映射表。
进一步地,处理器基于上述X段数组中的每段数组进行训练得到用于描述对应该段数组的中间节点的函数。其中,上述X段数组与第二层的X个中间节点一一对应。第二层中每个中间节点对应的数组往下再细分的数组段数可以由N_slots/X确定。例如,处理器根据用于描述第k个中间节点的函数的取值范围,将用于描述第k个中间节点的函数的取值范围分为N_slots/X段,每段取值范围的长度可以相同。处理器根据这N_slots/X取值范围将第k个中间节点对应的数组切分为N_slots/X段,1≤k≤X,k为正整数。进而,处理器基于每个中间节点对应的数组切分后得到的多段数组确定用于描述该中间节点的映射表。其中,用于描述每个中间节点的映射表为该中间节点对应的数组切分后得到的多段数组中每段数组中的第一个key计算得到的value构建的key-value表。基于此,处理器可以获得第二层中X个中间节点,以及用于描述每个中间节点的函数和与每个函数对应的映射表。
处理器基于每个中间节点对应的数组切分后得到的多段数组中的每段数组进行训练得到用于描述每段数组的函数。基于第一条件针对每个中间节点对应的数组切分后得到的多段数组中的每段数组进行判断:若当前数组中任一key采用用于描述当前数组的函数计算得到的估计下标值与该key在当前数组的真实下标值的差值的绝对值不超过第一阈值,则当前数组无需继续切分,当前数组对应第三层中的一个叶节点;若当前数组中任一key采用用于描述当前数组的函数计算得到的估计下标值与该key在当前数组的真实下标值的差值的绝对值超过第一阈值,则当前数组需要继续切分,当前数组对应第三层中的一个中间节点。对于第二种情况,处理器可以采用二分的方式将当前数组分为两段数组,并得到用于描述这两段数组的函数,以及用于描述当前数组对应中间节点的映射表。基于第一条件针对这两段数组中的每段数组采用上述方法继续判断,若这两段数组对应两个叶节点,则停止继续针对这两段数组的继续切分,否则将非叶节点对应的数组进一步切分,直至得到索引模型中的所有中间节点和用于描述中间节点的函数和映射表,以及所有叶节点和用于描述叶节点的函数。
此外,由于第一数组每次切分后的包括的数据点数量减少,因此当数组包括的数据点数量较少时没有必要继续切分。因此,在一种可能的设计中,任一叶节点对应的数组包括的数据点数大于等于第二阈值,即若一个数组切分后的得到的小数组包括的数据点总数小于第二阈值,则停止切分该数组。
下面以图5和图6为例说明采用图4所示的方法如何构建索引模型。
假设数组A包括的数据点总数为1000,N_slots=20,PN=50,并设定第一层包括一个根节点,第二层包括5个中间节点,其中,N_slots/4=20/4=5。
处理器基于数组A进行训练得到用于描述根节点的函数F(x),然后,根据上述索引模型的预估参数中的第二层包括的中间节点的数目5,将数组切分为5段,进而基于5段数组确定用于描述根节点的映射表。具体的,处理器可以根据F(X)的取值范围,将F(X)的取值范围分为5段,每段取值范围的长度相同,并进一步根据这5段取值范围将数组A切分为5段。其中,用于描述根节点的映射表为5段数组中每段数组中的第一个key计算得到的value构建的key-value表。基于此,处理器可以获得用于描述根节点的函数F(x)和映射表M,如图5和图6所示。例如,F(X)的取值范围为[0,1],则可获得5段取值范围分别是[0,0.2),[0.2,0.4),[0.4,0.6),[0.6,0.8),[0.8,1]。进一步地,将数组A中取值落入[0,0.2)的数据构成的数组作为一段数组,将数组A中取值落入[0.2,0.4)的数据构成的数组作为一段数组,将数组A中取值落入[0.4,0.6)的数据构成的数组作为一段数组,将数组A中取值落入[0.6,0.8)的数据构成的数组作为一段数组,将数组A中取值落入[0.8,1]的数据构成的数组作为一段数组,共得到5段数组。
进一步地,以图5中的第二层中第1个中间节点为例,处理器基于上述5段数组中的第1段数组进行训练得到用于描述第二层中第1个中间节点的函数F1(x),并根据N_slots/X=20/5=4得到第1个中间节点对应数组所需切分的段数,如图5所示,将第1中间节点对应的数组切分成了4段。处理器基于切分后得到的4段数组得到用于描述第二层中第1个中间节点的映射表M1。具体的,处理器可以根据F1(X)的取值范围,将F1(X)的取值范围分为4段,每段取值范围的长度可以相同,并进一步根据这4段取值范围将F1(X)对应的数组切分为4段。其中,用于描述第二层中第1个中间节点的映射表M1为上述4段数组中每段数组中的第一个key计算得到的value构建的key-value表。基于此,处理器可以获得用于描述第二层中的第1个中间节点的函数F1(x)和映射表M1。同理,处理器可以获得F2(x)和M2,F3(x)和M3,F4(x)和M4以及F5(x)和M5,如图6所示。
处理器基于切分后得到的4段数组中的每段数组进行训练得到F11(x),F12(x),F13(x),F14(x)。以F12(x)为例,F12(x)是基于切分后得到的4段数组中的第2段数组训练得到的,若第2段数组中的任一key采用F12(x)计算得到的估计下标值与该key在第2段数组中的真实下标值的差值的绝对值不超过第一阈值,则第2段数组无需继续切分,第2段数组对应第三层中的一个叶节点。同理,处理器确定其他三个叶节点,其他三个叶节点分别用F11(x),F13(x),F14(x)描述,如图6所示。
应理解的是,图5和图6并非数组A对应的完整的索引模型,该索引模型还可包括其他中间节点或叶节点,此处并未画出。
因此,采用本申请实施例提供的索引模型创建方法可以简化创建过程,减少索引模型占用的内存空间,且能够实现数据快速查询和索引模型快速更新。
B:索引模型查询流程。
在索引模型创建后,处理器接收第一key的位置查询请求,处理器基于用于描述所述索引模型中的根节点和每个中间节点的映射表,确定第三叶节点,第三叶节点为第一key对应的叶节点。处理器基于用于描述第三叶节点的函数计算第一key在第三叶节点对应的数组中的估计下标值,进一步基于该估计下标值从第一叶节点对应的数组中确定出第一key在所述目标叶节点对应的数组中的真实下标值。具体的,估计下标值与真实下标值的差值的绝对值不超过第一阈值,在基于估计下标值查找真实下标值时,可以以估计下标值为中心,在估计下标值±第一阈值的范围内查找真实下标值,例如,可以在该范围内采用二分法或遍历方法确定出真实下标值。处理器反馈第一key在第三目标叶节点对应的数组中的真实下标值。
示例性地,处理器接收给定key,根据用于描述根节点的映射表确定给定key对应的第二层的中间节点,并基于用于描述确定出的中间节点的映射表确定给定key对应的第三层节点,若该第三层节点为叶节点,则处理器确定出给定key对应的叶节点;若该第三层节点为中间节点,则进一步基于用于描述该中间节点的映射表确定给定key对应的第四层节点,直至确定出给定key对应的叶节点。处理器根据用于描述给定key对应的叶节点的函数,计算给定key在给定key对应的叶节点对应数组中的估计下标值,并根据该估计下标值在给定key对应的叶节点对应数组中采用二分或遍历方法确定给定key的位置。
例如,如图7所示,处理器接收给定key,根据用于描述根节点的映射表确定给定key对应的第二层中的第1中间节点,并基于用于第1个中间节点的映射表确定给定key对应的第三层中的第2个叶节点。处理器根据F12(x),计算给定key在第2个叶节点对应数组中的估计下标值,并根据该估计下标值在第2个叶节点对应数组中采用二分或遍历方法确定给定key的真实下标值。
因此,采用上述索引模型查询方法,基于用于描述根节点的映射表和每个中间节点的映射表首先确定出待查询的key对应的叶节点,进而基于用于描述该叶节点的函数确定该key的估计下标值,并根据该key的估计下标值确定该key的真实下标值,能够简化查询流程,提升查询速度。
C:索引模型更新流程。
下面结合具体两种场景说明索引模型更新流程。
场景1:存在新key插入到第一数组。
处理器接收新key插入请求,基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,第一叶节点为新key对应的叶节点,将新key插入第一叶节点对应的数组,获得更新后的第一叶节点对应的数组。此时,索引模型的更新包括以下几种可能的情况:
情况1:在将新key插入所述第一叶节点对应的数组后,确定用于描述第一叶节点的函数满足所述第一条件,此时索引模型不需要更新。
情况2:在将新key插入所述第一叶节点对应的数组后,确定用于描述第一叶节点的函数不满足第一条件,则基于更新后的第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数满足第一条件,则采用新的用于描述第一叶节点的函数更新索引模型。
此时,索引模型仅需对用于描述第一叶节点的函数进行更新,不需要重新训练该索引模型,能够减少数组重新训练的频率。
情况3:在将新key插入所述第一叶节点对应的数组后,确定用于描述第一叶节点的函数不满足第一条件,则基于更新后的第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数不满足第一条件,此时,将第一叶节点作为一个新的中间节点,将新的用于描述第一叶节点的函数作为用于描述所述新的中间节点的函数,将更新后的所述第一叶节点对应的数组进一步切分为多个数组,确定用于描述新的中间节点的映射表,并基于切分后得到的多个数组确定与每个数组对应新的叶节点,用于描述每个新的叶节点的函数,采用用于描述新的中间节点的函数和映射表以及用于描述每个新的叶节点的函数更新索引模型。
应理解的是,处理器还可能基于上述多个数组确定若干个中间节点,或者,若干个中间节点和若干个新的叶节点。处理器在基于上述多个数组确定出中间节点时,需进行对该中间节点对应的数组进行划分,具体可参照索引模型创建流程,直至确定出所有新的叶节点。此时,在第一叶节点变成中间节点后,该中间节点又分支出多个中间节点,即索引模型的层数增加较多,还可以考虑对第一叶节点对应的中间节点对应的数组重新进行切分。
例如,如6所示,数组A插入新key,处理器接收新key插入请求,基于用于描述根节点和每个中间节点的映射表,确定新key对应的叶节点,用于描述该叶节点的函数为F12(x),将新key插入该叶节点对应的数组,获得更新后的该叶节点对应的数组。在将新key插入该叶节点对应的数组后,若处理器确定F12(x)不满足第一条件,则基于更新后的该叶节点对应的数组获得新的F12(x),若处理器确定新的F12(x)不满足第一条件,此时,将该叶节点作为一个新的中间节点,将新的F12(x)作为用于描述该新的中间节点的函数,将更新后的该叶节点对应的数组进一步切分为两个数组,确定用于描述该新的中间节点的映射表M12,并基于切分后得到的两个数组确定与每个数组对应新的叶节点,用于描述每个新的叶节点的函数,包括F121(x)和F122(x),采用用于描述新的中间节点的函数(即新的F12(x))和映射表M12以及用于描述每个新的叶节点的函数F121(x)和F122(x)更新索引模型,具体参阅图8所示。
因此,采用上述索引模型更新方法可以避免对整个数组重新进行训练,能够减少数组重新训练的频率,进而可以提升索引模型的更新效率。
场景2:第一数组中部分key被删除。
针对被删除的key,处理器可以采用两种策略:
策略1:逻辑删除策略。处理器将被删除的key标记为不能用(disable),此时索引模型不需要更新。
策略2:物理删除策略。处理器根据用于描述根节点和每个中间节点的映射表,确定被删除的key对应的叶节点,并更新该叶节点对应的数组。
处理器接收key删除请求,基于用于描述根节点和每个中间节点的映射表,确定第二叶节点,第二叶节点为该key对应的叶节点,将该key从第二叶节点对应的数组中删除,获得更新后的第二叶节点对应的数组。此时,索引模型的更新包括以下几种可能的情况:
情况1:在将该key从第二叶节点对应的数组中删除后,处理器确定用于描述第二叶节点的函数满足所述第一条件,此时索引模型不需要更新。
情况2:在将该key从第二叶节点对应的数组中删除后,处理器确定用于描述第二叶节点的函数不满足所述第一条件,基于更新后的所述第二叶节点对应的数组获得新的用于描述第一叶节点的函数,确定新的用于描述第二叶节点的函数满足第一条件,则采用新的用于描述第一叶节点的函数更新索引模型。
情况3:若更新后的第二叶节点对应的数组包括的数据点的点数小于第三阈值,且与第二叶节点同属一个中间节点的所有叶节点对应的数组包括的数据点的数量的平均值小于第三阈值,处理器可将该中间节点对应的数组重新进行切分,并更新索引模型。
此外,可选的,在第一数组中的若干个key被删除后。若某一个中间节点所覆盖的下一层各个子节点分别对应的数组的偏差或方差等指标高于预设阈值,可以考虑将该中间节点对应的数组重新进行切分,并更新索引模型。
示例性地,若第N层的各个中间节点中的每一个中间节点所覆盖的下一层各个子节点分别对应的数组的方差均小于预设阈值,则进一步判断第N+1层的各个中间节点中的每一个中间节点所覆盖的下一层各个子节点分别对应的数组的方差是否小于预设阈值,若第N+1层的各个中间节点中的每一个中间节点所覆盖的下一层各个子节点分别对应的数组的方差均小于预设阈值,则进行判断第N+2层的各个中间节点中的每一个中间节点所覆盖的下一层各个子节点分别对应的数组的方差是否小于预设阈值,否则,针对第N+1层的各个中间节点中,各个子节点分别对应的数组的大于等于预设阈值的中间节点对应的数组重新进行切片,并更新索引模型。
如图9所示,本申请还提供一种装置,该装置包括:数据预分析模块,数据切分训练模块,索引模型读写模型和索引模型预测模型。
在索引模型的构建流程中,数据预分析模块基于第一数组预估所述第一数组对应的索引模型的参数。例如,所述第一数组可以是key-value日志(KVLOG)。数据切分训练模块基于所述索引模型的参数和第一条件对所述第一数组进行切分,获得用于描述所述索引模型中每个节点的函数和用于描述所述索引模型中的根节点和每个中间节点的映射表。索引模型读写模型对所述索引模型和分段后的数组进行存储和读取。例如,索引模型读写模型可以将索引模型和分段后的数组存储至磁盘、云盘或内存中。
其中,所述索引模型包括一个根节点,多个中间节点和多个叶节点,所述根节点对应所述第一数组,每个中间节点和每个叶节点对应所述第一数组切分后的一段数组;用于描述所述根节点的函数是基于所述第一数组训练得到的,用于描述每个中间节点的函数是基于该中间节点对应的数组训练得到的,用于描述每个叶节点的函数是基于该叶节点对应的数组训练得到的;用于描述所述根节点的映射表是将所述第一数组首次切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;用于描述每个中间节点的映射表是将该中间节点对应的段数组切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;
其中,所述第一条件是指任一用于描述叶节点的函数满足:该叶节点对应的数组中任一关键字采用用于描述该叶节点的函数计算得到的估计下标值与该关键字在该叶节点对应的数组中的真实下标值的差值的绝对值不超过第一阈值。
在索引模型更新流程中,可以包括但不限于以下几个可能的示例:
示例一:数据切分训练模块接收新关键字插入请求,例如,新的KVLOG。索引模型读写模型读取用于描述根节点和每个中间节点的映射表,数据切分训练模块基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。索引模型读写模型存储更新后的索引模型。
示例二:数据切分训练模块接收新关键字插入请求;索引模型读写模型读取用于描述根节点和每个中间节点的映射表,数据切分训练模块基于用于描述根节点和每个中间节点的映射表,确定第一叶节点,所述第一叶节点为所述新关键字对应的叶节点,将所述新关键字插入所述第一叶节点对应的数组,获得更新后的所述第一叶节点对应的数组;在将所述新关键字插入所述第一叶节点对应的数组后,确定用于描述所述第一叶节点的函数不满足所述第一条件,基于更新后的所述第一叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第一叶节点的函数不满足所述第一条件,将所述第一叶节点作为一个新的中间节点,将新的用于描述第一叶节点的函数作为用于描述所述新的中间节点的函数,将更新后的所述第一叶节点对应的数组切分为多个数组,确定用于描述所述新的中间节点的映射表,并基于所述多个数组确定与每个数组对应新的叶节点,用于描述每个新的叶节点的函数;采用用于描述所述新的中间节点的函数和映射表以及用于描述每个新的叶节点的函数更新所述索引模型。索引模型读写模型存储更新后的索引模型。
示例三:数据切分训练模块接收关键字删除请求,例如,新的KVLOG。索引模型读写模型读取用于描述根节点和每个中间节点的映射表,数据切分训练模块基于用于描述根节点和每个中间节点的映射表,确定第二叶节点,所述第二叶节点为所述关键字对应的叶节点,将所述关键字从所述第二叶节点对应的数组中删除,获得更新后的所述第二叶节点对应的数组;在将所述关键字从所述第二叶节点对应的数组中删除后,确定用于描述所述第二叶节点的函数不满足所述第一条件,基于更新后的所述第二叶节点对应的数组获得新的用于描述第一叶节点的函数;确定新的用于描述第二叶节点的函数满足所述第一条件,则采用新的用于描述第一叶节点的函数更新所述索引模型。索引模型读写模型存储更新后的索引模型。
在索引模型查询流程中,索引模型预测模型接收第一关键字的位置查询请求;索引模型读写模型读取用于描述根节点和每个中间节点的映射表。索引模型预测模型基于用于描述所述索引模型中的根节点和每个中间节点的映射表,确定第三叶节点,所述第三叶节点为所述第一关键字对应的叶节点;基于用于描述所述第一叶节点的函数确定所述第一关键字在所述第一叶节点对应的数组中的真实下标值;反馈所述第一关键字在所述第一叶节点对应的数组中的真实下标值。
为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
与上述构思相同,如图10所示,本申请实施例还提供一种装置1000,该装置1000包括收发单元1002和处理单元1001和存储单元1003。
一示例中,装置1000用于实现上述方法中终端设备的功能。该装置可以是服务器,也可以是服务器中的装置,例如芯片。
其中,处理单元1001调用存储单元1003执行:基于第一数组预估所述第一数组对应的索引模型的参数;基于所述索引模型的参数和第一条件对所述第一数组进行切分,获得用于描述所述索引模型中每个节点的函数和用于描述所述索引模型中的根节点和每个中间节点的映射表;
其中,所述索引模型包括一个根节点,多个中间节点和多个叶节点,所述根节点对应所述第一数组,每个中间节点和每个叶节点对应所述第一数组切分后的一段数组;用于描述所述根节点的函数是基于所述第一数组训练得到的,用于描述每个中间节点的函数是基于该中间节点对应的数组训练得到的,用于描述每个叶节点的函数是基于该叶节点对应的数组训练得到的;用于描述所述根节点的映射表是将所述第一数组首次切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;用于描述每个中间节点的映射表是将该中间节点对应的段数组切分后得到的每段数组中的第一个关键字计算得到的值构建的键值对表;
其中,所述第一条件是指任一用于描述叶节点的函数满足:该叶节点对应的数组中任一关键字采用用于描述该叶节点的函数计算得到的估计下标值与该关键字在该叶节点对应的数组中的真实下标值的差值的绝对值不超过第一阈值。
关于处理单元1001、收发单元1002和存储单元1003的具体执行过程,可参见上方法实施例中的记载。本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
作为另一种可选的变形,该装置可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。示例性地,该装置包括处理器和接口,该接口可以为输入/输出接口。其中,处理器完成上述处理单元1001的功能,接口完成上述收发单元1002的功能。该装置还可以包括存储器,存储器对应存储单元1003,存储器用于存储可在处理器上运行的程序,处理器执行该程序时实现上述各个实施例的方法。
与上述构思相同,如图11所示,本申请实施例还提供一种装置1100。该装置1100中包括:通信接口1101、至少一个处理器1102、至少一个存储器1103。通信接口1101,用于通过传输介质和其它设备进行通信,从而用于装置1100中的装置可以和其它设备进行通信。存储器1103,用于存储计算机程序。处理器1102调用存储器1103存储的计算机程序,通过通信接口1101收发数据实现上述实施例中的方法。
示例性地,当该装置为服务器时,存储器1103用于存储计算机程序;处理器1102调用存储器1103存储的计算机程序,通过通信接口1101执行上述实施例中各个实施例的方法。在本申请实施例中,通信接口1101可以是收发器、电路、总线、模块或其它类型的通信接口。处理器1102可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器1103可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置。存储器1103和处理器1102耦合。本申请实施例中的耦合是装置、单元或模块之间的间隔耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。作为另一种实现,存储器1103还可以位于装置1100之外。处理器1102可以和存储器1103协同操作。处理器1102可以执行存储器1103中存储的程序指令。所述至少一个存储器1103中的至少一个也可以包括于处理器1102中。本申请实施例中不限定上述通信接口1101、处理器1102以及存储器1103之间的连接介质。例如,本申请实施例在图11中以存储器1103、处理器1102以及通信接口1101之间可以通过总线连接,所述总线可以分为地址总线、数据总线、控制总线等。
可以理解的,上述图10所示实施例中的装置可以以图11所示的装置1100实现。具体的,处理单元1001可以由处理器1102实现,收发单元1002可以由通信接口1101实现,存储单元1003可以由存储器1103实现。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述各个实施例所示的方法。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,固态硬盘Solid State Disk SSD)等。
以上所述,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。

Claims (15)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910703886.9A CN112307266B (zh) 2019-07-31 2019-07-31 一种索引模型的构建方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910703886.9A CN112307266B (zh) 2019-07-31 2019-07-31 一种索引模型的构建方法及装置

Publications (2)

Publication Number Publication Date
CN112307266A true CN112307266A (zh) 2021-02-02
CN112307266B CN112307266B (zh) 2023-08-22

Family

ID=74486227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910703886.9A Active CN112307266B (zh) 2019-07-31 2019-07-31 一种索引模型的构建方法及装置

Country Status (1)

Country Link
CN (1) CN112307266B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226245A1 (en) * 2006-03-24 2007-09-27 Ravi Murthy Index mechanism for finding nearest matches in a database system
US20080065672A1 (en) * 2006-09-08 2008-03-13 Oracle International Corporation Insertion rate aware b-tree
CN102955843A (zh) * 2012-09-20 2013-03-06 北大方正集团有限公司 一种键值数据库的多键查找实现方法
CN106649870A (zh) * 2017-01-03 2017-05-10 山东浪潮商用系统有限公司 一种搜索引擎分布式实现方法
CN108197313A (zh) * 2018-02-01 2018-06-22 中国计量大学 通过16位Trie树实现空间优化的词典索引方法
CN109543358A (zh) * 2019-01-11 2019-03-29 西安电子科技大学 Gpu上kd树的射线追踪加速系统及kd树输出方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226245A1 (en) * 2006-03-24 2007-09-27 Ravi Murthy Index mechanism for finding nearest matches in a database system
US20080065672A1 (en) * 2006-09-08 2008-03-13 Oracle International Corporation Insertion rate aware b-tree
CN102955843A (zh) * 2012-09-20 2013-03-06 北大方正集团有限公司 一种键值数据库的多键查找实现方法
CN106649870A (zh) * 2017-01-03 2017-05-10 山东浪潮商用系统有限公司 一种搜索引擎分布式实现方法
CN108197313A (zh) * 2018-02-01 2018-06-22 中国计量大学 通过16位Trie树实现空间优化的词典索引方法
CN109543358A (zh) * 2019-01-11 2019-03-29 西安电子科技大学 Gpu上kd树的射线追踪加速系统及kd树输出方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JINE TANG ET AL.: "Novel DR-tree index based on the diagonal line of MBR", 《IEEE》 *
廖超: "DSP平台的图像特征点快速索引结构", 《计算机应用研究》 *
耿庆田;狄婧;常亮;赵宏伟;: "基于B+树的数据索引存储", 吉林大学学报(理学版), no. 06 *

Also Published As

Publication number Publication date
CN112307266B (zh) 2023-08-22

Similar Documents

Publication Publication Date Title
US11132346B2 (en) Information processing method and apparatus
US20180307428A1 (en) Data storage method, electronic device, and computer non-volatile storage medium
US10922288B2 (en) Method for storing data elements in a database
EP2344959A2 (en) Index compression in databases
CN103995855A (zh) 存储数据的方法和装置
CN110168532A (zh) 数据更新方法和存储装置
CN110807028B (zh) 用于管理存储系统的方法、设备和计算机程序产品
CN114490518A (zh) 管理流式数据存储系统的索引的方法、设备和程序产品
US11287997B2 (en) Method, electronic device and computer program product for managing disk array
CN117435560A (zh) 数据查询方法、装置、电子设备及可读存储介质
CN112307266B (zh) 一种索引模型的构建方法及装置
US11507293B2 (en) Method, electronic device and computer program product for managing storage blocks
US20190332484A1 (en) Method, device and program product for reducing data recovery time of storage system
CN111857556A (zh) 管理存储对象的元数据的方法、装置和计算机程序产品
CN115878625A (zh) 数据处理方法和装置及电子设备
US11435926B2 (en) Method, device, and computer program product for managing storage system
CN115563114A (zh) 一种分布式唯一键约束方法、装置、设备和存储介质
CN114969023A (zh) 一种数据库学习型索引构建方法和系统
CN111399759B (zh) 读数据、写数据的方法、以及对象文件系统
CN109542939B (zh) 一种基于纠删码的count-min摘要方法及装置
CN115221360A (zh) 树形结构配置方法和系统
CN113609245A (zh) 一种索引的分片扩容方法及系统
WO2021012211A1 (zh) 一种为数据建立索引的方法以及装置
CN106293530A (zh) 一种数据写入方法和装置
WO2023108360A1 (zh) 一种存储系统中数据管理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20220217

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant