CN112732725B - 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 - Google Patents

基于nvm混合内存的自适应前缀树构建方法及其系统、介质 Download PDF

Info

Publication number
CN112732725B
CN112732725B CN202110088720.8A CN202110088720A CN112732725B CN 112732725 B CN112732725 B CN 112732725B CN 202110088720 A CN202110088720 A CN 202110088720A CN 112732725 B CN112732725 B CN 112732725B
Authority
CN
China
Prior art keywords
node
address space
data structure
index data
nvm
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
CN202110088720.8A
Other languages
English (en)
Other versions
CN112732725A (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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202110088720.8A priority Critical patent/CN112732725B/zh
Publication of CN112732725A publication Critical patent/CN112732725A/zh
Application granted granted Critical
Publication of CN112732725B publication Critical patent/CN112732725B/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Landscapes

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

Abstract

本发明提供了一种基于NVM混合内存的自适应前缀树构建方法,根据全局索引数据结构对全量数据和节点在NVM地址空间进行构建和维护;根据快捷索引数据结构对新增数据和节点在DRAM地址空间进行分配和维护;当DRAM地址空间占用达到设定比例后,触发迁移线程将新增数据和节点迁移到NVM地址空间中,降低DRAM地址空间存储。本发明还提供了一种基于NVM混合内存的自适应前缀树构建系统,能够在自适应前缀树低DRAM地址空间占用的基础上,根据节点上存储数据的冷热度,对索引结构进行分区域存储,在降低了DRAM地址空间消耗的同时,利用工作负载的局部性特征,为新增节点提供更为快捷的访问方式,可以很好的维持数据库请求响应性能。

Description

基于NVM混合内存的自适应前缀树构建方法及其系统、介质
技术领域
本发明涉及计算机存储技术领域,具体地,涉及一种基于NVM混合内存的自适应前缀树构建方法及其系统、介质。
背景技术
非易失性存储器(英文:non-volatile memory,简称NVM)是一种新型的存储介质,其与传统的二级存储介质硬盘驱动器(英文:Hard Disk Drive,简称HDD)和固态硬盘(英文:Solid State Disk或Solid State Drive,简称SSD)相比,能够支持按字节寻址,拥有更高的吞吐量。和动态随机存取存储器(英文:Dynamic Random Access Memory,简称DRAM)相比则具有非易失性,容量更大,单位存储成本更便宜的有点,但是缺点就是读写的不对称性。NVM的写入比读取需要更多的时间,同时过多的写入会导致NVM损坏。因此,基于NVM-DRAM混合内存的系统应用被广泛研究。
内存数据库现已被大规模应用于生产生活中,用于为搜索引擎、电商、在线教育等互联网平台提供服务,其通过将所属有数据加载至内存,消除磁盘输入和输出来提高数据库性能。故其性能受限于物理的内存空间大小。当数据量不断增大,为了提高对热数据的处理性能,通常会利用工作负载的局部性特征,将热数据保留在读写速度最快的存储介质DRAM中,相反,冷数据在DRAM中进行压缩并迁移到SSD或磁盘等辅助存储中。
索引是实现数据库高性能的重要数据结构。索引的引入需要占用额外的物理空间,特别当数据库运行在联机事务处理过程(英文:On-Line Transaction Processing,简称OLTP),也称为面向交易的处理过程的工作负载下,由于数据项较小而为了加快处理速度通常会对多个属性建立索引,此时会导致索引的空间消耗占比更大。以往的研究中忽略了索引结构对DRAM的空间消耗,而又因为DRAM和传统二级存储介质之间有巨大的读写性能,无法根据工作负载的局部性对索引结构进行分区存储,降低索引结构的DRAM占用。
而NVM新硬件的低延迟和可按字节寻址,能够实现对现有的索引结构的优化,降低索引结构对DRAM的空间消耗,同时维持较高的性能。
经过检索,专利文献CN109683811B公开了一种缓和内存键值对存储系统的请求处理方法,包括:若为点查询请求,则查找哈希表并返回查询结果;若为范围查询请求,则构建对应的跳表命令并添加至每一个跳表的命令缓存队列,等待直至获取到所有跳表的返回结果,并按照字典序合并获取到的返回结果并返回;若为写请求,则在NVM中分配内存并写入值;进一步判断写请求类型,若为更新请求,则更新哈希表,并构建对应的跳表命令;若为插入请求,则新建跳表节点并更新哈希表,并构建对应的跳表命令;根据写请求中键的长度确定目标跳表,并将跳表命令添加至目标跳表的命令缓存队列。该现有技术采用的是使用NVM的非易失性特征来构建非易失性索引结构,解决的是读写延迟,但是并未解决内存数据库索引占用DRAM空间过大的现状,存储成本依然很高。
专利文献CN110083601A公开了一种面向键值存储系统的索引树构建方法及系统,包括:对键值数据的键值的前缀进行排序和划分以生成字典树,作为索引树的上层结构;以该键值的哈希值构建哈希表,以该哈希表生成该索引树的下层结构;建立键值数据—哈希表—字典树的对应关系,生成该索引树。该现有技术是在不同的存储介质上选择不同的索引结构,存在局限性,不能整合成单一的索引结构进行索引。
因此,亟需开发一种能够实现对现有的索引结构的优化,降低索引结构对DRAM的空间消耗,同时还能维持较高的性能的系统和方法。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于NVM混合内存的自适应前缀树构建方法及其系统、介质,能够有效的降低索引结构对DRAM地址空间的占用,降低存储成本,并高效实现各种数据库操作请求。
根据本发明提供的一种基于NVM混合内存的自适应前缀树构建方法,根据全局索引数据结构对全量数据和节点在NVM地址空间进行构建和维护;根据快捷索引数据结构对新增数据和节点在DRAM地址空间进行分配和维护;
当DRAM地址空间占用达到设定比例后,触发迁移线程将新增数据和节点迁移到NVM地址空间中,降低DRAM地址空间存储。
优选地,包括如下步骤:
插入步骤:将待插入的键值对的键值插入全局索引数据结构中,如果触发了新增节点,则在DRAM地址空间中构建并将新增节点位于NVM地址空间的祖先节点加到快捷索引数据结构中进行维护;
单点查询步骤:将待查询的键值对通过快捷索引数据结构进行查询,如果找到对应的单点数据则返回单点数据;如果没有找到对应的数据则通过全局索引数据结构来获取数据;
更新步骤:将待更新的键值对通过快捷索引数据结构进行更新,如果更新成功则直接对数据进行修改,如果没有更新成功则通过全局索引数据结构来更新数据;
范围查询步骤:将待查询的键值对范围通过全局索引数据结构来获取范围数据;
删除步骤:根据待删除的键值对从全局索引数据结构中删除对应的键值对。
优选地,插入步骤包括:
步骤S11:将待插入的键值对的键值插入全局索引数据结构中,从NVM地址空间的全局索引数据结构的根节点出发,向下迭代搜索目标节点;
步骤S12:搜索到目标节点后,如果目标节点有空间能够容纳键值数据,则直接插入;如果目标节点没有空间容纳键值数据,则将目标节点转换为大容量的目标节点,并将数据插入到大容量的目标节点中,转入步骤S15;
步骤S13:由于自适应前缀树的惰性展开,如果键值数据插入位置已存储一个叶子节点,则在DRAM地址空间中构建新节点,新节点的类型为Node4,用于存储新数据和现有叶子节点,转入步骤S15;
步骤S14:由于自适应前缀树的路径压缩,如果当前内部节点的压缩前缀和键不匹配,则在DRAM地址空间中构建新节点作为当前内部节点的父节点,新节点类型为Node4,调整内部节点的压缩路径,将数据插入到新增节点中,转入步骤S15;
步骤S15:如果新增节点的父节点位于NVM地址空间,同时父节点除了新增节点不存在其他位于DRAM地址空间的子节点,则将根节点到父节点的路径作为键,父节点作为值,转入步骤S16;否则转入步骤S17;
步骤S16:如果快捷索引数据结构维护了新增节点的父节点的祖先节点,则转入步骤S17;如果快捷索引数据结构维护了新增节点的子孙节点,则将子孙节点信息从快捷索引数据结构中删除,从位于DRAM地址空间的快捷索引数据结构的根节点出发,向下迭代搜索,以父节点的路径和父节点指针作为键值对构建叶子节点,将叶子节点插入到目标节点中,转入步骤S17;
步骤S17:插入操作完成。
优选地,单点查询步骤包括:
步骤S21:将待查询的键值对通过快捷索引数据结构进行查询,从快捷索引数据结构的根节点出发,向下迭代搜索;
步骤S22:如果待查询的键值对不命中任何一个节点的路径信息,则转入步骤S24;
步骤S23:如果找到键值对,则直接返回数据并转入步骤S25;否则转入步骤S24;
步骤S24:从全局索引数据结构的根节点出发,向下迭代搜索,如果找到数据,则返回值;否则返回0表示数据不存在;
步骤S25:单点查询操作结束。
优选地,更新步骤包括:
步骤S31:将待更新的键值对通过快捷索引数据结构进行更新,从快捷索引数据结构的根节点出发,向下迭代搜索;
步骤S32:如果待查询的键值对不命中任何一个节点的路径信息,则转入步骤S34;如果键值对命中节点路径信息,则从命中节点开始,向下遍历;
步骤S33:如果找到键值对,则修改数据并返回真并转入步骤S35;否则转入步骤S34;
步骤S34:从全局索引数据结构的根节点出发,向下迭代搜索,如果找到数据,则修改数据并返回真表示更新成功,否则返回假;
步骤S35:更新操作结束。
优选地,范围查询步骤包括:
步骤S41:从全局索引数据结构的根节点出发,向下迭代搜索;
步骤S42:按照自适应前缀树的范围查询流程来进行查找;
步骤S43:范围查询操作结束。
优选地,删除步骤包括:
步骤S51:将待删除的键值对从全局索引数据结构的根节点出发,向下遍历寻找待删除的键值对所在的内部节点和叶子节点;
步骤S52:如果未找到待删除键值对,则返回假,转入步骤S54;
步骤S53:如果找到待删除的键值对,则直接删除其对应的叶子节点,并从内部节点中删除该叶子节点的指针;如果内部节点位于NVM地址空间,转入步骤S55;否则转入步骤S54;
步骤S54:如果由于记录的删除导致内部节点需要转换为更小容量的节点,则进行转换,返回真;
步骤S55:删除操作结束。
根据本发明提供的一种基于NVM混合内存的自适应前缀树构建系统,包括:
NVM地址空间:NVM地址空间中存储了全局索引数据结构架构和大部分的键值对数据;
DRAM地址空间:DRAM地址空间中存储了快捷索引数据结构架构和新增节点数据;
命令处理模块:用于接受数据库的对NVM地址空间和DRAM地址空间的操作请求,针对每一个请求新建一个主线程进行操作处理,根据不同的操作类型,执行不同的操作流程;
迁移模块:将DRAM地址空间中的新增节点合并到NVM地址空间中,当DRAM地址空间和NVM地址空间达到设定的占用比例的初始阈值时,触发后台的迁移线程,降低DRAM地址的使用开销。
优选地,迁移模块在DRAM地址空间中构造新的快捷索引数据结构根节点,原子性的替换根节点为新根节点,从老快捷索引数据结构的根节点出发,采用深度优先算法进行遍历,获取所有的叶子节点,对于快捷索引数据结构的所有叶子节点,获取其记录的节点描述信息和节点地址,执行节点的递归迁移,节点迁移完毕后,删除老快捷索引数据结构中所有节点的空间占用。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过设置DRAM地址空间占用达到设定比例后,触发迁移线程将新增数据和节点迁移到NVM地址空间中,能够有效降低索引结构对DRAM的空间占用,降低存储成本,并高效实现各种数据库操作请求。
2、本发明基于DRAM-NVM异质内存的数据库混合索引设计,它是一个二阶段的索引数据结构,基于OLTP工作负载的局部性特征对索引结构进行分区存储,减少索引结构对DRMA空间的占用。
3、本发明在DRAM地址空间中维护对新增数据和节点的快捷索引数据结构,减少NVM地址空间的的引入对索引性能的影响。
4、本发明所设计的索引分区存储模式在单一的索引结构上进行改造,可以拓展到其他多种顺序索引结构中。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明中的基于NVM混合内存的自适应前缀树构建系统的示意图;
图2为本发明中插入操作处理的示意图;
图3为本发明中迁移处理的示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
如图1-图3所示,本发明提供了一种基于NVM混合内存的自适应前缀树构建方法,通过全局索引数据结构对全量数据和节点在NVM地址空间进行构建和维护,通过快捷索引数据结构对新增数据和节点在DRAM地址空间进行分配和维护,以便加快新增数据查询更新的响应速度。
其中,基于NVM混合内存的自适应前缀树构建方法分为接收数据插入阶段和迁移阶段。接收数据插入阶段指当新数据的插入引发了全局索引的节点新增,在DRAM中分配节点需要的地址空间。基于工作负载的局部性特征,新增节点上存储的数据很可能在不久的将来被访问或修改,将新增节点插入到快捷索引中进行维护,以加快响应速度;迁移阶段指当DRAM地址空间占用达到设定比例后,触发迁移线程将新增节点迁移到NVM空间中,从而降低DRAM地址空间的使用开销。
进一步来说,按照如下步骤处理每一个到达的数据库操作请求:
插入步骤:将待插入的键值对的键值插入全局索引数据结构中,如果触发了新增节点,则在DRAM地址空间中构建并将新增节点位于NVM地址空间的祖先节点加到快捷索引数据结构中进行维护。也就是说,如果该新增节点的父节点位于NVM地址空间,则将该父节点代表的字符路径作为键,指向父节点的指针作为值加到快捷索引中进行维护,插入操作结束。
单点查询步骤:将待查询的键值对通过快捷索引数据结构进行查询,如果找到对应的单点数据则返回单点数据;如果没有找到对应的数据则通过全局索引数据结构来获取数据,单点查询步骤操作结束。
更新步骤:将待更新的键值对通过快捷索引数据结构进行更新,如果更新成功则直接对数据进行修改,如果没有更新成功则通过全局索引数据结构来更新数据,更新操作结束。
范围查询步骤:将待查询的键值对范围通过全局索引数据结构来获取范围数据,范围查询操作结束。
删除步骤:根据待删除的键值对从全局索引数据结构中删除对应的键值对,删除操作结束。
更进一步来说,插入步骤具体操作如下:
步骤S11:将待插入的键值对的键值插入全局索引数据结构中,从NVM地址空间的全局索引数据结构的根节点出发,向下迭代搜索目标节点;
步骤S12:搜索到目标节点后,如果目标节点有空间能够容纳键值数据,则直接插入;如果目标节点没有空间容纳键值数据,则将目标节点转换为大容量的目标节点,并将数据插入到大容量的目标节点中,转入步骤S15;
步骤S13:由于自适应前缀树的惰性展开,如果键值数据插入位置已存储一个叶子节点,则在DRAM地址空间中构建新节点,新节点的类型为Node4,用于存储新数据和现有叶子节点,转入步骤S15;
步骤S14:由于自适应前缀树的路径压缩,如果当前内部节点的压缩前缀和键不匹配,则在DRAM地址空间中构建新节点作为当前内部节点的父节点,新节点类型为Node4,调整内部节点的压缩路径,将数据插入到新增节点中,转入步骤S15;
步骤S15:如果新增节点的父节点位于NVM地址空间,同时父节点除了新增节点不存在其他位于DRAM地址空间的子节点,则将根节点到父节点的路径作为键,父节点作为值,转入步骤S16;否则转入步骤S17;
步骤S16:如果快捷索引数据结构维护了新增节点的父节点的祖先节点,则转入步骤S17;如果快捷索引数据结构维护了新增节点的子孙节点,则将子孙节点信息从快捷索引数据结构中删除,从位于DRAM地址空间的快捷索引数据结构的根节点出发,向下迭代搜索,以父节点的路径和父节点指针作为键值对构建叶子节点,将叶子节点插入到目标节点中,转入步骤S17;
步骤S17:插入操作完成。
单点查询步骤具体操作如下:
步骤S21:将待查询的键值对通过快捷索引数据结构进行查询,从快捷索引数据结构的根节点出发,向下迭代搜索;
步骤S22:如果待查询的键值对不命中任何一个节点的路径信息,则转入步骤S24;
步骤S23:如果找到键值对,则直接返回数据并转入步骤S25;否则转入步骤S24;
步骤S24:从全局索引数据结构的根节点出发,向下迭代搜索,如果找到数据,则返回值;否则返回0表示数据不存在;
步骤S25:单点查询操作结束。
更新步骤具体操作如下:
步骤S31:将待更新的键值对通过快捷索引数据结构进行更新,从快捷索引数据结构的根节点出发,向下迭代搜索;
步骤S32:如果待查询的键值对不命中任何一个节点的路径信息,则转入步骤S34;如果键值对命中节点路径信息,则从命中节点开始,向下遍历;
步骤S33:如果找到键值对,则修改数据并返回真并转入步骤S35;否则转入步骤S34;
步骤S34:从全局索引数据结构的根节点出发,向下迭代搜索,如果找到数据,则修改数据并返回真表示更新成功,否则返回假;
步骤S35:更新操作结束。
删除步骤具体操作如下:
步骤S51:将待删除的键值对从全局索引数据结构的根节点出发,向下遍历寻找待删除的键值对所在的内部节点和叶子节点;
步骤S52:如果未找到待删除键值对,则返回假,转入步骤S54;
步骤S53:如果找到待删除的键值对,则直接删除其对应的叶子节点,并从内部节点中删除该叶子节点的指针;如果内部节点位于NVM地址空间,转入步骤S55;否则转入步骤S54;
步骤S54:如果由于记录的删除导致内部节点需要转换为更小容量的节点,则进行转换,返回真;
步骤S55:删除操作结束。
本发明基于NVM混合内存的自适应前缀树索引结构,在自适应前缀树低DRAM空间占用的基础上,根据节点上存储数据的冷热度,对索引结构进行分区域存储,在降低了DRAM空间消耗的同时,利用工作负载的局部性特征,为新增节点提供更为快捷的访问方式,可以很好的维持数据库请求响应性能。
本发明还提供了一种基于NVM混合内存的自适应前缀树构建系统,包括:
NVM地址空间:NVM地址空间中存储了全局索引数据结构架构和大部分的键值对数据;
DRAM地址空间:DRAM地址空间中存储了快捷索引数据结构架构和新增节点数据;
命令处理模块:用于接受数据库的对NVM地址空间和DRAM地址空间的操作请求,针对每一个请求新建一个主线程进行操作处理,根据不同的操作类型,执行不同的操作流程;
迁移模块:将DRAM地址空间中的新增节点合并到NVM地址空间中,当DRAM地址空间和NVM地址空间达到设定的占用比例的初始阈值时,触发后台的迁移线程,降低DRAM地址的使用开销。
其中迁移模块是在DRAM地址空间中构造新的快捷索引根节点,原子性的替换根节点为新根节点;从老快捷索引的根节点出发,采用深度优先算法进行遍历,获取所有的叶子节点;对于快捷索引的所有叶子节点,获取其记录的节点描述信息和节点地址,转入执行节点的递归迁移。节点迁移完毕后,删除老快捷索引中所有节点的空间占用。
继续进一步来说,转入执行节点的递归迁移操作具体为:遍历子节点,如果子节点由于数据库操作被命令处理流程写入,以根节点到该节点的路径作为键,该节点指针,插入到快捷索引中,待节点迁移完毕后,删除老快捷索引中所有节点的空间占用。
更进一步来说,如果子节点可以被迁移,则在NVM地址空间中分配与Node256节点类型大小相等的地址空间,填充相应数据,修改节点指向子节点的指针,改为指向这块新的地址空间,转入转入执行节点的递归迁移的具体操作流程,继续该新副本节点的子孙节点。
总体而言,通过本发明构思的以上技术方案,本发明能够实现如下效果:
1、在索引结构中,节点根据新建时间的久近,分区存储在不同的介质中,只有部分索引节点及数据保留在DRAM空间中,其余节点和数据存储在单位价值更为便宜的NVM中,降低了总体成本;
2、快捷索引的构建为新增节点上的数据提供了更加快速的访问路径,同时快捷索引存储在DRAM地址空间中,可以充分发挥DRAM地址空间的读写速率,减少NVM地址空间较高延迟带来的系统性能降低;
3、基于工作负载局部性特征,大量的写操作都在新增节点也即是在DRAM地址空间中完成,对NVM地址空间的写入只涉及迁移过程以及对老节点的写入(发生频率较低),减少了对NVM地址空间的写次数,延长NVM地址空间使用周期。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (8)

1.一种基于NVM混合内存的自适应前缀树构建方法,其特征在于,
根据全局索引数据结构对全量数据和节点在NVM地址空间进行构建和维护;
根据快捷索引数据结构对新增数据和节点在DRAM地址空间进行分配和维护;
当DRAM地址空间占用达到设定比例后,触发迁移线程将新增数据和节点迁移到NVM地址空间中,降低DRAM地址空间存储;
插入步骤:将待插入的键值对的键值插入全局索引数据结构中,如果触发了新增节点,则在DRAM地址空间中构建并将新增节点位于NVM地址空间的祖先节点加到快捷索引数据结构中进行维护;
单点查询步骤:将待查询的键值对通过快捷索引数据结构进行查询,如果找到对应的单点数据则返回单点数据;如果没有找到对应的数据则通过全局索引数据结构来获取数据;
更新步骤:将待更新的键值对通过快捷索引数据结构进行更新,如果更新成功则直接对数据进行修改,如果没有更新成功则通过全局索引数据结构来更新数据;
范围查询步骤:将待查询的键值对范围通过全局索引数据结构来获取范围数据;
删除步骤:根据待删除的键值对从全局索引数据结构中删除对应的键值对。
2.根据权利要求1所述的基于NVM混合内存的自适应前缀树构建方法,其特征在于,所述插入步骤包括:
步骤S11:将待插入的键值对的键值插入全局索引数据结构中,从NVM地址空间的全局索引数据结构的根节点出发,向下迭代搜索目标节点;
步骤S12:搜索到目标节点后,如果目标节点有空间能够容纳键值数据,则直接插入;如果目标节点没有空间容纳键值数据,则将目标节点转换为大容量的目标节点,并将数据插入到大容量的目标节点中,转入步骤S15;
步骤S13:由于自适应前缀树的惰性展开,如果键值数据插入位置已存储一个叶子节点,则在DRAM地址空间中构建新节点,新节点的类型为Node4,用于存储新数据和现有叶子节点,转入步骤S15;
步骤S14:由于自适应前缀树的路径压缩,如果当前内部节点的压缩前缀和键不匹配,则在DRAM地址空间中构建新节点作为当前内部节点的父节点,新节点类型为Node4,调整内部节点的压缩路径,将数据插入到新增节点中,转入步骤S15;
步骤S15:如果新增节点的父节点位于NVM地址空间,同时父节点除了新增节点不存在其他位于DRAM地址空间的子节点,则将根节点到父节点的路径作为键,父节点作为值,转入步骤S16;否则转入步骤S17;
步骤S16:如果快捷索引数据结构维护了新增节点的父节点的祖先节点,则转入步骤S17;如果快捷索引数据结构维护了新增节点的子孙节点,则将子孙节点信息从快捷索引数据结构中删除,从位于DRAM地址空间的快捷索引数据结构的根节点出发,向下迭代搜索,以父节点的路径和父节点指针作为键值对构建叶子节点,将叶子节点插入到目标节点中,转入步骤S17;
步骤S17:插入操作完成。
3.根据权利要求1所述的基于NVM混合内存的自适应前缀树构建方法,其特征在于,所述单点查询步骤包括:
步骤S21:将待查询的键值对通过快捷索引数据结构进行查询,从快捷索引数据结构的根节点出发,向下迭代搜索;
步骤S22:如果待查询的键值对不命中任何一个节点的路径信息,则转入步骤S24;
步骤S23:如果找到键值对,则直接返回数据并转入步骤S25;否则转入步骤S24;
步骤S24:从全局索引数据结构的根节点出发,向下迭代搜索,如果找到数据,则返回值;否则返回0表示数据不存在;
步骤S25:单点查询操作结束。
4.根据权利要求1所述的基于NVM混合内存的自适应前缀树构建方法,其特征在于,所述更新步骤包括:
步骤S31:将待更新的键值对通过快捷索引数据结构进行更新,从快捷索引数据结构的根节点出发,向下迭代搜索;
步骤S32:如果待查询的键值对不命中任何一个节点的路径信息,则转入步骤S34;如果键值对命中节点路径信息,则从命中节点开始,向下遍历;
步骤S33:如果找到键值对,则修改数据并返回真并转入步骤S35;否则转入步骤S34;
步骤S34:从全局索引数据结构的根节点出发,向下迭代搜索,如果找到数据,则修改数据并返回真表示更新成功,否则返回假;
步骤S35:更新操作结束。
5.根据权利要求1所述的基于NVM混合内存的自适应前缀树构建方法,其特征在于,所述范围查询步骤包括:
步骤S41:从全局索引数据结构的根节点出发,向下迭代搜索;
步骤S42:按照自适应前缀树的范围查询流程来进行查找;
步骤S43:范围查询操作结束。
6.根据权利要求1所述的基于NVM混合内存的自适应前缀树构建方法,其特征在于,所述删除步骤包括:
步骤S51:将待删除的键值对从全局索引数据结构的根节点出发,向下遍历寻找待删除的键值对所在的内部节点和叶子节点;
步骤S52:如果未找到待删除键值对,则返回假,转入步骤S54;
步骤S53:如果找到待删除的键值对,则直接删除其对应的叶子节点,并从内部节点中删除该叶子节点的指针;如果内部节点位于NVM地址空间,转入步骤S55;否则转入步骤S54;
步骤S54:如果由于记录的删除导致内部节点需要转换为更小容量的节点,则进行转换,返回真;
步骤S55:删除操作结束。
7.一种基于NVM混合内存的自适应前缀树构建系统,其特征在于,使用权利要求1所述的基于NVM混合内存的自适应前缀树构建方法进行自适应前缀树构建,包括:
NVM地址空间:NVM地址空间中存储了全局索引数据结构架构和大部分的键值对数据;
DRAM地址空间:DRAM地址空间中存储了快捷索引数据结构架构和新增节点数据;
命令处理模块:用于接受数据库的对NVM地址空间和DRAM地址空间的操作请求,针对每一个请求新建一个主线程进行操作处理,根据不同的操作类型,执行不同的操作流程;
迁移模块:将DRAM地址空间中的新增节点合并到NVM地址空间中,当DRAM地址空间和NVM地址空间达到设定的占用比例的初始阈值时,触发后台的迁移线程,降低DRAM地址的使用开销;
所述迁移模块在DRAM地址空间中构造新的快捷索引数据结构根节点,原子性的替换根节点为新根节点,从老快捷索引数据结构的根节点出发,采用深度优先算法进行遍历,获取所有的叶子节点,对于快捷索引数据结构的所有叶子节点,获取其记录的节点描述信息和节点地址,执行节点的递归迁移,节点迁移完毕后,删除老快捷索引数据结构中所有节点的空间占用。
8.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202110088720.8A 2021-01-22 2021-01-22 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 Active CN112732725B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110088720.8A CN112732725B (zh) 2021-01-22 2021-01-22 基于nvm混合内存的自适应前缀树构建方法及其系统、介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110088720.8A CN112732725B (zh) 2021-01-22 2021-01-22 基于nvm混合内存的自适应前缀树构建方法及其系统、介质

Publications (2)

Publication Number Publication Date
CN112732725A CN112732725A (zh) 2021-04-30
CN112732725B true CN112732725B (zh) 2022-03-25

Family

ID=75593723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110088720.8A Active CN112732725B (zh) 2021-01-22 2021-01-22 基于nvm混合内存的自适应前缀树构建方法及其系统、介质

Country Status (1)

Country Link
CN (1) CN112732725B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626432B (zh) * 2021-08-03 2023-10-13 上海沄熹科技有限公司 一种支持任意Key值的自适应基数树的改进方法
CN114791941B (zh) * 2022-06-21 2022-08-26 北京有生博大软件股份有限公司 一种静默化数据处理方法及处理系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109407979A (zh) * 2018-09-27 2019-03-01 清华大学 多线程持久性b+树数据结构设计与实现方法
CN110020001A (zh) * 2017-12-29 2019-07-16 阿里巴巴集团控股有限公司 字符串数据的存储、查询方法以及相应的设备
CN110083601A (zh) * 2019-04-04 2019-08-02 中国科学院计算技术研究所 面向键值存储系统的索引树构建方法及系统
CN111459846A (zh) * 2020-03-12 2020-07-28 华中科技大学 一种基于混合dram-nvm内存的动态哈希表操作方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496283B2 (en) * 2016-01-22 2019-12-03 Suraj Prabhakar WAGHULDE Adaptive prefix tree based order partitioned data storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110020001A (zh) * 2017-12-29 2019-07-16 阿里巴巴集团控股有限公司 字符串数据的存储、查询方法以及相应的设备
CN109407979A (zh) * 2018-09-27 2019-03-01 清华大学 多线程持久性b+树数据结构设计与实现方法
CN110083601A (zh) * 2019-04-04 2019-08-02 中国科学院计算技术研究所 面向键值存储系统的索引树构建方法及系统
CN111459846A (zh) * 2020-03-12 2020-07-28 华中科技大学 一种基于混合dram-nvm内存的动态哈希表操作方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RangeKV: An Efficient Key-Value Store Based on Hybrid DRAM-NVM-SSD Storage Structure;Ling Zhan;《IEEE Access》;20200818;第8卷;全文 *

Also Published As

Publication number Publication date
CN112732725A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
CN109213772B (zh) 数据存储方法及NVMe存储系统
US9672235B2 (en) Method and system for dynamically partitioning very large database indices on write-once tables
US10496283B2 (en) Adaptive prefix tree based order partitioned data storage system
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
US20140250155A1 (en) Metadata storage and management method for cluster file system
US9871727B2 (en) Routing lookup method and device and method for constructing B-tree structure
US7805427B1 (en) Integrated search engine devices that support multi-way search trees having multi-column nodes
CN112732725B (zh) 基于nvm混合内存的自适应前缀树构建方法及其系统、介质
CN105117415A (zh) 一种优化的ssd数据更新方法
US8086641B1 (en) Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same
CN113821171B (zh) 一种基于哈希表与lsm树的键值存储方法
US11221999B2 (en) Database key compression
US20220027349A1 (en) Efficient indexed data structures for persistent memory
CN110109927A (zh) 基于LSM树的Oracle数据库数据处理方法
KR101806394B1 (ko) 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법
CN114691041A (zh) 键值存储系统、垃圾回收方法
CN113392089A (zh) 一种数据库索引优化方法及可读存储介质
US7953721B1 (en) Integrated search engine devices that support database key dumping and methods of operating same
KR20180135390A (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법
CN114415966B (zh) 一种kv ssd存储引擎的构建方法
CN116204130A (zh) 一种键值存储系统和键值存储系统的管理方法
CN114996275A (zh) 一种基于多树转换机制的键值存储方法
US9824105B2 (en) Adaptive probabilistic indexing with skip lists
CN114398007B (zh) 一种基于LSM-tree的KV存储系统读性能的缓存优化方法
CN117420955A (zh) 一种利用B+Tree优化混合存储下LSM-Tree性能的方法

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