基于学习索引的数据存储方法技术

技术编号:31083263 阅读:13 留言:0更新日期:2021-12-01 12:31
本申请提供了一种提高数据写入速度的数据存储方法及基于所述数据存储方法的数据读取和写入请求处理方法。所述数据存储方法包括构造一个三层的树形数据索引结构以存储数据,所述树形数据索引结构包括:模型层、解构层和数据存储层。所述模型层由两层学习索引模型组成,第一层学习索引模型为一个RMI模型,第二层学习索引模型为多个PLA模型。所述解构层中的索引节点数组包含一个或多个索引节点,每个所述索引节点中包含N个数据索引。所述数据存储层以数据块的形式存储数据。该方法能够在NVM设备上执行,利用相对静态的解构层减少写入引起的模型重新训练,使得该数据存储方法能够提高写入性能。高写入性能。高写入性能。

【技术实现步骤摘要】
基于学习索引的数据存储方法


[0001]本申请属于信息存储
,更具体地,涉及基于学习索引的数据存储方法。

技术介绍

[0002]数字时代下,急剧增长的数据量对存储系统提出了更高的容量和性能要求。一方面,传统DRAM内存面临着容量和能耗等方面的问题,另一方面,经典的范围索引结构B+树索引的时间和空间效率都直接与数据量成负相关,其空间复杂度更是与数据量成线性负相关。
[0003]为了解决上述问题,在硬件方面,现在工业界推出了新型非易失性内存NVM(Non

Volatile Memory),它具有按字节寻址、快速访问、掉电非易失、高存储密度和静态功耗低等优良特性,是最有希望的DRAM(Dynamic Random Access Memory)内存的替代者。在软件方面,近两年学术界积极利用机器学习对传统数据索引结构进行探索性优化,被称为学习索引(learned index)。学习索引的核心思想是借助机器学习模型来构建一个由键(key)到存储地址的一一映射,构建好的模型可以通过计算,在常规数据量级别的时间复杂度内预测出与一个键相对应的存储位置,很好地解决了传统数据索引结构在数据规模变大时性能下降的问题。目前在应用适应NVM设备的B+树索引方面已经有非常多的工作了,然而学习索引作为新型的数据索引结构并未被应用到NVM设备中。相比经典范围索引结构B+树索引,学习索引更适合部署在NVM设备上。因为NVM设备的读写性能略微逊色于DRAM设备,每次访问数据存储地址的时间延迟较高,而学习索引拥有恒定的查找操作,所以在数据量大的时候,学习索引拥有更短的访问路径,这会天然的减轻访问时间延迟的影响。并且,现有学习索引结构拥有读写不对称性,其更侧重于数据的读取过程,拥有较好的读取性能。

技术实现思路

[0004]本申请提供了一种提高数据写入速度的数据存储方法及基于所述数据存储方法的数据读取和写入请求处理方法,其目的在于构建一种基于学习索引结构的数据存储方法,该方法能够在NVM设备上运行,相比现有技术能够更充分地利用NVM设备大容量、非易失、可字节寻址等优良特性,并能利用学习索引结构的高性能查询功能弥补NVM设备写入性能相比DRAM设备的不足,使得该数据存储方法拥有很好的写入性能。
[0005]为实现上述目的,本申请提供了一种数据存储方法,该方法包括构造一个三层的树形数据索引结构以存储数据,该树形数据索引结构包括:模型层、解构层和数据存储层。其中,所述模型层由两层学习索引模型组成,第一层学习索引模型为一个RMI(Recursive Model Index)模型,第二层学习索引模型为多个PLA(Piecewise Linear Approximation)模型。所述解构层包括由按键(key)的数值范围分段的多个索引节点(index

node)。所述数据存储层以多个数据块的方式存储所述数据。
[0006]进一步地,基于该RMI模型将全局键空间分为包括多个群组(group)的群组数组,其中每个所述群组包含一个所述PLA模型和一个或多个所述索引节点,所述PLA模型对应于
所述一个或多个包含在同一所述群组中的索引节点。所述一个或多个索引节点构成索引节点数组。所述数据存储层中的多个数据块中的每一个数据块分别对应于一个所述索引节点并存储一个子数值范围内的所述数据。
[0007]进一步地,该方法还包括使用该RMI模型预测该键在该群组数组中的位置,把该键定位到该群组数组中的一个群组。在把该键定位到该群组后,使用该群组包含的PLA模型针对该键进行训练。然后,使用该PLA模型预测出该键在该群组的索引节点数组中的位置。
[0008]该解构层中的索引节点数组包含一个或多个索引节点,每个索引节点中包含N个数据索引存储位置,其中N>=1,通常可以默认N=4。当某一个索引节点中实际存储的数据索引的个数M小于N时,该索引节点中为数据索引预留N

