CN109683811B - 一种混合内存键值对存储系统的请求处理方法 - Google Patents

一种混合内存键值对存储系统的请求处理方法 Download PDF

Info

Publication number
CN109683811B
CN109683811B CN201811395627.6A CN201811395627A CN109683811B CN 109683811 B CN109683811 B CN 109683811B CN 201811395627 A CN201811395627 A CN 201811395627A CN 109683811 B CN109683811 B CN 109683811B
Authority
CN
China
Prior art keywords
request
skip list
command
skip
query
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.)
Active
Application number
CN201811395627.6A
Other languages
English (en)
Other versions
CN109683811A (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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201811395627.6A priority Critical patent/CN109683811B/zh
Publication of CN109683811A publication Critical patent/CN109683811A/zh
Application granted granted Critical
Publication of CN109683811B publication Critical patent/CN109683811B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种混合内存键值对存储系统的请求处理方法
技术领域
本发明属于信息存储技术领域,更具体地,涉及一种混合内存键值对存储系统的请求处理方法。
背景技术
互联网大数据应用和云计算应用要求对大规模数据的快速访问,键值对存储(KVS,Key Value Store)作为非关系型数据存储的典型代表,采用非结构化的数据组织形式,提供高效的数据插入、点查询(point query)、范围查询(scan)支持,凭借其高访问性能、高可用性和高扩展性得以迅速发展,广泛应用在数据密集型应用中,如网络索引引擎、社交网络等。内存键值对存储以动态随机访问存储器(DRAM,Dynamic Random AccessMemory)作为存储介质,但是DRAM受可扩展性、能耗、成本等因素的影响越来越无法满足大数据应用的容量需求。非易失存储器(NVM,Non-Volatile Memory)具有高存储密度、字节可寻址、低能耗、近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(log n)的后台插入和范围查询操作,由此能够充分考虑介质的读写延迟,并且最优化占比较高的读操作的处理性能,从而有效提升混合内存键值对存储系统的整体性能。
(2)本发明所提供的混合内存键值对存储系统的请求处理方法,在NVM中建立多个跳表,并为每个跳表创建一个命令缓存队列,并且采用多跳表后台更新的策略,由此能够加快跳表的更新速度,避免过多的更新请求阻塞范围查询请求。
(3)本发明所提供的混合内存键值对存储系统的请求处理方法,哈希表建立于DRAM中,而跳表建立于NVM中,保证了键值索引的持久化,并且由于哈希表重建速度较快,在系统重启或掉电恢复时可根据跳表快速重建哈希表,从而快速实现整个索引结构的重建;此外,在重建哈希表的过程中,可并行遍历多个跳表,因此能够进一步加速索引结构的重建。
附图说明
图1为本发明实施例提供的混合内存键值对存储系统的请求处理方法流程图;
图2为本发明实施例提供的混合内存键值对存储系统示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明提供了一种混合内存键值对存储系统的请求处理方法,其整体思路在于,结合哈希表(Hash Table)快速查找和跳表(SkipList)支持有序查找的特点,构建混合索引结构以匹配混合内存的特点,提高系统的读写性能;在延迟低的DRAM中建立哈希表索引,实现时间复杂度O(1)的点查询和点插入操作,最优化系统读写性能;在非易失内存NVM中建立跳表,实现时间复杂度O(log n)的后台点插入和范围查询操作;采用多跳表的设计,加快跳表的后台更新速度;利用NVM的非易失性,在系统重启或掉电恢复时根据跳表快速重建哈希表索引。
在本发明的第一实施例中,本发明提供的混合内存键值对存储系统的请求处理方法,如图1所示,包括如下步骤:
(1)判断请求类型,若为读请求,则转入步骤(2);若为写请求,则转入步骤(4);
(2)判断读请求的类型,若为点查询请求,则根据点查询请求的键查找哈希表,返回查询结果,并转入步骤(7);若为范围查询请求,则转入步骤(3);
(3)根据范围查询请求构建对应的跳表命令,将跳表命令添加至每一个跳表的命令缓存队列,并等待直至获取到所有跳表的返回结果;按照字典序合并获取到的返回结果,从而得到范围查询请求的查询结果并返回;转入步骤(7);
在一个可选的实施方式中,步骤(3)中,根据范围查询请求构建对应的跳表命令,具体包括:
获得范围查询请求的查询范围R;构建跳表命令Cs,并设置跳表命令Cs的请求类型为范围查询请求,设置跳表命令Cs的查询范围为查询范围R;
其中,查询范围为键的字典序范围;
(4)为写请求在NVM中分配内存并写入值,从而得到写请求的值地址;
(5)判断写请求的类型,若为更新请求,则根据更新请求更新哈希表,并构建对应的跳表命令;若为插入请求,则根据插入请求新建跳表节点并更新哈希表,并构建对应的跳表命令;
在一个可选的实施方式中,步骤(5)中,判断写请求的类型的方法具体为:
根据写请求的键查找哈希表,若查找成功,则判定写请求为更新请求;否则,判定写请求为插入请求;
在一个可选的实施方式中,步骤(5)中,根据更新请求更新哈希表,并构建对应的跳表命令,具体包括:
根据更新请求的键查找到对应的索引项Iu
将索引项Iu中值地址更新为写请求的值地址;
构建构建跳表命令Cu,设置跳表命令Cu的请求类型为更新请求,并将跳表命令Cu的跳表节点地址和值地址对应地设置为索引项Iu中存储的跳表节点地址和值地址;
在一个可选的实施方式中,步骤(5)中,根据插入请求新建跳表节点并更新哈希表,并构建对应的跳表命令,具体包括:
在NVM中新建跳表节点N,并将跳表节点N的键和值地址分别设置为插入请求的键和写请求的值地址;
在DRAM中新建索引项Ii,将索引项Ii的键和值地址对应地设置为跳表节点N的键和值地址,并将索引项Ii的跳表节点地址设置为跳表节点N的内存地址;
将索引项Ii插入哈希表;
构建跳表命令Ci,设置跳表命令Ci的请求类型为插入请求,并将跳表命令Ci的跳表节点地址设置为索引项Ii中存储的跳表节点地址;
(6)根据写请求中键的长度确定目标跳表,并将跳表命令添加至目标跳表的命令缓存队列;转入步骤(7);
(7)请求处理结束;
其中,哈希表建立于DRAM中,哈希表中的索引项存储有键、值地址以及对应的跳表节点地址;跳表建立于NVM中,跳表有多个,每一个跳表分别与一个键的长度范围相对应,并且每一个跳表分别设置有一个命令缓存队列,跳表中的跳表节点存储有键和值地址;跳表命令封装有请求类型;基于本发明第一实施例中的由哈希表和跳表构成的混合索引结构,混合内存键值对存储系统如图2所示。
本发明提供的混合内存键值对存储系统的请求处理方法,由于在低延迟的DRAM中建立哈希表,实现时间复杂度为O(1)的点查询和插入操作,并在NVM中建立跳表,实现时间复杂度为O(log n)的后台插入和范围查询操作,由此能够充分考虑介质的读写延迟,并且最优化占比较高的读操作的处理性能,从而有效提升混合内存键值对存储系统的整体性能。
在本发明的第二实施例中,本发明提供的混合内存键值对存储系统的请求处理方法与本发明第一实施例提供的方法类似,不同之处在于,本发明第二实施例提供的混合内存键值对存储系统的请求处理方法,还包括:
(S1)对于任意一个跳表S,若其命令缓存队列Q为空,则等待直至命令缓存队列Q不为空,并转入(S2);否则,转入(S2);
(S2)从命令缓存队列Q中取跳表命令C并判断请求类型,若为更新请求,则转入(S3);若为插入请求,则转入(S4);若为范围查询请求,则转入(S5);
(S3)根据跳表命令C中的跳表节点地址和值地址更新对应的跳表节点;转入步骤(S1);
(S4)根据跳表命令C中的跳表节点地址将新建的跳表节点插入跳表S;转入步骤(S1);
(S5)根据跳表命令C中的查询范围获得跳表S中键的字典序位于查询范围内的所有跳表节点并返回值地址;转入步骤(S1);
在一个可选的实施方式中,若同一范围查询请求所对应的跳表命令均执行完成,则按照字典序合并各跳表命令返回的数据,从而得到范围查询请求的查询结果。
本发明所提供的混合内存键值对存储系统的请求处理方法,在NVM中建立多个跳表,并为每个跳表创建一个命令缓存队列,并且采用多跳表后台更新的策略,由此能够加快跳表的更新速度,避免过多的更新请求阻塞范围查询请求。
在本发明的第三实施例中,本发明提供的混合内存键值对存储系统的请求处理方法与本发明第一实施例提供的方法类似,不同之处在于,本发明第三实施例提供的混合内存键值对存储系统的请求处理方法,还包括:
在混合内存键值对存储系统重启或掉电恢复时,在DRAM中新建哈希表;
对于任意一个跳表S,定位到其首节点的最底层指针P;
根据指针P,遍历跳表S的最底层节点,并根据所遍历到的节点在DRAM中新建索引项,并插入哈希表,由此重建哈希表;
在一个可选的实施方式中,在重建哈希表的过程中,并行地遍历多个跳表,以加速哈希表的重建。
本发明所提供的混合内存键值对存储系统的请求处理方法,哈希表建立于DRAM中,而跳表建立于NVM中,保证了键值索引的持久化,并且由于哈希表重建速度较快,在系统重启或掉电恢复时可根据跳表快速重建哈希表,从而快速实现整个索引结构的重建;此外,在重建哈希表的过程中,可并行遍历多个跳表,因此能够进一步加速索引结构的重建。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种混合内存键值对存储系统的请求处理方法,所述混合内存键值对存储系统包括DRAM和NVM,其特征在于,包括如下步骤:
(1)判断请求类型,若为读请求,则转入步骤(2);若为写请求,则转入步骤(4);
(2)判断所述读请求的类型,若为点查询请求,则根据所述点查询请求的键查找哈希表,返回查询结果,并转入步骤(7);若为范围查询请求,则转入步骤(3);
(3)根据所述范围查询请求构建对应的跳表命令,将所述跳表命令添加至每一个跳表的命令缓存队列,并等待直至获取到所有跳表的返回结果;按照字典序合并获取到的返回结果,从而得到所述范围查询请求的查询结果并返回;转入步骤(7);
(4)为所述写请求在所述NVM中分配内存并写入值,从而得到所述写请求的值地址;
(5)判断所述写请求的类型,若为更新请求,则根据所述更新请求更新所述哈希表,并构建对应的跳表命令;若为插入请求,则根据所述插入请求新建跳表节点并更新所述哈希表,并构建对应的跳表命令;
(6)根据所述写请求中键的长度确定目标跳表,并将所述跳表命令添加至所述目标跳表的命令缓存队列;转入步骤(7);
(7)请求处理结束;
在处理请求的同时,还包括:
(S1)对于任意一个跳表S,若其命令缓存队列Q为空,则等待直至所述命令缓存队列Q不为空,并转入(S2);否则,转入(S2);
(S2)从所述命令缓存队列Q中取跳表命令C并判断请求类型,若为更新请求,则转入(S3);若为插入请求,则转入(S4);若为范围查询请求,则转入(S5);
(S3)根据所述跳表命令C中的跳表节点地址和值地址更新对应的跳表节点;转入步骤(S1);
(S4)根据所述跳表命令C中的跳表节点地址将新建的跳表节点插入所述跳表S;转入步骤(S1);
(S5)根据所述跳表命令C中的查询范围获得所述跳表S中键的字典序位于所述查询范围内的所有跳表节点并返回值地址;转入步骤(S1);其中,所述哈希表建立于所述DRAM中,所述哈希表中的索引项存储有键、值地址以及对应的跳表节点地址;所述跳表建立于所述NVM中,所述跳表有多个,每一个跳表分别与一个键的长度范围相对应,并且每一个跳表分别设置有一个命令缓存队列,所述跳表中的跳表节点存储有键和值地址;所述跳表命令封装有请求类型,所述查询范围为键的字典序范围。
2.如权利要求1所述的混合内存键值对存储系统的请求处理方法,其特征在于,还包括,若同一范围查询请求所对应的跳表命令均执行完成,则按照字典序合并各跳表命令返回的数据,从而得到所述范围查询请求的查询结果。
3.如权利要求1所述的混合内存键值对存储系统的请求处理方法,其特征在于,所述步骤(3)中,根据所述范围查询请求构建对应的跳表命令,包括:
获得所述范围查询请求的查询范围R;构建跳表命令Cs,并设置跳表命令Cs的请求类型为范围查询请求,设置所述跳表命令Cs的查询范围为所述查询范围R;
其中,所述查询范围为键的字典序范围。
4.如权利要求1所述的混合内存键值对存储系统的请求处理方法,其特征在于,所述步骤(5)中,判断所述写请求的类型的方法为:
根据所述写请求的键查找所述哈希表,若查找成功,则判定所述写请求为更新请求;否则,判定所述写请求为插入请求。
5.如权利要求1所述的混合内存键值对存储系统的请求处理方法,其特征在于,所述步骤(5)中,根据所述更新请求更新所述哈希表,并构建对应的跳表命令,包括:
根据所述更新请求的键查找到对应的索引项Iu
将所述索引项Iu中值地址更新为所述写请求的值地址;
构建跳表命令Cu,设置所述跳表命令Cu的请求类型为更新请求,并将所述跳表命令Cu的跳表节点地址和值地址对应地设置为所述索引项Iu中存储的跳表节点地址和值地址。
6.如权利要求1所述的混合内存键值对存储系统的请求处理方法,其特征在于,所述步骤(5)中,根据所述插入请求新建跳表节点并更新所述哈希表,并构建对应的跳表命令,包括:
在所述NVM中新建跳表节点N,并将所述跳表节点N的键和值地址分别设置为所述插入请求的键和所述写请求的值地址;
在所述DRAM中新建索引项Ii,将所述索引项Ii的键和值地址对应地设置为所述跳表节点N的键和值地址,并将所述索引项Ii的跳表节点地址设置为所述跳表节点N的内存地址;
将所述索引项Ii插入所述哈希表;
构建跳表命令Ci,设置所述跳表命令Ci的请求类型为插入请求,并将所述跳表命令Ci的跳表节点地址设置为所述索引项Ii中存储的跳表节点地址。
7.如权利要求1所述的混合内存键值对存储系统的请求处理方法,其特征在于,还包括:
在所述混合内存键值对存储系统重启或掉电恢复时,在所述DRAM中新建哈希表;
对于任意一个跳表S,定位到其首节点的最底层指针P;
根据所述指针P,遍历所述跳表S的最底层节点,并根据所遍历到的节点在所述DRAM中新建索引项,并插入所述哈希表,由此重建所述哈希表。
8.如权利要求7所述的混合内存键值对存储系统的请求处理方法,其特征在于,在重建所述哈希表的过程中,并行地遍历多个跳表。
CN201811395627.6A 2018-11-22 2018-11-22 一种混合内存键值对存储系统的请求处理方法 Active CN109683811B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811395627.6A CN109683811B (zh) 2018-11-22 2018-11-22 一种混合内存键值对存储系统的请求处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811395627.6A CN109683811B (zh) 2018-11-22 2018-11-22 一种混合内存键值对存储系统的请求处理方法

Publications (2)

Publication Number Publication Date
CN109683811A CN109683811A (zh) 2019-04-26
CN109683811B true CN109683811B (zh) 2020-05-19

Family

ID=66185492

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811395627.6A Active CN109683811B (zh) 2018-11-22 2018-11-22 一种混合内存键值对存储系统的请求处理方法

Country Status (1)

Country Link
CN (1) CN109683811B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110113420B (zh) * 2019-05-08 2020-06-05 重庆大学 基于nvm的分布式消息队列管理系统
CN110347852B (zh) * 2019-06-06 2021-11-02 华中科技大学 嵌入横向扩展键值存储系统的文件系统及文件管理方法
CN110413612A (zh) * 2019-07-02 2019-11-05 华中科技大学 一种基于混合索引的混合内存性能优化方法及系统
CN111459846B (zh) * 2020-03-12 2022-03-18 华中科技大学 一种基于混合dram-nvm内存的动态哈希表操作方法
CN111651455A (zh) * 2020-05-26 2020-09-11 上海交通大学 基于机器学习的高效并发索引数据结构
CN111861743A (zh) * 2020-06-29 2020-10-30 浪潮电子信息产业股份有限公司 一种基于逐笔数据重构市场行情的方法、装置及设备
CN112395212B (zh) * 2020-11-05 2022-05-31 华中科技大学 减少键值分离存储系统的垃圾回收和写放大的方法及系统
CN112486996B (zh) * 2020-12-14 2022-08-05 上海交通大学 面向对象的内存数据存储系统
CN113568908A (zh) * 2021-07-16 2021-10-29 华中科技大学 一种键值请求并行调度方法及系统
CN113821171B (zh) * 2021-09-01 2024-06-11 上海沄熹科技有限公司 一种基于哈希表与lsm树的键值存储方法
CN114969069B (zh) * 2022-05-30 2024-06-18 华侨大学 一种应用于键值存储系统的热度感知本地更新方法
CN117539408B (zh) * 2024-01-09 2024-03-12 华中科技大学 一种存算一体索引系统及键值对存储系统
CN118131993B (zh) * 2024-02-09 2024-08-23 上海丛云信息科技有限公司 Ipfs的键值对存储扩展系统和方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424477B1 (en) * 2003-09-03 2008-09-09 Sun Microsystems, Inc. Shared synchronized skip-list data structure and technique employing linearizable operations
CN102722449B (zh) * 2012-05-24 2015-01-21 中国科学院计算技术研究所 基于SSD的Key-Value型本地存储方法及系统
CN103078927B (zh) * 2012-12-28 2015-07-22 合一网络技术(北京)有限公司 一种key-value数据分布式缓存系统及其方法
CN107728937B (zh) * 2017-09-15 2020-09-04 上海交通大学 一种使用非易失性内存介质的键值对持久存储方法及系统

Also Published As

Publication number Publication date
CN109683811A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109683811B (zh) 一种混合内存键值对存储系统的请求处理方法
CN109213772B (zh) 数据存储方法及NVMe存储系统
CN105117415B (zh) 一种优化的ssd数据更新方法
US8868926B2 (en) Cryptographic hash database
CN110083601B (zh) 面向键值存储系统的索引树构建方法及系统
US9871727B2 (en) Routing lookup method and device and method for constructing B-tree structure
CN107153707B (zh) 一种针对非易失内存的哈希表构建方法及系统
CN110888886B (zh) 一种索引结构及构建方法、键值存储系统及请求处理方法
CN110347852B (zh) 嵌入横向扩展键值存储系统的文件系统及文件管理方法
US9495398B2 (en) Index for hybrid database
CN109299113B (zh) 具有存储感知的混合索引的范围查询方法
US11269772B2 (en) Persistent memory storage engine device based on log structure and control method thereof
CN110109927A (zh) 基于LSM树的Oracle数据库数据处理方法
CN110413612A (zh) 一种基于混合索引的混合内存性能优化方法及系统
CN106599091B (zh) 基于键值存储的rdf图结构存储和索引方法
CN112732725B (zh) 基于nvm混合内存的自适应前缀树构建方法及其系统、介质
US20240028560A1 (en) Directory management method and system for file system based on cuckoo hash and storage medium
CN115718819A (zh) 一种索引构建方法、数据读取方法及索引构建装置
US11093169B1 (en) Lockless metadata binary tree access
CN114969034A (zh) LSM-Tree架构数据库有序表的查询方法和装置
AU2016277745B2 (en) Linked-list-based method and device for application caching management
CN105468599A (zh) 一种存储虚拟化系统的元数据层次管理方法
CN110334251B (zh) 一种有效解决rehash冲突的元素序列生成方法
US9715446B2 (en) Method for updating inverted index of flash SSD
CN118092812B (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
GR01 Patent grant
GR01 Patent grant