一种支持高效写的自适应学习索引方法和系统技术方案

技术编号:29703065 阅读:18 留言:0更新日期:2021-08-17 14:31
本发明专利技术公开了一种支持高效写的自适应学习索引方法(Aaptive Learned Index Supporting Efficient Writes,EWALI)。EWALI方案基于高效的ShrinkingCone算法,能够根据数据分布进行动态数据分片,保证分片后每个数据片内的数据分布趋于线性。EWALI方案实现数据感知递归模型索引DARMI,能够根据数据分布的变化,自适应进行节点拆分、重训练等操作,动态地调整索引结构。为支持更高效的写操作,EWALI方案设计了采用单缓存设计来处理增量数据,将写操作异步化处理,通过后台线程进行数据合并。读操作按照增量缓存、DARMI的顺序查询记录。写操作直接往增量缓存中写入数据,通过后台线程完成数据的合并操作。

【技术实现步骤摘要】
一种支持高效写的自适应学习索引方法和系统
本专利技术属于计算机数据存储领域,更具体地,涉及一种支持高效写的自适应学习索引方法和系统。
技术介绍
大数据的发展对索引技术的要求越来越高,需要索引支持高效读写、内存占用低、易于维护等特性。近些年,机器学习领域不断取得新成绩,学习索引开创性地为机器学习在索引优化领域的应用提供了新的方向。学习索引的核心思想是:现有的索引结构都可以用其他类型的模型代替,模型可以学习键的分布,使用此信息能够有效地预测记录的位置或存在。现有的学习索引方法主要是利用递归模型索引(RecursiveModelIndexes,简称RMI)来替换B+Tree等范围索引结构。RMI是一种将简单的机器学习模型组合在一起的多层结构,较高级别的模型选择下一层模型,依此类推,叶子节点模型对键的真实位置进行最终预测。相比于传统的范围索引B+Tree,学习索引有更好的读性能,内存占用更小,有很好的应用前景,但也存在一些不可忽略的缺陷:首先,RMI采用均匀的数据分片算法,难以保证同一数据片中数据分布的相似性,使得子模型误差较大,从而影本文档来自技高网...

【技术保护点】
1.一种支持高效写的自适应学习索引方法,其特征在于,包括以下步骤:/n(1)接收来自用户的请求,并判断该请求是单点查询请求、范围查询请求、还是写请求,如果是单点查询请求,则进入步骤(3),如果是范围查询请求,则进入步骤(6),如果是写请求,则进入步骤(2);/n(2)获取待插入的数据点,将该数据点插入预先建立的缓存的增量缓存中,并判断缓存的增量缓存中保存的数据点个数是否达到预设阈值,如果是则将增量缓存变成不可变增量缓存,重新生成一个增量缓存,并利用后台线程将不可变增量缓存中的数据点与预先建立的DARMI中的数据片进行批量合并,然后向用户发送写操作成功的通知,过程结束,否则向用户发送写操作成功的...

【技术特征摘要】
1.一种支持高效写的自适应学习索引方法,其特征在于,包括以下步骤:
(1)接收来自用户的请求,并判断该请求是单点查询请求、范围查询请求、还是写请求,如果是单点查询请求,则进入步骤(3),如果是范围查询请求,则进入步骤(6),如果是写请求,则进入步骤(2);
(2)获取待插入的数据点,将该数据点插入预先建立的缓存的增量缓存中,并判断缓存的增量缓存中保存的数据点个数是否达到预设阈值,如果是则将增量缓存变成不可变增量缓存,重新生成一个增量缓存,并利用后台线程将不可变增量缓存中的数据点与预先建立的DARMI中的数据片进行批量合并,然后向用户发送写操作成功的通知,过程结束,否则向用户发送写操作成功的通知,过程结束。
(3)判断是否能够在缓存的增量缓存中查询到该单点查询请求对应的结果,如果是则返回结果给用户,过程结束,否则进入步骤(4);
(4)判断是否能够在缓存的不可变增量缓存中查询到该单点查询请求对应的结果,如果是则返回结果给用户,过程结束,否则进入步骤(5);
(5)判断是否能够在DARMI中查询到该单点查询请求对应的结果,如果是则返回结果给用户,过程结束,否则返回空结果给用户,过程结束;
(6)获取范围查询请求对应的起始值和终止值,确定起始值在DARMI中所对应的叶子节点,从该叶子节点开始,遍历DARMI中其键位于起始值和终止值之间的所有数据点,并将所有数据点保存在结果集合R1中;
(7)遍历缓存中的不可变增量缓存,取出其键位于起始值和终止值之间的所有数据点,并将所有数据点保存在结果集合R2中,将结果集合R2与R1进行合并,以得到新的结果集合R3。
(8)遍历缓存中的增量缓存,取出其键位于起始值和终止值之间的所有数据点,并将所有数据点保存在结果集合R4中,将结果集合R4与R3进行合并,以得到新的结果集合R5。