M个空存储位置。该数据索引将全局键空间划分为多个连续相邻的子键空间。
[0009]该数据存储层存储数据,该数据以数据块的形式被存储,每一个该数据块对应一个该子键空间。在该数据存储层的数据块内部,该数据被无序存储,并在该数据块中使用迭代器用于执行顺序遍历。
[0010]该解构层的数据索引和该数据存储层的数据块中的头部元数据长度都为8字节。
[0011]本申请的第二方面提供了一种根据第一方面所述数据存储方法的数据读取请求处理方法。
[0012]本申请的第三方面提供了一种基于第一方面所述数据存储方法的数据写入请求处理方法。
[0013]通过本申请提供的以上技术方案,能够取得以下有益效果:
[0014](1)本申请提出了一种基于学习索引结构的数据存储方法,能够在NVM设备上有效地以学习索引结构代替B+树索引结构,该数据存储方法综合了非易失性内存NVM容量大、非易失、可字节寻址的优势以及学习索引查询速度快的优势。
[0015](2)本申请使用一层RMI模型和一层PLA模型作为学习索引模型,使得该学习索引结构能够快速完成预测,同时完成模型训练所用时间不会很长。
[0016](3)本申请使用具有预留空存储位置机制的解构层,减少了模型层的重新训练次数,提高了该学习索引结构的性能。
附图说明
[0017]为了容易理解本专利技术的优点,将通过参考附图中示出的特定实施例来对以上简要描述的本专利技术进行更具体的描述。理解这些附图仅描述了本专利技术的典型实施例,因此不应认为是对本专利技术范围的限制,将通过使用附图以附加的特征和细节来描述和解释本专利技术,其中:
[0018]图1为本申请实施例提供的网络环境示意图;
[0019]图2为本申请实施例提供的基于非易失性内存的学习索引结构示意图;
[0020]图3为本申请实施例提供的数据量大于阈值时的结构变化示意图;
[0021]图4为本申请实施例提供的数据存储层扩展示意图;
[0022]图5为本申请实施例提供的解构层扩展示意图;
[0023]图6为本申请实施例提供的全局扩展示意图。
具体实施方式
[0024]将容易理解,如本文的附图中一般性描述和示出的,本专利技术的部件可以以各种不同的配置来布置和设计。因此,如附图所示,对本专利技术的实施例的以下更详细的描述并非旨在限制所要求保护的本专利技术的范围,而仅是根据本专利技术的当前设想的实施例的某些示例的代表。参考附图,将最好地理解当前描述的实施例,其中,相同的部分始终用相同的数字表示。
[0025]本专利技术可以体现为系统、方法和/或计算机程序产品。所述计算机程序产品可以包括其上具有用于使处理器执行本专利技术的方面的计算机可读程序指令的计算机可读存储介质。
[0026]计算机可读存储介质可以是有形设备,其可以保留和存储由指令执行设备使用的指令。计算机可读存储介质可以是例如但不限于电子存储系统、磁存储系统、光存储系统、电磁存储系统、半导体存储系统或前述的任何本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据存储方法,其特征在于,所述方法包括:构造一个树形数据索引结构以存储数据,所述树形数据索引结构包括:模型层、解构层和数据存储层;其中,所述模型层由两层学习索引模型组成,第一层学习索引模型为一个RMI模型,第二层学习索引模型为多个PLA模型;所述解构层包括由按键的数值范围分段的多个索引节点;所述数据存储层以多个数据块的方式存储所述数据。2.如权利要求1所述的方法,其特征在于:基于所述RMI模型将全局键空间分为包括多个群组的群组数组,其中每一个所述群组包含一个所述PLA模型和一个或多个所述索引节点;所述PLA模型对应于所述一个或多个所述索引节点;以及所述多个数据块中的每一个数据块分别对应于一个所述索引节点并存储一个子数值范围内的所述数据。3.如权利要求2所述的方法,其特征在于:所述方法还包括:使用所述RMI模型预测所述键在所述群组数组中的位置,把所述键定位到所述群组数组中的一个群组;使用所述一个群组包含的所述PLA模型针对所述键进行训练;以及使用所述PLA模型预测出所述键在所述一个群组的多个索引节点中的位置。4.如权利要求2或3所述的方法,其特征在于:每一个所述索引节点中包含N个数据索引的存储位置,其中N>=1,根据所述数据索引将所述全局键空间划分为多个连续相邻的子键空间;以及当所述索引节点中实际存储的数据索引个数M小于N时,所述索引节点中预留N

M个数据索引空存储位置。5.如权利要求4所述的方法,其特征在于:所述数据索引包含最小键、元数据、数据块指针,其中所述最小键是所述数据索引所在的所述索引节点指向所述数据块中的最小键值;所述元数据包含了所述子键空间的头部元数据;以及所述数据块指针是指向所述子键空间的指针。6.如权利要求1至5所述的方法,其特征在于:所述数据在所述数据块内部无序存储;所述数据块内使用迭代器用于所述数据的顺序遍历;所述数据块用键值对方式存储所述数据,且所述键大小不固定,所述键对应的值大小也不固定,当所述键对应的值小于等于8字节时存储所述键对应的值的真实值,否则存储指向所述键对应的值的指针;在所述数据块中以追加写入方式更新所述数据;所述数据块包含头部元数据、由多个记录构成的记录数组以及指向下一个所述数据块的指针;所述数据块的读写锁建立在每个所述记录上;以及
每个所述记录包括所述读写锁、所述键的大小、所述键以及所述值或者所述指向所述键对应的值的指针。7.如权利要求1所述的方法,其特征在于:当所述数据的总量<S1时,其中S1是所述树形数据索引结构相比B+树索引结构出现优势的极限数据量,所述树形数据索引结构被替换为所述B+树索引结构。8.一种根据权利要求4至7任一项所述的数据存储方法的数据读取...

【专利技术属性】
技术研发人员:崔秋唐刘王中华
申请(专利权)人:平凯星辰北京科技有限公司
类型:发明
国别省市:

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

1