CN113590612A - Dram-nvm混合索引结构的构建方法及操作方法 - Google Patents
Dram-nvm混合索引结构的构建方法及操作方法 Download PDFInfo
- Publication number
- CN113590612A CN113590612A CN202110789870.1A CN202110789870A CN113590612A CN 113590612 A CN113590612 A CN 113590612A CN 202110789870 A CN202110789870 A CN 202110789870A CN 113590612 A CN113590612 A CN 113590612A
- Authority
- CN
- China
- Prior art keywords
- logtree
- cachetree
- node
- metadata
- nvmtree
- 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.)
- Pending
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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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/242—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种DRAM‑NVM混合索引结构的构建方法及操作方法,所构建的索引结构包括索引层、中间层和数据层;索引层存储在DRAM中;中间层包括元数据节点,存储在DRAM中,且在NVM中存在备份;数据层包括LogTree,LogTree为树形结构,其个数与元数据节点的个数相同,与元数据节点一一对应;初始状态下,LogTree存储于NVM中,记为NvmTree;在读写过程中,将访问热度大于预设访问热度阈值的LogTree进行备份并缓存在DRAM中来创建CacheTree;此时,LogTree包括初始存储于NVM中的NvmTree、缓存在DRAM中的CacheTree和存储于NVM中的日志;日志用于存储对CacheTree进行写操作的记录;数据层中的LogTree用于存储用户写入的键值对中的目标关键字key和指向value的指针;本发明能够在保证读写性能的前提下,能够大大加快故障恢复的过程。
Description
技术领域
本发明属于信息存储技术领域,更具体地,涉及一种DRAM-NVM混合索引结构的构建方法及操作方法。
背景技术
近十多年以来,随着计算机与网络技术的持续发展,信息数据规模呈爆炸式增长。当前计算机系统中各种存储设备在性能、容量、持久性等方面差异较大,给数据的存储方式带来了巨大的影响。索引结构是现代数据库的核心构件,存储架构的改变和持久性内存的特性为优化索引结构带来了机遇和挑战,故研究一种索引结构具有重要意义。
新型非易失性内存(Non-Volatile Memory,NVM)因为其具有的可字节寻址、非易失、低功耗、较高存储密度等优势,以及接近DRAM的性能,已经成为构建下一代存储系统的重要存储器件。现有的索引结构有很多基于NVM或者NVM与DRAM的混合介质,如NovelLSM、Path Hash、NVTree、FPTree等。但现有的基于NVM或NVM与DRAM混合介质的索引结构,并不能兼顾高读写性能与快速的故障恢复。以FPTree为例,这是一种基于DRAM-NVM混合介质的B+树索引结构。它将叶子节点持久化在NVM中,而将中间节点置于DRAM上,在恢复时利用持久化的叶子节点重建DRAM中的中间节点。FPTree叶子节点内部数据无序排列,并对叶子节点内部的每个关键字都计算出一个1B的哈希值,作为指纹数据,存放在同一个cache line中。在查询时,通过扫描指纹数据来快速定位到关键字的位置。这种结构虽然能够降低cache的不命中率、提升查询性能,但是B+树中间节点在系统掉电或故障后会丢失,在系统恢复时需要重建中间节点,在数据量较大时恢复时间较长,影响了系统的可用性。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种DRAM-NVM混合索引结构的构建方法及操作方法,用以解决现有技术无法兼顾高读写性能与快速的故障恢复的技术问题。
第一方面,本发明提供了一种DRAM-NVM混合索引结构的构建方法,包括:构建索引层、中间层和数据层,得到DRAM-NVM混合索引结构;
索引层为树形结构,存储在DRAM中;中间层包括1个或多个元数据节点,存储在DRAM中,且在NVM中存在备份;且当元数据节点为多个时,各元数据节点前后连接形成链表结构;数据层包括日志持久化树LogTree;LogTree为树形结构,其个数与元数据节点的个数相同,与元数据节点一一对应;初始状态下,LogTree存储于NVM中,记为NvmTree;在读写过程中,若LogTree的访问热度大于预设访问热度阈值,则通过对LogTree进行备份并缓存在DRAM中来创建CacheTree;此时,LogTree包括初始存储于NVM中的NvmTree、缓存在DRAM中的CacheTree和存储于NVM中的日志;其中,日志用于存储对CacheTree进行写操作的记录;
索引层用于索引中间层的元数据节点;
中间层用于对数据层中的LogTree进行寻址,并记录数据层中各LogTree的访问热度;中间层中的元数据节点包括指向其所对应的LogTree中的CacheTree根节点指针、NvmTree的根节点指针和日志的指针,以及其所对应的LogTree的访问热度;
数据层中的LogTree用于存储用户写入的键值对中的目标关键字key和指向value的指针。
进一步优选地,预设访问热度阈值的设置方法包括:
预设用于缓存CacheTree的DRAM的最大容量为M,预设CacheTree的最大存储容量为S,获取数据层中各LogTree的访问热度最高的前M/S个访问热度,将前M/S个访问热度中的最小访问热度作为预设访问热度阈值。
进一步优选地,索引层为B+树;LogTree为B+树;当元数据节点为多个时,各元数据节点前后连接形成双向链表结构,以提高遍历性能。
第二方面,采用上述DRAM-NVM混合索引结构的构建方法所构建的索引结构的读写请求处理方法,包括:
当接收到写请求时,执行写操作:
S11、基于请求中的目标关键字key查询索引层,得到目标关键字key所对应的元数据节点指针,确定中间层的元数据节点,并累积元数据节点所对应的LogTree的访问热度;在NVM中为请求中的value分配持久化空间,并进行持久化,得到指向value的指针;
S12、判断元数据节点所对应的LogTree中的CacheTree是否处于CacheTree的创建或同步操作下,若是,则转至步骤S13;否则,转至步骤S14;
S13、将目标关键字key和指向value的指针写入到元数据节点所对应的LogTree中日志里,操作结束;
S14、将目标关键字key和指向value的指针插入到元数据节点所对应的LogTree中:判断元数据节点所对应的LogTree中是否存在CacheTree,若存在,则将目标关键字key和指向value的指针插入到CacheTree中,并将目标关键字key和指向value的指针写入到元数据节点所对应的LogTree中日志里;否则,将目标关键字key和指向value的指针插入到NvmTree中;
当接收到读请求时,执行读操作:
S21、基于请求中的目标关键字key查询索引层,得到目标关键字key所对应的元数据节点指针,确定中间层的元数据节点,并累积元数据节点所对应的LogTree的访问热度;
S22、判断元数据节点所对应的LogTree中的CacheTree是否处于CacheTree的创建或同步操作下,若是,则转至步骤S23;否则,转至步骤S24;
S23、在元数据节点所对应的LogTree中的日志中查询目标关键字key对应的操作记录,若能够查询到,则通过操作记录中的指向value的指针获取value值,操作结束;否则,转至步骤S24;
S24、判断元数据节点所对应的LogTree中是否存在CacheTree,若存在,则基于目标关键字key在CacheTree中进行查询,得到指向value的指针,并通过指向value的指针获取value值;否则,基于目标关键字key在NvmTree中进行查询,得到指向value的指针,并通过指向value的指针获取value值;
其中,CacheTree的同步操作包括:当日志大小大于预设日志大小时,更新CacheTree所在的LogTree中的NvmTree,使其与CacheTree相同。
进一步优选地,累积得到的LogTree的访问热度为:
HotDegreet+Δt=A*HotDegreet+OperateΔt
其中,HotDegreet+Δt为当前时刻t+Δt累积得到的访问热度;HotDegreet为上一时刻t累积得到的访问热度;Δt为当前时刻与上一时刻之间的时间差;A即为热度周期性衰减的比例系数;OperateΔt为Δt时间内LogTree的读写请求次数。
进一步优选地,当元数据节点所对应的LogTree为B+树时,上述写请求处理方法还包括:在步骤S12与步骤S14之间执行的步骤S15;
步骤S15包括:当LogTree根节点已满且LogTree的高度超过预设高度阈值时,对LogTree进行动态扩展;具体包括:
S151、判断LogTree中是否存在CacheTree,若不存在,则转至步骤S152;否则,转至步骤S153;
S152、对LogTree中的NvmTree进行动态扩展:将LogTree中的NvmTree的根节点分裂成两个新节点,记分裂前的LogTree为原LogTree;分裂位置m是NvmTree根节点关键字数量的一半向下取整后的结果;NvmTree根节点中前m个关键字所构成的新节点记为第一新节点,其余关键字所构成的新节点记为第二新节点;分裂关键字为NvmTree根节点中第m+1个关键字;在数据层创建与原LogTree结构相同的新LogTree,将第二新节点作为新LogTree中NvmTree的根节点;将原LogTree中的NvmTree的根节点替换为第一新节点,并对应修改原LogTree所对应的元数据节点中指针信息;在中间层中创建新的元数据节点,将新的元数据节点插入到原LogTree所对应的元数据节点与其下一个元数据节点之间,与新的LogTree相对应;将分裂关键字和指向新的元数据节点的指针组成的键值对插入到索引层的树结构中,形成索引层新节点;其中,索引层新节点的左指针指向原LogTree所对应的元数据节点,右指针指向新的LogTree所对应的新的元数据节点;
S153、将LogTree中的CacheTree的脏数据同步回LogTree中的NvmTree中,且将同步操作过程中的对LogTree的写操作请求在LogTree的日志中;按照步骤S152所述的方法分别对LogTree中的CacheTree和NvmTree进行进行动态扩展,记动态扩展前的LogTree为原LogTree;将原LogTree的日志中的新增记录分别复制到动态扩展完成后的两个LogTree中。
进一步优选地,动态扩展后的两个LogTree的访问热度均为HotDegree,HotDegree=ηHotDegree0;其中,HotDegree0为动态扩展前LogTree的访问热度;η为比例系数,0<η<1。
进一步优选地,对于LogTree中的NvmTree执行大于8B的写操作采用写时复制技术,以保证数据一致性。
第三方面,采用上述DRAM-NVM混合索引结构的构建方法所构建的索引结构的故障恢复方法,使得当索引结构所在的系统掉电或故障时,进行故障恢复,以保证能够提供正常和服务,包括以下步骤:
1)、中间层的恢复:遍历备份在NVM的中间层的元数据节点,判断相邻元数据节点所对应的LogTree的NvmTree根节点是否存在数据重叠,若存在数据重叠,则将存在数据重叠的NvmTree根节点进行分裂,并纠正其所对应的元数据节点中的指针信息,保证中间层恢复到一致性状态,然后重建中间层在DRAM上的元数据节点;
2)、LogTree的恢复:若掉电或故障未发生在CacheTree的同步或淘汰过程中,通过将LogTree中的NvmTree备份到DRAM中来构建CacheTree,然后通过扫描LogTree中的日志,将日志空间起始地址到当前分配地址的所有操作按序回放到CacheTree中,使其恢复到数据丢失前的状态;若掉电或故障发生在CacheTree的同步或淘汰过程中,LogTree中的NvmTree会处于不一致状态,利用NvmTree一致性的叶子节点重建CacheTree,然后通过扫描LogTree中的日志,将日志空间起始地址到当前分配地址的所有操作按序回放到CacheTree中;其中,CacheTree的同步操作包括:当日志大小大于预设日志大小时,更新CacheTree所在的LogTree中的NvmTree,使其与CacheTree相同;CacheTree的淘汰操作包括:当CacheTree所在的LogTree的访问热度小于预设访问热度阈值时,执行CacheTree的同步操作后,释放CacheTree中的所有节点,并删除CacheTree所在的LogTree的日志,回收日志空间;
3)、索引层的恢复:在DRAM中重新创建一个树结构,然后遍历中间层的元数据节点,将指向元数据节点的指针以及元数据节点对应的LogTree的最小关键字组成的键值对依次插入到上述树结构中。
第四方面,本发明还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现如上所述的任一种DRAM-NVM混合索引结构的构建方法、如上所述的采用DRAM-NVM混合索引结构的构建方法所构建的索引结构的读写请求处理方法、和/或如上所述的采用DRAM-NVM混合索引结构的构建方法所构建的索引结构的故障恢复方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
1、本发明提供了一种DRAM-NVM混合索引结构的构建方法,包括索引层、中间层和数据层,索引层和中间层都放在DRAM中,中间层用于衔接索引层与数据层,同时筛选数据层中的热点数据,数据层由大量较小的日志持久化树LogTree组成,将LogTree放在NVM中,同时将热度较高的LogTree缓存到DRAM,大大提高了索引结构的读写性能;与此同时,本发明采用日志方式对CacheTree写操作的记录进行缓存,当元数据节点所对应的LogTree在DRAM中有CacheTree时,可以直接将写请求中数据的存储CacheTree,同时保存在日志中,并且在读请求时直接访问CacheTree得到对应的数据,大大提高了读写性能;另外,由于CacheTree在NVM中有备份,并且其修改都以日志形式记录下来,中间层在NVM上也有备份,减少了扩展过程中对前台服务的阻塞,加快了故障恢复过程;故本发明能够在保证读写性能的前提下,能够大大加快故障恢复的过程。
2、本发明所提供的DRAM-NVM混合索引结构的构建方法,基于键值分离的思想进行设计,在索引结构中仅保存键值对的key以及value的指针,真实value由NVM空间管理模块进行储存与管理,可以充分利用NVM字节寻址以及随机性能与顺序性能相差不大的特点,对value进行随机访问。在保证数据有序时,仅需对索引结构中的key以及value指针排序,而无需对value本身进行数据移动,从而减少了昂贵的重排开销。
3、本发明所提供的DRAM-NVM混合索引结构的构建方法,通过日志对CacheTree进行读操作和写操作的记录进行缓存,保证了缓存到DRAM中的LogTree写请求数据的可靠性。
4、本发明所提供的DRAM-NVM混合索引结构的构建方法,能够充分发挥NVM低延迟、非易失、字节寻址的优势,保证了数据的高效访问、快速恢复和持久化。
5、本发明提供了一种上述DRAM-NVM混合索引结构的构建方法所构建的索引结构的读写请求处理方法,当元数据节点所对应的LogTree在DRAM中存在CacheTree时,可以直接将写请求中数据的存储CacheTree,同时保存在日志,并且在读请求时直接访问CacheTree得到对应的数据,大大提高了读写性能。
6、本发明提供了一种上述DRAM-NVM混合索引结构的构建方法所构建的索引结构的掉电或故障恢复方法,CacheTree在NVM中有备份,并且其修改都以日志形式记录下来,中间层在NVM上也有备份,由于中间层实际相当于索引层树的叶子节点,索引层相当于树的中间节点,恢复完叶子节点后再恢复中间节点,故障恢复过程会很快。同时注意到经过中间层故障恢复之后,LogTree之间无关键字重叠,不同LogTree内部CacheTree的恢复可以并发执行,因此LogTree的恢复可以采用多线程任务队列的方式进行,系统故障恢复的时间会被进一步减少。
附图说明
图1为本发明实施例1所提供的DRAM-NVM混合索引结构示意图;
图2为本发明实施例1所述提供的索引层的树形结构;
图3为本发明实施例1所提供的中间层中的元数据节点的结构示意图;
图4为本发明实施例1所提供的CacheTree节点的结构示意图;
图5为本发明实施例1所提供的日志结构示意图;
图6为本发明实施例2所提供的读写请求处理方法流程示意图;
图7为本发明实施例2所提供的CacheTree的同步过程示意图;
图8为本发明实施例2所提供的LogTree动态扩展过程示意图;
图9为本发明实施例2所提供的NvmTree数据插入一致性示意图;
图10为本发明实施例2所提供的同步过程一致性示意图;
图11为本发明实施例3所提供的元数据节点插入一致性示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1、
一种DRAM-NVM混合索引结构的构建方法,包括:构建索引层、中间层和数据层,得到DRAM-NVM混合索引结构;具体地,如图1所示,其中,索引层为树形结构,优选为B+树,存储在DRAM中;中间层包括1个或多个元数据节点,存储在DRAM中,且在NVM中存在备份;且当元数据节点为多个时,各元数据节点前后连接形成链表结构,优选为双向链表结构;数据层包括日志持久化树LogTree;LogTree为树形结构,优选为B+树,其个数与元数据节点的个数相同,与元数据节点一一对应;初始状态下,LogTree存储于NVM中,记为NvmTree;在读写过程中,若LogTree的访问热度大于预设访问热度阈值,则通过对LogTree进行备份并缓存在DRAM中来创建CacheTree;此时,LogTree包括初始存储于NVM中的NvmTree、缓存在DRAM中的CacheTree和存储于NVM中的日志;其中,日志用于存储对CacheTree进行写操作的记录。
索引层用于索引中间层的元数据节点,在系统掉电后数据会丢失,但可以通过持久化的中间层以及数据层进行恢复。由于索引层仅用于查找中间层的元数据节点,不保存键值数据,因此仅由中间节点组成,且最下层中间节点指向了中间层中的元数据节点。优选地,索引层的树形结构为B+树,可以高效的查询到对应的数据;具体地,如图2所示;以查询关键字35所在元数据节点为例,从根节点开始搜索,经过与根节点关键字50的比较,定位到下一层左边的中间节点,再与该中间节点中的关键字20和30进行比较,定位到关键字35对应的元数据节点。
中间层用于对数据层中的LogTree进行寻址,并记录数据层中各LogTree的访问热度;具体地,如图3所示,中间层中的元数据节点包括指向其所对应的LogTree中的CacheTree根节点指针、NvmTree的根节点指针和日志的指针,以及其所对应的LogTree的访问热度数据。每次访问元数据节点时,都会为对应的LogTree累计热度数据,用于标记LogTree的冷热程度,且为了减少对NVM节点的写开销,热度数据无需每次变化后都进行同步,周期性同步一次即可。除此之外,元数据节点中还包含了组成双向链表所需的前驱节点指针、后继节点指针等信息。
数据层中的LogTree用于存储用户写入的键值对中的目标关键字key和指向value的指针。访问热度大于预设访问热度阈值的LogTree分为NVM中的NvmTree,以及在DRAM中的缓存CacheTree;其中,CacheTree中缓存了LogTree的热度数据。如图4所示,CacheTree的节点分为头部元数据以及记录数据两部分,并通过当前层数来区分是中间节点还是叶子节点。头部元数据保存了当前节点的基本信息,包括最左指针、记录数、层数、节点状态和NVM地址;其中,记录数表示当前节点拥有的记录条数;叶子节点的层数标记为0,并且从叶子节点往上,中间节点的层数依次递增,根节点的层数最高;中间节点的最左指针指向了该节点下一层的第一个节点,而叶子节点的最左指针充当了兄弟节点的作用,将叶子节点串联起来,便于范围查询;节点状态则用于标记CacheTree节点的修改状态,未修改则为干净节点,修改过则为脏节点;NVM地址则记录了CacheTree节点对应的NvmTree节点在NVM中的偏移位置,便于将脏节点数据写回到NVM。NvmTree结构和CacheTree结构一致,这里不做赘述。
除此之外,数据层中还包括日志结构,用于保证LogTree在DRAM中的缓存的数据可靠性。如图5所示,日志结构主要包含了起始地址、当前分配地址以及终止地址,其中起始地址和终止地址限定了日志空间;当前分配地址为日志空间中最后一条有效记录的尾地址,用于向日志空间追加写日志记录。每个LogTree内部的日志都对应了一个用于保存日志记录的日志空间,并且日志空间由一个大的日志池进行分配与回收。日志记录中仅需保存操作类型、key以及value指针即可,无需记录value本身。这样能够将单个日志记录的大小控制在一个较小的水平,从而减少了写日志的开销。
综上,可以将所构建的索引结构记为树形索引结构HBTree,其中,索引层、中间层以及数据层的CacheTree位于DRAM中,数据层的NvmTree和日志位于NVM中,中间层在NVM中也有备份。
需要说明的是,为了避免占用过多DRAM资源,在初始化时,需要设置用于缓存CacheTree的DRAM的最大容量M,以及CacheTree的最大存储容量S。这样便可以粗略计算出约M/S个LogTree能够构建CacheTree。由于LogTree的访问每次都要经过与其对应的元数据节点,因此LogTree的热度数据由元数据节点进行统计。在所有LogTree中,热度最高的M/S个LogTree便作为较热的LogTree,需要构建CacheTree,其余的作为较冷的LogTree,不构建CacheTree,直接由NvmTree提供服务。具体地,预设访问热度阈值的设置方法包括:预设用于缓存CacheTree的DRAM的最大容量为M,预设CacheTree的最大存储容量为S,获取数据层中各LogTree的访问热度最高的前M/S个访问热度,将前M/S个访问热度中的最小访问热度作为预设访问热度阈值。本实施例中,M取值为500MB,S取值为0.5MB。
实施例2、
采用实施例1所述DRAM-NVM混合索引结构的构建方法所构建的索引结构的读写请求处理方法,以插入请求和查询请求为例,如图6所示,包括:
当接收到插入请求时,执行插入操作:
S11、基于请求中的目标关键字key查询索引层,得到目标关键字key所对应的元数据节点指针,确定中间层的元数据节点,并累积元数据节点所对应的LogTree的访问热度;在NVM中为请求中的value分配持久化空间,并进行持久化,得到指向value的指针;
S12、判断元数据节点所对应的LogTree中的CacheTree是否处于CacheTree的创建或同步操作下,若是,则转至步骤S13;否则,转至步骤S14;
S13、将目标关键字key和指向value的指针写入到元数据节点所对应的LogTree中日志里,操作结束;
S14、将目标关键字key和指向value的指针插入到元数据节点所对应的LogTree中:判断元数据节点所对应的LogTree中是否存在CacheTree,若存在,则将目标关键字key和指向value的指针插入到CacheTree中,并将目标关键字key和指向value的指针写入到元数据节点所对应的LogTree中日志里;否则,将目标关键字key和指向value的指针插入到NvmTree中;
当接收到查询请求时,执行查询操作:
S21、基于请求中的目标关键字key查询索引层,得到目标关键字key所对应的元数据节点指针,确定中间层的元数据节点,并累积元数据节点所对应的LogTree的访问热度;
S22、判断元数据节点所对应的LogTree中的CacheTree是否处于CacheTree的创建或同步操作下,若是,则转至步骤S23;否则,转至步骤S24;
S23、在元数据节点所对应的LogTree中的日志中查询目标关键字key对应的操作记录,若能够查询到,则通过操作记录中的指向value的指针获取value值,操作结束;否则,转至步骤S24;
S24、判断元数据节点所对应的LogTree中是否存在CacheTree,若存在,则基于目标关键字key在CacheTree中进行查询,得到指向value的指针,并通过指向value的指针获取value值;否则,基于目标关键字key在NvmTree中进行查询,得到指向value的指针,并通过指向value的指针获取value值。
其中,CacheTree的同步操作包括:当日志大小大于预设日志大小(本实施例取值为5MB)时,更新CacheTree所在的LogTree中的NvmTree,使其与CacheTree相同,具体为:从CacheTree的根节点开始遍历,执行以下操作:
若CacheTree的当前节点为脏数据节点且当前节点在NvmTree的对应位置处有对应节点,则将当前节点中的数据拷贝到NvmTree中的对应节点上;
若CacheTree的当前节点为脏数据节点且当前节点在NvmTree的对应位置处中无对应节点,则在NvmTree的对应位置处创建新节点,并将当前节点中的数据拷贝到NvmTree中的新节点上;
重复上述过程,直至CacheTree遍历完毕。
具体地,本实施例所提供的CacheTree同步操作的一个实例如图7所示;CacheTree在进行同步时,从根节点开始遍历,发现节点2'和节点5'为脏节点,且在NvmTree中有对应的节点,只需拷贝节点数据(不包括记录数据中的指针)到NvmTree对应节点中即可;节点8'为脏节点,并且在NvmTree中无对应节点,说明是新分裂生成的CacheTree节点,同步过程中需要在NVM中创建一个新的节点,并修改其父节点2中对应的指针。
为了避免同步过程中产生阻塞,影响系统性能,同步过程同样采用后台线程完成,并利用日志继续为前台提供服务。为了将同步开始前的日志记录与之后的日志记录进行区分,以便于同步完成后回收日志,同步开始前会创建一个新的日志,用于记录之后的写操作。对于写请求,将操作记录写入新日志后即可返回。对于读请求,则需从当前分配地址位置向前查询日志记录,直到起始地址位置,如果未找到目标关键字,则去CacheTree中进行查询。在CacheTree同步完成后,会将旧日志进行回收,并将新日志中的全部记录操作回放到CacheTree中,该回放过程同样会短暂阻塞对该LogTree的读写请求。
需要说明的是,在一种可选实施例下,可以通过LogTree的历史访问信息来判断其冷热程度,进而累积得到LogTree的访问热度。其核心思想是:若某LogTree的历史访问频次较高,那么未来一段时间内该LogTree的访问频次还可能是较高的,应作为热点LogTree。
在对LogTree的热度数据进行累计时,考虑到近期访问的频次信息应该有更高的权重,因此会按照某个时间周期对元数据节点中记录的热度数据进行比例衰减;具体地,累积得到的LogTree的访问热度为:
HotDegreet+Δt=A*HotDegreet+OperateΔt
其中,t表示上一个时间周期的时刻,Δt表示距t时刻经过的时间(小于一个时间周期);HotDegreet表示t时刻LogTree的热度;HotDegreet+Δt表示t+Δt时刻LogTree的热度;A为热度周期性衰减的比例系数,本实施例中取值为0.5;OperateΔt表示Δt时间内LogTree的读写请求次数。
进一步地,当插入数据过多,LogTree根节点已满且LogTree高度超过阈值时,需要进行动态扩展。具体地,在一个可选实施方式中,当元数据节点所对应的LogTree为B+树时,上述写请求处理方法还包括:在步骤S12与步骤S14之间执行的步骤S15;
步骤S15包括:当LogTree根节点已满且LogTree的高度超过预设高度阈值(本实施例中取值为3)时,对LogTree进行动态扩展;具体包括以下步骤:
S151、判断LogTree中是否存在CacheTree,若不存在,则转至步骤S152;否则,转至步骤S153;
S152、对LogTree中的NvmTree进行动态扩展:将LogTree中的NvmTree的根节点分裂成两个新节点,记分裂前的LogTree为原LogTree;分裂位置m是NvmTree根节点关键字数量的一半向下取整后的结果;NvmTree根节点中前m个关键字所构成的新节点记为第一新节点,其余关键字所构成的新节点记为第二新节点;分裂关键字为NvmTree根节点中第m+1个关键字;在数据层创建与原LogTree结构相同的新LogTree,将第二新节点作为新LogTree中NvmTree的根节点;将原LogTree中的NvmTree的根节点替换为第一新节点,并对应修改原LogTree所对应的元数据节点中指针信息;在中间层中创建新的元数据节点,将新的元数据节点插入到原LogTree所对应的元数据节点与其下一个元数据节点之间,与新的LogTree相对应;将分裂关键字和指向新的元数据节点的指针组成的键值对依次插入到索引层的树结构中,形成索引层新节点;其中,索引层新节点的左指针指向原LogTree所对应的元数据节点,右指针指向新的LogTree所对应的新的元数据节点;
S153、将LogTree中的CacheTree的脏数据同步回LogTree中的NvmTree中,且将同步操作过程中的对LogTree的写操作请求在LogTree的日志中;按照步骤S152所述的方法分别对LogTree中的CacheTree和NvmTree进行进行动态扩展,记动态扩展前的LogTree为原LogTree;将原LogTree的日志中的新增记录分别复制到动态扩展完成后的两个LogTree中。
具体地,在一个可选实施方式下,所提供的动态扩展的过程如图8所示;其中LogTreeA没有构建CacheTree,直接由NvmTree进行操作,LogTree A内部的NvmTree达到了高度H,且根节点数据已满,需要进行动态扩展以避免高度进一步增加。在进行动态扩展时,首先对其NvmTree的根节点进行分裂,生成两个新节点,原根节点中关键字为56的记录对应的指针作为新节点2的最左指针,而关键字56则作为分裂关键字,需要添加到索引层的父节点中;然后以新节点2作为NvmTree根节点生成新的LogTree B,并将LogTree B的元数据节点加入到元数据节点链表中;接下来用新节点1替换LogTreeA的NvmTree根节点形成LogTreeA',并回收原根节点;最后修改其父节点的索引数据。
需要说明的是,在LogTree进行动态扩展时,会得到两个大小相近的LogTree,这两个新的LogTree的热度继承了进行动态扩展前LogTree的热度信息,并乘以了一个比例系数进行稀释。由于分裂得到的这两个LogTree的大小均为原LogTree的一半,所以本实施例中将该比例系数默认设置为0.5。
本发明所提供的基于非易失性内存的键值存储结构,能够保证数据的持久性以及正确性。
由于NVM上的写操作仅支持8B粒度的原子写,因此在NVM上所有涉及超过8B写的地方均需要考虑数据一致性问题。具体地,如图9所示,当叶子节点插入数据时,将该节点的内容拷贝到一个新的节点中,然后对新的节点进行插入操作,最后修改父节点中指向原节点的指针,使其指向新生成的节点。由于指针的大小为8B,刚好满足NVM原子写操作的粒度,因此对父节点内部指针的修改可以进行就地更新,不会影响数据一致性。当叶子节点进行分裂时,需要向父节点中插入一条索引记录,因此会导致父节点也会进行写时复制操作创建新的节点,并在新的父节点中进行插入操作,最后修改祖父节点指向父节点的指针即可。总的来说,对于节点内部的数据修改,如果仅为8B大小的修改写,则可以进行就地更新,超过8B则需要通过写时复制的方式进行。
在CacheTree进行同步或淘汰操作时,需要将脏节点同步回NvmTree节点中,由于NvmTree节点超过8字节,若进行覆盖写,在系统掉电时可能会出现部分写现象,从而导致部分数据丢失。因此在同步与淘汰过程中,对叶子节点的同步更新应用了写时复制,而不是覆盖写。如图10所示,当CacheTree的叶子节点需要同步回NvmTree中时,将该CacheTree叶子节点读取到NVM中生成一个新的NvmTree节点,然后更新父节点指针,而不是直接覆盖写目标NvmTree节点,原子地修改父节点指针保证叶子节点同步的原子性。此外,在同步过程中发生系统掉电,可能只有一部分脏节点被同步回NvmTree中,还存在一部分脏节点没有进行同步,导致NvmTree结构出现错误。由于保证了叶子节点的原子写,即使出现了系统掉电,NvmTree的叶子节点仍然处于一致性状态,可以结合日志恢复出整个CacheTree结构,重新进行同步过程即可。不过在日志进行回放时,需要注意有些叶子节点已经同步完成,需要避免数据的重复插入。
实施例3、
在系统掉电或故障时,DRAM上的数据会丢失,并且NVM上的结构也可能出现不一致状态,因此当索引结构所在的系统掉电或故障时,需要进行故障恢复,以保证能够提供正常和服务。具体地,采用实施例1所述DRAM-NVM混合索引结构的构建方法所构建的索引结构的掉电或故障恢复方法,包括以下步骤:
1)、中间层的恢复:在进行恢复时,首先遍历备份在NVM的中间层的元数据节点,判断相邻元数据节点所对应的LogTree的NvmTree根节点是否存在数据重叠,若存在数据重叠,则将存在数据重叠的NvmTree根节点进行分裂,并纠正其所对应的元数据节点前驱指针指向错误节点的问题,以保证中间层恢复到一致性状态;最后,重建中间层在DRAM上的元数据节点链表;
需要说明的是,系统掉电时,可能会出现新产生的元数据节点已经加入到了元数据节点链表中,但原NvmTree的根节点没有替换的情况。解决方法是在系统掉电进行恢复操作时,首先遍历一次元数据节点链表,查看相邻LogTree的NvmTree根节点是否存在数据重叠,存在数据重叠则说明动态扩展过程未完成,需将该数据重叠的根节点继续进行分裂操作。此外,元数据节点链表也需要考虑一致性问题。如图11所示,元数据节点插入双向链表的过程中,如果节点a将其后继指针指向了节点c后出现了系统掉电,此时节点b还没有修改其前驱指针,从而导致数据不一致。在系统掉电进行恢复时,在遍历元数据节点链表的过程中,如果发现后继节点的前驱指针没有指向当前节点,则进行纠正,使其重新指向当前节点即可。
2)、LogTree的恢复:为了保证故障恢复后,系统能够提供良好的读写性能,所以对热点LogTree中的CacheTree也进行了重建。正常情况下(即掉电或故障未发生在CacheTree的同步或淘汰过程中),通过将LogTree中的NvmTree备份到DRAM中来构建CacheTree,然后通过扫描日志,将日志空间起始地址到当前分配地址的所有操作按序回放到CacheTree中,使其恢复到数据丢失前的状态;如果在CacheTree的同步、淘汰过程中出现系统掉电,那么NvmTree会处于不一致状态,此时利用NvmTree一致性的叶子节点重建CacheTree,然后通过扫描LogTree中的日志,将日志空间起始地址到当前分配地址的所有操作按序回放到CacheTree中;
其中,CacheTree的同步操作包括:当日志大小大于预设日志大小时,更新CacheTree所在的LogTree中的NvmTree,使其与CacheTree相同;CacheTree的淘汰操作包括:当CacheTree所在的LogTree的访问热度小于预设访问热度阈值时,执行CacheTree的同步操作后,释放CacheTree中的所有节点,并删除CacheTree所在的LogTree的日志,回收日志空间;
3)、索引层的恢复:以索引层结构为B+树为例进行说明,索引层B+树全部位于DRAM中,用于加速数据查找,在系统掉电后,数据会全部丢失,需要进行重建。在进行恢复时,重新创建一个新的索引层B+树,然后遍历元数据节点链表,将每个元数据节点的指针以及该元数据节点对应的LogTree最小关键字组成的键值对依次插入到该B+树中即可。
由于CacheTree在NVM中有备份,并且其修改都以日志形式记录下来,中间层在NVM上也有备份,故障恢复过程会很快。同时注意到经过中间层故障恢复之后,LogTree之间无关键字重叠,不同LogTree内部CacheTree的恢复可以并发执行,因此LogTree的恢复可以采用多线程任务队列的方式进行,系统故障恢复的时间会被进一步减少。
实施例4、
一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现实施例1所述的DRAM-NVM混合索引结构的构建方法、实施例2所述的采用DRAM-NVM混合索引结构的构建方法所构建的索引结构的读写请求处理方法、和/或实施例3所述的采用DRAM-NVM混合索引结构的构建方法所构建的索引结构的故障恢复方法。
相关技术特征同实施例1、实施例2和实施例3,这里不做赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种DRAM-NVM混合索引结构的构建方法,其特征在于,包括:构建索引层、中间层和数据层,得到DRAM-NVM混合索引结构;
所述索引层为树形结构,存储在DRAM中;中间层包括1个或多个元数据节点,存储在DRAM中,且在NVM中存在备份;当元数据节点为多个时,各元数据节点前后连接形成链表结构;所述数据层包括日志持久化树LogTree;LogTree为树形结构,其个数与元数据节点的个数相同,与元数据节点一一对应;初始状态下,LogTree存储于NVM中,记为NvmTree;在读写过程中,若LogTree的访问热度大于预设访问热度阈值,则通过对LogTree进行备份并缓存在DRAM中来创建CacheTree;此时,LogTree包括初始存储于NVM中的NvmTree、缓存在DRAM中的CacheTree和存储于NVM中的日志;其中,所述日志用于存储对CacheTree进行写操作的记录;
所述索引层用于索引中间层的元数据节点;
所述中间层用于对数据层中的LogTree进行寻址,并记录数据层中各LogTree的访问热度;所述中间层中的元数据节点包括指向其所对应的LogTree中的CacheTree根节点指针、NvmTree的根节点指针和日志的指针,以及其所对应的LogTree的访问热度;
所述数据层中的LogTree用于存储用户写入的键值对中的目标关键字key和指向value的指针。
2.根据权利要求1所述的索引结构的构建方法,其特征在于,所述预设访问热度阈值的设置方法包括:
预设用于缓存CacheTree的DRAM的最大容量为M,预设CacheTree的最大存储容量为S,获取所述数据层中各LogTree的访问热度最高的前M/S个访问热度,将前M/S个访问热度中的最小访问热度作为所述预设访问热度阈值。
3.根据权利要求1或2所述的索引结构的构建方法,其特征在于,所述索引层为B+树;所述LogTree为B+树;当元数据节点为多个时,各元数据节点前后连接形成双向链表结构。
4.采用权利要求1-3任意一项所述的DRAM-NVM混合索引结构的构建方法所构建的索引结构的读写请求处理方法,其特征在于,包括:
当接收到写请求时,执行写操作:
S11、基于请求中的目标关键字key查询索引层,得到所述目标关键字key所对应的元数据节点指针,确定中间层的元数据节点,并累积所述元数据节点所对应的LogTree的访问热度;在NVM中为请求中的value分配持久化空间,并进行持久化,得到指向value的指针;
S12、判断所述元数据节点所对应的LogTree中的CacheTree是否处于CacheTree的创建或同步操作下,若是,则转至步骤S13;否则,转至步骤S14;
S13、将所述目标关键字key和所述指向value的指针写入到所述元数据节点所对应的LogTree中日志里,操作结束;
S14、将所述目标关键字key和所述指向value的指针插入到所述元数据节点所对应的LogTree中:判断所述元数据节点所对应的LogTree中是否存在CacheTree,若存在,则将所述目标关键字key和所述指向value的指针插入到CacheTree中,并将所述目标关键字key和所述指向value的指针写入到所述元数据节点所对应的LogTree中日志里;否则,将所述目标关键字key和所述指向value的指针插入到NvmTree中;
当接收到读请求时,执行读操作:
S21、基于请求中的目标关键字key查询索引层,得到所述目标关键字key所对应的元数据节点指针,确定中间层的元数据节点,并累积所述元数据节点所对应的LogTree的访问热度;
S22、判断所述元数据节点所对应的LogTree中的CacheTree是否处于CacheTree的创建或同步操作下,若是,则转至步骤S23;否则,转至步骤S24;
S23、在所述元数据节点所对应的LogTree中的日志中查询所述目标关键字key对应的操作记录,若能够查询到,则通过所述操作记录中的指向value的指针获取value值,操作结束;否则,转至步骤S24;
S24、判断所述元数据节点所对应的LogTree中是否存在CacheTree,若存在,则基于所述目标关键字key在CacheTree中进行查询,得到指向value的指针,并通过所述指向value的指针获取value值;否则,基于所述目标关键字key在NvmTree中进行查询,得到指向value的指针,并通过所述指向value的指针获取value值;
其中,CacheTree的同步操作包括:当日志大小大于预设日志大小时,更新CacheTree所在的LogTree中的NvmTree,使其与CacheTree相同。
5.根据权利要求4所述的读写请求处理方法,其特征在于,累积得到的LogTree的访问热度为:
HotDegreet+Δt=A*HotDegreet+OperateΔt
其中,HotDegreet+Δt为当前时刻t+Δt累积得到的访问热度;HotDegreet为上一时刻t累积得到的访问热度;Δt为当前时刻与上一时刻之间的时间差;A即为热度周期性衰减的比例系数;OperateΔt为Δt时间内LogTree的读写请求次数。
6.根据权利要求4所述的读写请求处理方法,其特征在于,当所述元数据节点所对应的LogTree为B+树时,所述写请求处理方法还包括:在步骤S12与步骤S14之间执行的步骤S15;
所述步骤S15包括:当LogTree根节点已满且LogTree的高度超过预设高度阈值时,对LogTree进行动态扩展;具体包括:
S151、判断LogTree中是否存在CacheTree,若不存在,则转至步骤S152;否则,转至步骤S153;
S152、对LogTree中的NvmTree进行动态扩展:将LogTree中的NvmTree的根节点分裂成两个新节点,记分裂前的LogTree为原LogTree;分裂位置m是NvmTree根节点关键字数量的一半向下取整后的结果;NvmTree根节点中前m个关键字所构成的新节点记为第一新节点,其余关键字所构成的新节点记为第二新节点;分裂关键字为NvmTree根节点中第m+1个关键字;在数据层创建与原LogTree结构相同的新LogTree,将所述第二新节点作为新LogTree中NvmTree的根节点;将所述原LogTree中的NvmTree的根节点替换为所述第一新节点,并对应修改所述原LogTree所对应的元数据节点中指针信息;在中间层中创建新的元数据节点,将所述新的元数据节点插入到所述原LogTree所对应的元数据节点与其下一个元数据节点之间,与新的LogTree相对应;将所述分裂关键字和指向所述新的元数据节点的指针组成的键值对插入到索引层的树结构中,形成索引层新节点;其中,所述索引层新节点的左指针指向所述原LogTree所对应的元数据节点,右指针指向新的LogTree所对应的所述新的元数据节点;
S153、将LogTree中的CacheTree的脏数据同步回LogTree中的NvmTree中,且将同步操作过程中的对LogTree的写操作请求在LogTree的日志中;按照步骤S152所述的方法分别对LogTree中的CacheTree和NvmTree进行进行动态扩展,记动态扩展前的LogTree为原LogTree;将原LogTree的日志中的新增记录分别复制到动态扩展完成后的两个LogTree中。
7.根据权利要求6所述的读写请求处理方法,其特征在于,动态扩展后的两个LogTree的访问热度均为HotDegree,HotDegree=ηHotDegree0;其中,HotDegree0为动态扩展前LogTree的访问热度;η为比例系数,0<η<1。
8.根据权利要求4-7任意一项所述的读写请求处理方法,其特征在于,对于LogTree中的NvmTree执行大于8B的写操作采用写时复制技术,以保证数据一致性。
9.采用权利要求1-3任意一项所述的DRAM-NVM混合索引结构的构建方法所构建的索引结构的掉电或故障恢复方法,其特征在于,包括以下步骤:
1)、中间层的恢复:遍历备份在NVM的中间层的元数据节点,判断相邻元数据节点所对应的LogTree的NvmTree根节点是否存在数据重叠,若存在数据重叠,则将存在数据重叠的NvmTree根节点进行分裂,并纠正其所对应的元数据节点中的指针信息,保证中间层恢复到一致性状态,然后重建中间层在DRAM上的元数据节点;
2)、LogTree的恢复:若掉电或故障未发生在CacheTree的同步或淘汰过程中,通过将LogTree中的NvmTree备份到DRAM中来构建CacheTree,然后通过扫描LogTree中的日志,将日志空间起始地址到当前分配地址的所有操作按序回放到CacheTree中,使其恢复到数据丢失前的状态;若掉电或故障发生在CacheTree的同步或淘汰过程中,LogTree中的NvmTree会处于不一致状态,利用NvmTree一致性的叶子节点重建CacheTree,然后通过扫描LogTree中的日志,将日志空间起始地址到当前分配地址的所有操作按序回放到CacheTree中;其中,CacheTree的同步操作包括:当日志大小大于预设日志大小时,更新CacheTree所在的LogTree中的NvmTree,使其与CacheTree相同;CacheTree的淘汰操作包括:当CacheTree所在的LogTree的访问热度小于预设访问热度阈值时,执行CacheTree的同步操作后,释放CacheTree中的所有节点,并删除CacheTree所在的LogTree的日志,回收日志空间;
3)、索引层的恢复:在DRAM中重新创建一个树结构,然后遍历中间层的元数据节点,将指向元数据节点的指针以及元数据节点对应的LogTree的最小关键字组成的键值对依次插入到所述树结构中。
10.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现权利要求1-3任意一项所述的DRAM-NVM混合索引结构的构建方法、权利要求4-8任意一项所述的读写请求处理方法、和/或权利要求9所述的索引结构的掉电或故障恢复方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110789870.1A CN113590612A (zh) | 2021-07-13 | 2021-07-13 | Dram-nvm混合索引结构的构建方法及操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110789870.1A CN113590612A (zh) | 2021-07-13 | 2021-07-13 | Dram-nvm混合索引结构的构建方法及操作方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113590612A true CN113590612A (zh) | 2021-11-02 |
Family
ID=78247558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110789870.1A Pending CN113590612A (zh) | 2021-07-13 | 2021-07-13 | Dram-nvm混合索引结构的构建方法及操作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590612A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114610190A (zh) * | 2022-03-14 | 2022-06-10 | 富途网络科技(深圳)有限公司 | 界面编辑方法、装置、电子设备和可读介质 |
CN115017128A (zh) * | 2022-05-26 | 2022-09-06 | 上海介方信息技术有限公司 | 基于corba中间件的轻量级日志服务设计方法及系统 |
CN115757438A (zh) * | 2023-01-06 | 2023-03-07 | 本原数据(北京)信息技术有限公司 | 数据库的索引节点处理方法和装置、计算机设备及介质 |
TWI831564B (zh) * | 2022-11-09 | 2024-02-01 | 晶心科技股份有限公司 | 可配置的記憶體系統及其記憶體管理方法 |
CN114610190B (zh) * | 2022-03-14 | 2024-05-31 | 富途网络科技(深圳)有限公司 | 界面编辑方法、装置、电子设备和可读介质 |
-
2021
- 2021-07-13 CN CN202110789870.1A patent/CN113590612A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114610190A (zh) * | 2022-03-14 | 2022-06-10 | 富途网络科技(深圳)有限公司 | 界面编辑方法、装置、电子设备和可读介质 |
CN114610190B (zh) * | 2022-03-14 | 2024-05-31 | 富途网络科技(深圳)有限公司 | 界面编辑方法、装置、电子设备和可读介质 |
CN115017128A (zh) * | 2022-05-26 | 2022-09-06 | 上海介方信息技术有限公司 | 基于corba中间件的轻量级日志服务设计方法及系统 |
TWI831564B (zh) * | 2022-11-09 | 2024-02-01 | 晶心科技股份有限公司 | 可配置的記憶體系統及其記憶體管理方法 |
US12007902B2 (en) | 2022-11-09 | 2024-06-11 | Andes Technology Corporation | Configurable memory system and memory managing method thereof |
CN115757438A (zh) * | 2023-01-06 | 2023-03-07 | 本原数据(北京)信息技术有限公司 | 数据库的索引节点处理方法和装置、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9449005B2 (en) | Metadata storage system and management method for cluster file system | |
CN113590612A (zh) | Dram-nvm混合索引结构的构建方法及操作方法 | |
CN111459846B (zh) | 一种基于混合dram-nvm内存的动态哈希表操作方法 | |
US8225029B2 (en) | Data storage processing method, data searching method and devices thereof | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
US8280858B2 (en) | Storage pool scrubbing with concurrent snapshots | |
CN109407978B (zh) | 高并发索引b+链表数据结构的设计与实现方法 | |
CN106951375B (zh) | 在存储系统中删除快照卷的方法及装置 | |
US9542279B2 (en) | Shadow paging based log segment directory | |
CN102722449A (zh) | 基于SSD的Key-Value型本地存储方法及系统 | |
CN103207883A (zh) | 用于元数据持久存储的方法 | |
CN114281762B (zh) | 一种日志存储加速方法、装置、设备及介质 | |
US11468011B2 (en) | Database management system | |
CN103106286A (zh) | 元数据的管理方法和装置 | |
CN113377292B (zh) | 一种单机存储引擎 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN109165321B (zh) | 一种基于非易失内存的一致性哈希表构建方法和系统 | |
CN113704217A (zh) | 一种分布式持久性内存文件系统中元数据及数据组织架构方法 | |
CN111414320B (zh) | 基于日志文件系统的非易失内存构建磁盘cache的方法及系统 | |
CN110134551B (zh) | 一种持续数据保护方法及装置 | |
CN112732725B (zh) | 基于nvm混合内存的自适应前缀树构建方法及其系统、介质 | |
US11860840B2 (en) | Update of deduplication fingerprint index in a cache memory | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
CN116226232A (zh) | 面向分布式数据库的持久内存数据存储方法及系统 | |
CN116204130A (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 |