一种混合内存键值对存储系统的请求处理方法技术方案

技术编号:20992033 阅读:30 留言:0更新日期:2019-04-29 22:10
本发明专利技术公开了一种混合内存键值对存储系统的请求处理方法,包括:若为点查询请求,则查找哈希表并返回查询结果;若为范围查询请求,则构建对应的跳表命令并添加至每一个跳表的命令缓存队列,等待直至获取到所有跳表的返回结果,并按照字典序合并获取到的返回结果并返回;若为写请求,则在NVM中分配内存并写入值;进一步判断写请求类型,若为更新请求,则更新哈希表,并构建对应的跳表命令;若为插入请求,则新建跳表节点并更新哈希表,并构建对应的跳表命令;根据写请求中键的长度确定目标跳表,并将跳表命令添加至目标跳表的命令缓存队列。本发明专利技术充分考虑介质的读写延迟,并且最优化占比较高的读操作的处理性能,从而有效提升系统的整体性能。

A Method of Request Processing for Hybrid Memory Keys to Storage Systems

The invention discloses a request processing method of mixed memory key value pair storage system, which includes: if a point query request is made, the hash table is found and the query result is returned; if a range query request is made, the corresponding jump table command is constructed and added to the command caching queue of each jump table, waiting until the return result of all jump tables is obtained, and the query result is merged in dictionary order to obtain the return result of all jump tables. The result of the return is returned; if the request is written, the memory is allocated and the value is written in NVM; if the request is updated, the hash table is updated and the corresponding jump table command is constructed; if the request is inserted, the new jump table node is created and the corresponding jump table command is constructed; and the target jump table is determined according to the length of the key in the write request, and the jump table will be constructed. Table commands are added to the command cache queue of the target jump table. The invention fully considers the reading and writing delay of the medium, and optimizes the processing performance of the reading operation with a higher proportion, thereby effectively improving the overall performance of the system.