2.根据权利要求1所述的支持高效写的自适应学习索引方法,其特征在于,递归模型索引是通过以下子步骤建立得到的:
(A1)获取数据集keys={(keya,posa),其中a=1,2,…,n},设置计数器i=2,将第1个数据点(key1,pos1)设置为起点(keystart,posstart),并设置高斜率SLhigh的初始值为∞,低斜率SLlow的初始值为0,其中n表示数据集中数据点的总数,keyi表示第i个数据点的键,posi表示第i个数据点在数据集keys中的位置;
(A2)判断i是否大于数据集中的数据点总数n,如果是则进入步骤(A7),否则进入步骤(A3);
(A3)对于第i个数据点,计算该数据点(keyi,posi)与起点(keystart,posstart)之间的斜率Li,并判断是否有Li∈[SLlow,SLhigh],如果是则进入步骤(A4);否则将数据点(keyi,posi)设置为新的起点(keystart,posstart),将高斜率SLhigh的值设置为∞,将低斜率SLlow的值设置为0,并将i设置为第i个数据片分割点,然后进入步骤(A6);
(A4)根据第i个数据点(keyi,posi)和预先设置的误差阈值生成两个新数据点(keyi,posi+error)、(keyi,posi-error),计算该新数据点(keyi,posi+error)与起点(keystart,posstart)的斜率Lpos+error,以及新数据点(keyi,posi-error)与起点(keystart,posstart)的斜率Lpos-error;
(A5)根据步骤(A4)得到的斜率Lpos+error更新高斜率SLhigh=min(SLhigh,Lpos+error),并根据步骤(A4)得到的斜率Lpos-error更新低斜率SLlow=max(SLlow,Lpos-error);
(A6)设置计数器i=i+1,并返回步骤(A2);
(A7)根据得到的所有数据片分割点将数据集划分为多个数据片;
(A8)设置计数器j=1;
(A9)判断计数器j是否大于步骤(A7)划分后得到的数据片总数Num,如果是则进入步骤(A12),否则进入步骤(A10);
(A10)从数据集中获取第j个数据片,根据该第j个数据片训练对应的线性回归模型,将该线性回归模型作为DARMI的第j个叶子节点,然后进入步骤(A11);
(A11)设置计数器j=j+1,并返回步骤(A9);
(A12)根据得到的所有叶子节点所管理的数据片的数据范围训练线性回归模型,将该线性回归模型作为DARMI的根节点。


3.根据权利要求1或2所述的支持高效写的自适应学习索引方法,其特征在于,
在步骤(A10)的训练过程中,线性回归模型的自变量为第j个数据片中所有数据点的键,因变量为所有数据点在第j个数据片中的位置;
在步骤(A12)的训练过程中,线性回归模型的自变量为每个叶子节点管理的数据片的数据范围下限,若范围下限为-∞,则用0替换,因变量为叶子节点在根节点的子节点列表中的位置。


4.根据权利要求1至3中任意一项所述的支持高效写的自适应学习索引方法,其特征在于,
步骤(2)中的缓存是使用B+Tree创建增量缓存,其初始阶段为空。
当增量缓存中保存的数据点个数达到预设阈值后,增量缓存会变成不可变增量缓存,后台线程将不可变增量缓存中的数据与DARMI管理的数据片进行批量合并。


5.根据权利要求1所述的支持高效写的自适应学习索引方法,其特征在于,步骤(2)中利用后台线程将不可变增量缓存中的数据点与DARMI中的数据片进行批量合并这一过程包括以下子步骤:
(2-1)设置计数器k=1;
(2-2)判断计数器k是...

【专利技术属性】
技术研发人员:李春花周可张洲刘莉
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

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

1