CN112732725B - 基于nvm混合内存的自适应前缀树构建方法及其***、介质 - Google Patents
基于nvm混合内存的自适应前缀树构建方法及其***、介质 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-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混合内存的自适应前缀树构建方法及其***、介质。
背景技术
非易失性存储器(英文: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中任一项所述的方法的步骤。
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)
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)
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)
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 |
-
2021
- 2021-01-22 CN CN202110088720.8A patent/CN112732725B/zh active Active
Patent Citations (4)
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)
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 |