【技术实现步骤摘要】
一种混合内存键值对存储系统的请求处理方法
本专利技术属于信息存储
,更具体地,涉及一种混合内存键值对存储系统的请求处理方法。
技术介绍
互联网大数据应用和云计算应用要求对大规模数据的快速访问,键值对存储(KVS,KeyValueStore)作为非关系型数据存储的典型代表,采用非结构化的数据组织形式,提供高效的数据插入、点查询(pointquery)、范围查询(scan)支持,凭借其高访问性能、高可用性和高扩展性得以迅速发展,广泛应用在数据密集型应用中,如网络索引引擎、社交网络等。内存键值对存储以动态随机访问存储器(DRAM,DynamicRandomAccessMemory)作为存储介质,但是DRAM受可扩展性、能耗、成本等因素的影响越来越无法满足大数据应用的容量需求。非易失存储器(NVM,Non-VolatileMemory)具有高存储密度、字节可寻址、低能耗、近DRAM访问延迟、掉电后数据不丢失等特点,为内存键值对存储提供了一种可行的解决方案。以NVM和DRAM作为混合内存的架构得到了广泛的关注和研究,如何结合NVM和DRAM介质的特点,设计高性能的混合内存键值对存储系统具有十分重要的意义。索引设计是实现高性能内存键值对存储系统的关键部分。现有内存键值对存储系统采用哈希表、B+树、跳表等数据结构作为索引,哈希表的点插入和查询的速度最快,时间复杂度为O(1),但是无法支持范围查询,B+树和跳表的点查询和点插入的时间复杂度为O(nlogn),支持范围查询。目前,NVM介质的读、写延迟分别约为DRAM读、写延迟的3~4倍和10~12倍,基于介质的读写延迟,现有的对混合内存键值对存储系统性能优化的研究焦点在于针对写操作的性能优化,相应地,索引设计也主要针对NVM和DRAM的写延迟差距,如将插入和查询复杂度为O(1)的哈希结构放在写延迟较高NVM中,将时间复杂度较高的B+树实现在写延迟较低的DRAM中,以达到系统整体性能的稳定。而在读密集型的内存键值对存储环境下,键值对存储系统的读操作性能起到更加关键的作用。研究表明,混合内存键值对存储系统的读数据比例远高于写数据,甚至高达30:1,这使得NVM的读操作延迟成为整个系统性能远不可忽略的一部分,由于缺乏对NVM读延迟的考虑和系统读性能的优化,现有索引设计对NVM过多的读操作会导致系统整体性能的下降。
技术实现思路
针对现有技术的缺陷和改进需求,本专利技术提供了一种混合内存键值对存储系统的请求处理方法,其目的在于,同时针对介质的读写延迟和读请求所占的高比例对混合内存键值对存储系统的整体性能进行优化。为实现上述目的,本专利技术提供了一种混合内存键值对存储系统的请求处理方法,混合内存键值对存储系统包括DRAM和NVM,包括如下步骤:(1)判断请求类型,若为读请求,则转入步骤(2);若为写请求,则转入步骤(3);(2)判断读请求的类型,若为点查询请求,则根据点查询请求的键查找哈希表,返回查询结果,并转入步骤(7);若为范围查询请求,则转入步骤(3);(3)根据范围查询请求构建对应的跳表命令,将跳表命令添加至每一个跳表的命令缓存队列,并等待直至获取到所有跳表的返回结果;按照字典序合并获取到的返回结果结果,从而得到范围查询请求的查询结果并返回;转入步骤(7);(4)为写请求在NVM中分配内存并写入值,从而得到写请求的值地址;(5)判断写请求的类型,若为更新请求,则根据更新请求更新哈希表,并构建对应的跳表命令;若为插入请求,则根据插入请求新建跳表节点并更新哈希表,并构建对应的跳表命令;(6)根据写请求中键的长度确定目标跳表,并将跳表命令添加至目标跳表的命令缓存队列;转入步骤(7);(7)请求处理结束;其中,哈希表建立于DRAM中,哈希表中的索引项存储有键、值地址以及对应的跳表节点地址;跳表建立于NVM中,跳表有多个,每一个跳表分别与一个键的长度范围相对应,并且每一个跳表分别设置有一个命令缓存队列,跳表中的跳表节点存储有键和值地址;跳表命令封装有请求类型。进一步地,本专利技术提供的混合内存键值对存储系统的请求处理方法,还包括:(S1)对于任意一个跳表S,若其命令缓存队列Q为空,则等待直至命令缓存队列Q不为空,并转入(S2);否则,转入(S2);(S2)从命令缓存队列Q中取跳表命令C并判断请求类型,若为更新请求,则转入(S3);若为插入请求,则转入(S4);若为范围查询请求,则转入(S5);(S3)根据跳表命令C中的跳表节点地址和值地址更新对应的跳表节点;转入步骤(S1);(S4)根据跳表命令C中的跳表节点地址将新建的跳表节点插入跳表S;转入步骤(S1);(S5)根据跳表命令C中的查询范围获得跳表S中键的字典序位于查询范围内的所有跳表节点并返回值地址;转入步骤(S1);其中,查询范围为键的字典序范围。更进一步地,本专利技术提供的混合内存键值对存储系统的请求处理方法,还包括,若同一范围查询请求所对应的跳表命令均执行完成,则按照字典序合并各跳表命令返回的数据,从而得到范围查询请求的查询结果。进一步地,步骤(3)中,根据范围查询请求构建对应的跳表命令,包括:获得范围查询请求的查询范围R;构建跳表命令Cs,并设置跳表命令Cs的请求类型为范围查询请求,设置跳表命令Cs的查询范围为查询范围R;其中,查询范围为键的字典序范围。进一步地,步骤(5)中,判断写请求的类型的方法为:根据写请求的键查找哈希表,若查找成功,则判定写请求为更新请求;否则,判定写请求为插入请求。进一步地,步骤(5)中,根据更新请求更新哈希表,并构建对应的跳表命令,包括:根据更新请求的键查找到对应的索引项Iu;将索引项Iu中值地址更新为写请求的值地址;构建构建跳表命令Cu,设置跳表命令Cu的请求类型为更新请求,并将跳表命令Cu的跳表节点地址和值地址对应地设置为索引项Iu中存储的跳表节点地址和值地址。进一步地,步骤(5)中,根据插入请求新建跳表节点并更新哈希表,并构建对应的跳表命令,包括:在NVM中新建跳表节点N,并将跳表节点N的键和值地址分别设置为插入请求的键和写请求的值地址;在DRAM中新建索引项Ii,将索引项Ii的键和值地址对应地设置为跳表节点N的键和值地址,并将索引项Ii的跳表节点地址设置为跳表节点N的内存地址;将索引项Ii插入哈希表;构建跳表命令Ci,设置跳表命令Ci的请求类型为插入请求,并将跳表命令Ci的跳表节点地址设置为索引项Ii中存储的跳表节点地址。进一步地,本专利技术提供的混合内存键值对存储系统的请求处理方法,还包括:在混合内存键值对存储系统重启或掉电恢复时,在DRAM中新建哈希表;对于任意一个跳表S,定位到其首节点的最底层指针P;根据指针P,遍历跳表S的最底层节点,并根据所遍历到的节点在DRAM中新建索引项,并插入哈希表,由此重建哈希表。更进一步地,在重建哈希表的过程中,并行地遍历多个跳表。总体而言,通过本专利技术所构思的以上技术方案,能够取得以下有益效果:(1)本专利技术所提供的混合内存键值对存储系统的请求处理方法,其索引结构为哈希表和跳表构成的混合索引,并且在低延迟的DRAM中建立哈希表,实现时间复杂度为O(1)的点查询、插入和更新操作,在NVM中建立跳表,实现时间复杂度为O(logn)的后台插入和范围查询操作,由此能本文档来自技高网
...

【技术保护点】
1.一种混合内存键值对存储系统的请求处理方法,所述混合内存键值对存储系统包括DRAM和NVM,其特征在于,包括如下步骤:(1)判断请求类型,若为读请求,则转入步骤(2);若为写请求,则转入步骤(4);(2)判断所述读请求的类型,若为点查询请求,则根据所述点查询请求的键查找哈希表,返回查询结果,并转入步骤(7);若为范围查询请求,则转入步骤(3);(3)根据所述范围查询请求构建对应的跳表命令,将所述跳表命令添加至每一个跳表的命令缓存队列,并等待直至获取到所有跳表的返回结果;按照字典序合并获取到的返回结果,从而得到所述范围查询请求的查询结果并返回;转入步骤(7);(4)为所述写请求在所述NVM中分配内存并写入值,从而得到所述写请求的值地址;(5)判断所述写请求的类型,若为更新请求,则根据所述更新请求更新所述哈希表,并构建对应的跳表命令;若为插入请求,则根据所述插入请求新建跳表节点并更新所述哈希表,并构建对应的跳表命令;(6)根据所述写请求中键的长度确定目标跳表,并将所述跳表命令添加至所述目标跳表的命令缓存队列;转入步骤(7);(7)请求处理结束;其中,所述哈希表建立于所述DRAM中,所述哈希表中的索引项存储有键、值地址以及对应的跳表节点地址;所述跳表建立于所述NVM中,所述跳表有多个,每一个跳表分别与一个键的长度范围相对应,并且每一个跳表分别设置有一个命令缓存队列,所述跳表中的跳表节点存储有键和值地址;所述跳表命令封装有请求类型。...

【技术特征摘要】
1.一种混合内存键值对存储系统的请求处理方法,所述混合内存键值对存储系统包括DRAM和NVM,其特征在于,包括如下步骤:(1)判断请求类型,若为读请求,则转入步骤(2);若为写请求,则转入步骤(4);(2)判断所述读请求的类型,若为点查询请求,则根据所述点查询请求的键查找哈希表,返回查询结果,并转入步骤(7);若为范围查询请求,则转入步骤(3);(3)根据所述范围查询请求构建对应的跳表命令,将所述跳表命令添加至每一个跳表的命令缓存队列,并等待直至获取到所有跳表的返回结果;按照字典序合并获取到的返回结果,从而得到所述范围查询请求的查询结果并返回;转入步骤(7);(4)为所述写请求在所述NVM中分配内存并写入值,从而得到所述写请求的值地址;(5)判断所述写请求的类型,若为更新请求,则根据所述更新请求更新所述哈希表,并构建对应的跳表命令;若为插入请求,则根据所述插入请求新建跳表节点并更新所述哈希表,并构建对应的跳表命令;(6)根据所述写请求中键的长度确定目标跳表,并将所述跳表命令添加至所述目标跳表的命令缓存队列;转入步骤(7);(7)请求处理结束;其中,所述哈希表建立于所述DRAM中,所述哈希表中的索引项存储有键、值地址以及对应的跳表节点地址;所述跳表建立于所述NVM中,所述跳表有多个,每一个跳表分别与一个键的长度范围相对应,并且每一个跳表分别设置有一个命令缓存队列,所述跳表中的跳表节点存储有键和值地址;所述跳表命令封装有请求类型。2.如权利要求1所述的混合内存键值对存储系统的请求处理方法,其特征在于,还包括:(S1)对于任意一个跳表S,若其命令缓存队列Q为空,则等待直至所述命令缓存队列Q不为空,并转入(S2);否则,转入(S2);(S2)从所述命令缓存队列Q中取跳表命令C并判断请求类型,若为更新请求,则转入(S3);若为插入请求,则转入(S4);若为范围查询请求,则转入(S5);(S3)根据所述跳表命令C中的跳表节点地址和值地址更新对应的跳表节点;转入步骤(S1);(S4)根据所述跳表命令C中的跳表节点地址将新建的跳表节点插入所述跳表S;转入步骤(S1);(S5)根据所述跳表命令C中的查询范围获得所述跳表S中键的字典序位于所述查询范围内的所有跳表节点并返回值地址;转入步骤(S1);其中,所述查询范围为键的字典序范围。3.如权利要求2所述的混合内存键值对存储系统的请求处理方法,其特征在于,还包括,若同一范围查询请求所对应的跳表命令均执行完成,则按照字典序...

【专利技术属性】
技术研发人员:童薇冯丹刘景宁吴海源秦俊青
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

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

1