CN111309258B - 一种b+树的存取方法、装置和计算机可读存储介质 - Google Patents
一种b+树的存取方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN111309258B CN111309258B CN202010093601.7A CN202010093601A CN111309258B CN 111309258 B CN111309258 B CN 111309258B CN 202010093601 A CN202010093601 A CN 202010093601A CN 111309258 B CN111309258 B CN 111309258B
- Authority
- CN
- China
- Prior art keywords
- data
- tree
- node
- file
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012986 modification Methods 0.000 claims description 64
- 230000004048 modification Effects 0.000 claims description 64
- 238000004590 computer program Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 4
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种B+树的存取方法、装置和介质,获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;若是,则将B+树的底层数据存储至底层树文件。若否,则新建一个目标底层数文件,并将目标底层树文件映射至DRAM内存,以便于将B+树的底层数据存储至目标底层树文件中。当B+树的层数大于或等于预设阈值时,则将B+树中层数大于或等于预设阈值的数据存储至预先设定的存储区域。基于B+树的数据结构,每次数据的读取都需要从底层数据访问,通过将底层文件存储在映射到DRAM内存的空闲的底层树文件,有效的提升了底层数据的访问效率。将其它数据存储在除DRAM内存外的存储空间中,提升了DRAM内存资源的利用率。
Description
技术领域
本发明涉及数据存储技术领域,特别是涉及一种B+树的存取方法、装置和计算机可读存储介质。
背景技术
在全闪存阵列存储系统中,由于其结构的特殊性,大量采用B+树结构。例如,全闪存阵列普遍采用自动精简的容量分配方式(thin provisioning),其卷的逻辑地址与卷在磁盘阵列(Redundant Arrays of Independent Disks,RAID)上的物理地址不再是线性对应关系,而变成了近似随机映射的关系。为了管理这种映射关系,采用B+树来保存从卷逻辑地址到物理地址的映射,并且采用B+树来保存物理地址到逻辑地址的逆映射。全闪存阵列的重删功能,采用B+树来保存数据块HASH值到物理地址的映射。
动态随机存取存储器(Dynamic Random Access Memory,DRAM)是一种较为常见的系统内存。由于DRAM内存是较为昂贵的部件,因此存储系统中通常只配置较少数量的DRAM内存以降低成本。现有技术中,B+树的数据通常保存在固态硬盘(Solid State Drives,SSD)中。SSD盘中的数据必须读到内存中才能进行读写访问,而SSD读写的IO路径比较长,速度慢。B+树结构的频繁的读入及换出内存,会带来很大的CPU开销。
可见,如何提升B+树的读写效率,是本领域技术人员需要解决的问题。
发明内容
本发明实施例的目的是提供一种B+树的存取方法、装置和计算机可读存储介质,可以提升B+树的读写效率。
为解决上述技术问题,本发明实施例提供一种B+树的存取方法,包括:
获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;
若是,则将所述B+树的底层数据存储至所述底层树文件;
若否,则新建一个目标底层数文件,并将所述目标底层树文件映射至DRAM内存,以便于将所述B+树的底层数据存储至所述目标底层树文件中;
当所述B+树的层数大于或等于预设阈值时,则将所述B+树中层数大于或等于所述预设阈值的数据存储至预先设定的存储区域。
可选地,所述B+树对应有第一层级、第二层级和第三层级;其中,第一层级的数据作为底层数据;
相应的,所述当所述B+树的层数大于或等于预设阈值时,则将所述B+树中大于或等于所述预设阈值的数据存储至预先设定的存储区域包括:
将所述B+树的第二层级的数据存储至DCPMM内存中;
将所述B+树的第三层级的数据存储至预设的硬盘中。
可选地,在所述获取到B+树创建指令时,判断是否存在映射到内存的底层树文件之前还包括:
将所述DCPMM内存的最小读写粒度作为所述B+树的节点容量。
可选地,所述将所述B+树的底层数据存储至所述底层树文件包括:
将所述B+树的底层数据按照所述节点容量向所述底层树文件中存储各节点数据;其中,每个节点数据的键值对中存储有下一层级节点的偏移地址。
可选地,还包括:
当获取到数据查询指令时,依据所述数据查询指令中携带的逻辑地址,确定出根节点;
根据所述根节点中包含的偏移地址,确定出叶子节点;并读取所述叶子节点对应的数据。
可选地,还包括:
当获取到数据修改指令时,判断所述DRAM内存中是否存在与所述数据修改指令中携带的节点标识相匹配的节点数据;
若是,则依据所述数据修改指令中携带待替换数据,对所述节点数据进行修改,并对修改后的节点数据设置脏标志;
若否,则判断所述DCPMM内存中是否存在与所述数据修改指令中携带的节点标识相匹配的节点数据;
当所述DCPMM内存中存在与所述数据修改指令中携带的节点标识相匹配的节点数据时,则依据所述数据修改指令中携带待替换数据,对所述节点数据进行修改;
当所述DCPMM内存中不存在与所述数据修改指令中携带的节点标识相匹配的节点数据时,则将所述硬盘中与所述数据修改指令中携带的节点标识相匹配的节点数据读取至所述DRAM内存中;依据所述数据修改指令中携带待替换数据,在所述DRAM内存中完成对所述节点数据的修改,并对修改后的节点数据设置脏标志。
可选地,在所述将所述B+树的底层数据存储至所述底层树文件之后还包括:
按照预设的周期时间将映射至DRAM内存中设置有脏标志的数据迁移至所述DCPMM内存中。
本发明实施例还提供了一种B+树的存取装置,包括第一判断单元、第一存储单元、创建单元和第二存储单元;
所述第一判断单元,用于获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;若是,则触发所述第一存储单元;若否,则触发所述创建单元;
所述第一存储单元,用于将所述B+树的底层数据存储至所述底层树文件;
所述创建单元,用于新建一个目标底层数文件,并将所述目标底层树文件映射至DRAM内存,以便于将所述B+树的底层数据存储至所述目标底层树文件中;
所述第二存储单元,用于当所述B+树的层数大于或等于预设阈值时,则将所述B+树中层数大于或等于所述预设阈值的数据存储至预先设定的存储区域。
可选地,所述B+树对应有第一层级、第二层级和第三层级;其中,第一层级的数据作为底层数据;
相应的,所述第二存储单元具体用于将所述B+树的第二层级的数据存储至DCPMM内存中;将所述B+树的第三层级的数据存储至预设的硬盘中。
可选地,还包括作为单元;
所述作为单元,用于将所述DCPMM内存的最小读写粒度作为所述B+树的节点容量。
可选地,所述第一存储单元具体用于将所述B+树的底层数据按照所述节点容量向所述底层树文件中存储各节点数据;其中,每个节点数据的键值对中存储有下一层级节点的偏移地址。
可选地,还包括查询单元、确定单元和读取单元;
所述查询单元,用于当获取到数据查询指令时,依据所述数据查询指令中携带的逻辑地址,确定出根节点;
所述确定单元,用于根据所述根节点中包含的偏移地址,确定出叶子节点;
所述读取单元,用于读取所述叶子节点对应的数据。
可选地,还包括第二判断单元、修改单元、设置单元、第三判断单元和读取单元;
所述第二判断单元,用于当获取到数据修改指令时,判断所述DRAM内存中是否存在与所述数据修改指令中携带的节点标识相匹配的节点数据;若是,则触发所述修改单元;若否,则触发所述第三判断单元;
所述修改单元,用于依据所述数据修改指令中携带待替换数据,对所述节点数据进行修改,
所述设置单元,用于对修改后的节点数据设置脏标志;
所述第三判断单元判断所述DCPMM内存中是否存在与所述数据修改指令中携带的节点标识相匹配的节点数据;
所述修改单元还用于当所述DCPMM内存中存在与所述数据修改指令中携带的节点标识相匹配的节点数据时,则依据所述数据修改指令中携带待替换数据,对所述节点数据进行修改;
所述读取单元,用于当所述DCPMM内存中不存在与所述数据修改指令中携带的节点标识相匹配的节点数据时,则将所述硬盘中与所述数据修改指令中携带的节点标识相匹配的节点数据读取至所述DRAM内存中;
所述修改单元还用于依据所述数据修改指令中携带待替换数据,在所述DRAM内存中完成对所述节点数据的修改,并触发所述设置单元对修改后的节点数据设置脏标志。
可选地,还包括迁移单元;
所述迁移单元,用于按照预设的周期时间将映射至DRAM内存中设置有脏标志的数据转移至所述DCPMM内存中。
本发明实施例还提供了一种B+树的存取装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述任意一项所述B+树的存取方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述B+树的存取方法的步骤。
由上述技术方案可以看出,获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;当存在映射到DRAM内存的空闲的底层树文件时,则可以直接将B+树的底层数据存储至底层树文件。当不存在映射到DRAM内存的空闲的底层树文件时,则需要新建一个目标底层数文件,并将目标底层树文件映射至DRAM内存,以便于将B+树的底层数据存储至目标底层树文件中。当B+树的层数大于或等于预设阈值时,则将B+树中层数大于或等于预设阈值的数据存储至预先设定的存储区域。基于B+树的数据结构,每次数据的读取都需要从底层数据访问,因此底层数据被访问的次数较多,通过将底层文件存储在映射到DRAM内存的空闲的底层树文件,有效的提升了底层数据的访问效率。而B+树中除底层数据外的其它数据被访问的次数相对较少,为了降低对DRAM内存的占用,可以将其它数据存储在除DRAM内存外的存储空间中,既提升了DRAM内存资源的利用率,又可以保证B+树的读写效率。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种B+树的存取方法的流程图;
图2为本发明实施例提供的一种B+树的数据修改方法的流程图;
图3为本发明实施例提供的一种B+树的存取装置的结构示意图;
图4为本发明实施例提供的一种B+树的存取装置的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种B+树的存取方法。图1为本发明实施例提供的一种B+树的存取方法的流程图,该方法包括:
S101:获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件。
当存在映射到DRAM内存的空闲的底层树文件时,则说明DRAM内存中存在可以用于存储B+树的文件,此时可以执行S102。
当不存在映射到DRAM内存的空闲的底层树文件时,则说明当前的DRAM内存中不存在用于存储B+树的文件,此时可以执行S103。
S102:将B+树的底层数据存储至底层树文件。
S103:新建一个目标底层数文件,并将目标底层树文件映射至DRAM内存,以便于将B+树的底层数据存储至目标底层树文件中。
基于B+树的数据结构,每次数据的读取都需要从底层数据访问,因此底层数据被访问的次数较频繁,通过将底层文件存储在映射到DRAM内存的空闲的底层树文件,有效的提升了底层数据的访问效率。
需要说明的是,为了便于区分,在本发明实施例中,将新建的底层树文件称作目标底层树文件,对于存储系统而言,新建的目标底层树文件与底层树文件均是用于存储底层数据的文件,两者并不存在实质性区别。
S104:当B+树的层数大于或等于预设阈值时,则将B+树中层数大于或等于预设阈值的数据存储至预先设定的存储区域。
B+树包含有多层数据,在本发明实施例中,可以将B+树的数据进行不同层级的划分,不同层级的数据被访问的频率和次数有所差异,因此,可以将不同层级的数据存储在不同的位置。
在具体实现中,可以将B+树划分为第一层级、第二层级和第三层级;其中,第一层级的数据作为底层数据。
在B+树创建初期,底层数据被访问的频率较高,因此,在本发明实施例中,将底层数据存储在映射到DRAM内存的空闲的底层树文件中。
考虑到数据中心级持久性内存模块(DC Persistent Memory Module,DCPMM)在Device DAX模式下可以实现数据的直接存取,无需依赖于DRAM内存,Device DAX模式下的DCPMM器件可以看作是DCPMM内存。在本发明实施例中,可以将B+树的第二层级的数据存储至DCPMM内存中。
为了精确的控制DCPMM的使用,避免DCPMM资源的浪费,可以将B+树的第三层级的数据存储至预设的硬盘中。
在实际应用中,可以将B+树的第一层文件至第三层文件作为第一层级,将第四层文件和第五层文件作为第二层级,将大于第五层文件的数据作为第三层级。
由上述技术方案可以看出,获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;当存在映射到DRAM内存的空闲的底层树文件时,则可以直接将B+树的底层数据存储至底层树文件。当不存在映射到DRAM内存的空闲的底层树文件时,则需要新建一个目标底层数文件,并将目标底层树文件映射至DRAM内存,以便于将B+树的底层数据存储至目标底层树文件中。当B+树的层数大于或等于预设阈值时,则将B+树中层数大于或等于预设阈值的数据存储至预先设定的存储区域。基于B+树的数据结构,每次数据的读取都需要从底层数据访问,因此底层数据被访问的次数较多,通过将底层文件存储在映射到DRAM内存的空闲的底层树文件,有效的提升了底层数据的访问效率。而B+树中除底层数据外的其它数据被访问的次数相对较少,为了降低对DRAM内存的占用,可以将其它数据存储在除DRAM内存外的存储空间中,既提升了DRAM内存资源的利用率,又可以保证B+树的读写效率。
在B+树的创建初期,底层数据被访问的次数较为频繁,因此可以将底层数据存储在DRAM内存中,随着存储时间的增长,B+树的底层数据被访问的频率有所下降,为了提升DRAM内存的利用率,因此,在具体实现中,可以对存储于DRAM内存中的底层数据设置脏标识,以便于可以将存储在DRAM内存中的底层数据周期性迁移至DCPMM内存中。
为了提升数据的读取效率,在具体实现中,可以将DCPMM内存的最小读写粒度作为B+树的节点容量。DCPMM内存的内部最小读写粒度为256字节,因此,可以将一个B+树节点的容量设置为256字节,也即每256字节数据产生一组校验保护数据。
在本发明实施例中,可以将B+树的底层数据按照节点容量向底层树文件中存储各节点数据;其中,每个节点数据的键值对中存储有下一层级节点的偏移地址。
在实际应用中,每个节点可以包含一个16字节的节点头和最多15个键值对。节点头包含节点类型等信息。其中,节点类型包括叶子节点和非叶子节点。对于叶子节点,其键值对中的值为RAID物理地址,依据该RAID物理地址,可以读取到叶子节点所对应的具体数据;对于非叶子节点,其键值对中可以存储下一层级节点的偏移地址。
当获取到数据查询指令时,可以依据数据查询指令中携带的逻辑地址,确定出根节点;根据根节点中包含的偏移地址,确定出叶子节点;并读取叶子节点对应的数据。
举例说明,当需要查询B+树的数据时,可以在数据查询指令中携带数据卷的逻辑地址。根据该逻辑地址,可以找到这个数据卷的元数据,如果元数据中保护根节点内存地址,则该树的底层树文件在内存中,依据底层树文件中相应节点中存储的偏移地址,可以查找叶子节点,如果走到第3层节点仍然不是叶子节点,则从元数据读取第3层文件中相应节点的偏移地址,从而得到第4层文件的存储地址。如果该节点仍然为非叶子节点,则继续进行第5层节点的访问。如果5层节点仍然不是叶子节点,则读入第三层级的文件到内存,继续查找,直到到达叶子节点为止,根据叶子节点的键值对存储的RAID物理地址,便可以读取到叶子节点所对应的具体数据。
B+树的数据按照划分的层级存储在不同的位置,当需要修改B+树的数据时,可以按照存储位置查询所需修改的数据所在的存储位置,以实现对B+树中数据的修改,如图2所示为本发明实施例提供的一种B+树的数据修改方法的流程图,包括:
S201:当获取到数据修改指令时,判断DRAM内存中是否存在与数据修改指令中携带的节点标识相匹配的节点数据。
当DRAM内存中存在与数据修改指令中携带的节点标识相匹配的节点数据,则执行S202。
当DRAM内存中不存在与数据修改指令中携带的节点标识相匹配的节点数据,则需要进一步确定所需修改的节点数据所在的位置,此时可以执行S203。
S202:依据数据修改指令中携带待替换数据,对节点数据进行修改,并对修改后的节点数据设置脏标志。
节点数据存储在DRAM内存中,会占用DRAM内存的资源,为了提升DRAM资源的利用率,可以对修改后的节点数据设置脏标志,以便于后续可以按照预设的周期时间将映射至DRAM内存中设置有脏标志的数据迁移至DCPMM内存中。
S203:判断DCPMM内存中是否存在与数据修改指令中携带的节点标识相匹配的节点数据。
当DCPMM内存中存在与数据修改指令中携带的节点标识相匹配的节点数据,则执行S204。
在本发明实施例中,B+树的数据按照不同的层级会分别存储在DRAM内存、DCPMM内存以及预设的硬盘中,当DRAM内存中不存在与数据修改指令中携带的节点标识相匹配的节点数据,并且DCPMM内存中也不存在与数据修改指令中携带的节点标识相匹配的节点数据,则说明所需修改的节点数据存储在预设的硬盘中,此时可以执行S205。
S204:依据数据修改指令中携带待替换数据,对节点数据进行修改。
S205:将硬盘中与数据修改指令中携带的节点标识相匹配的节点数据读取至DRAM内存中。
由于硬盘中的数据无法直接进行修改,因此,当所需修改的节点数据存储在预设的硬盘中时,需要将硬盘中与数据修改指令中携带的节点标识相匹配的节点数据读取至DRAM内存中。
S206:依据数据修改指令中携带待替换数据,在DRAM内存中完成对节点数据的修改,并对修改后的节点数据设置脏标志。
当所需修改的节点数据存储在DRAM内存中或者硬盘中时,修改后的节点数据会存储在DRAM内存中,由于DRAM内存资源有限,为了避免修改后的节点数据长时间占用DRAM内存的资源,因此在本发明实施例中,可以将存储在DRAM内存中的修改后的节点数据设置脏标识,以便于后续可以按照预设的周期时间将映射至DRAM内存中设置有脏标志的数据迁移至DCPMM内存中。
通过定期对存储在DRAM内存中数据迁移,避免了B+树的数据长时间占用DRAM内存的资源,有效的提升了存储系统的处理性能。
图3为本发明实施例提供的一种B+树的存取装置的结构示意图,包括第一判断单元31、第一存储单元32、创建单元33和第二存储单元34;
第一判断单元31,用于获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;若是,则触发第一存储单元32;若否,则触发创建单元33;
第一存储单元32,用于将B+树的底层数据存储至底层树文件;
创建单元33,用于新建一个目标底层数文件,并将目标底层树文件映射至DRAM内存,以便于将B+树的底层数据存储至目标底层树文件中;
第二存储单元34,用于当B+树的层数大于或等于预设阈值时,则将B+树中层数大于或等于预设阈值的数据存储至预先设定的存储区域。
可选地,B+树对应有第一层级、第二层级和第三层级;其中,第一层级的数据作为底层数据;
相应的,第二存储单元具体用于将B+树的第二层级的数据存储至DCPMM内存中;将B+树的第三层级的数据存储至预设的硬盘中。
可选地,还包括作为单元;
作为单元,用于将DCPMM内存的最小读写粒度作为B+树的节点容量。
可选地,第一存储单元具体用于将B+树的底层数据按照节点容量向底层树文件中存储各节点数据;其中,每个节点数据的键值对中存储有下一层级节点的偏移地址。
可选地,还包括查询单元、确定单元和读取单元;
查询单元,用于当获取到数据查询指令时,依据数据查询指令中携带的逻辑地址,确定出根节点;
确定单元,用于根据根节点中包含的偏移地址,确定出叶子节点;
读取单元,用于读取叶子节点对应的数据。
可选地,还包括第二判断单元、修改单元、设置单元、第三判断单元和读取单元;
第二判断单元,用于当获取到数据修改指令时,判断DRAM内存中是否存在与数据修改指令中携带的节点标识相匹配的节点数据;若是,则触发修改单元;若否,则触发第三判断单元;
修改单元,用于依据数据修改指令中携带待替换数据,对节点数据进行修改,
设置单元,用于对修改后的节点数据设置脏标志;
第三判断单元判断DCPMM内存中是否存在与数据修改指令中携带的节点标识相匹配的节点数据;
修改单元还用于当DCPMM内存中存在与数据修改指令中携带的节点标识相匹配的节点数据时,则依据数据修改指令中携带待替换数据,对节点数据进行修改;
读取单元,用于当DCPMM内存中不存在与数据修改指令中携带的节点标识相匹配的节点数据时,则将硬盘中与数据修改指令中携带的节点标识相匹配的节点数据读取至DRAM内存中;
修改单元还用于依据数据修改指令中携带待替换数据,在DRAM内存中完成对节点数据的修改,并触发设置单元对修改后的节点数据设置脏标志。
可选地,还包括迁移单元;
迁移单元,用于按照预设的周期时间将映射至DRAM内存中设置有脏标志的数据转移至DCPMM内存中。
图3所对应实施例中特征的说明可以参见图1和图2所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;当存在映射到DRAM内存的空闲的底层树文件时,则可以直接将B+树的底层数据存储至底层树文件。当不存在映射到DRAM内存的空闲的底层树文件时,则需要新建一个目标底层数文件,并将目标底层树文件映射至DRAM内存,以便于将B+树的底层数据存储至目标底层树文件中。当B+树的层数大于或等于预设阈值时,则将B+树中层数大于或等于预设阈值的数据存储至预先设定的存储区域。基于B+树的数据结构,每次数据的读取都需要从底层数据访问,因此底层数据被访问的次数较多,通过将底层文件存储在映射到DRAM内存的空闲的底层树文件,有效的提升了底层数据的访问效率。而B+树中除底层数据外的其它数据被访问的次数相对较少,为了降低对DRAM内存的占用,可以将其它数据存储在除DRAM内存外的存储空间中,既提升了DRAM内存资源的利用率,又可以保证B+树的读写效率。
图4为本发明实施例提供的一种B+树的存取装置40的硬件结构示意图,包括:
存储器41,用于存储计算机程序;
处理器42,用于执行所述计算机程序以实现如上述任意实施例所述的B+树的存取方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意实施例所述的B+树的存取方法的步骤。
以上对本发明实施例所提供的一种B+树的存取方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
Claims (10)
1.一种B+树的存取方法,其特征在于,包括:
获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;
若是,则将所述B+树的底层数据存储至所述底层树文件;
若否,则新建一个目标底层数文件,并将所述目标底层树文件映射至DRAM内存,以便于将所述B+树的底层数据存储至所述目标底层树文件中;
当所述B+树的层数大于或等于预设阈值时,则将所述B+树中层数大于或等于所述预设阈值的数据存储至预先设定的存储区域;预先设定的存储区域为除DRAM内存外的存储空间。
2.根据权利要求1所述的方法,其特征在于,所述B+树对应有第一层级、第二层级和第三层级;其中,第一层级的数据作为底层数据;
相应的,所述当所述B+树的层数大于或等于预设阈值时,则将所述B+树中大于或等于所述预设阈值的数据存储至预先设定的存储区域包括:
将所述B+树的第二层级的数据存储至DCPMM内存中;
将所述B+树的第三层级的数据存储至预设的硬盘中。
3.根据权利要求2所述的方法,其特征在于,在所述获取到B+树创建指令时,判断是否存在映射到内存的底层树文件之前还包括:
将所述DCPMM内存的最小读写粒度作为所述B+树的节点容量。
4.根据权利要求3所述的方法,其特征在于,所述将所述B+树的底层数据存储至所述底层树文件包括:
将所述B+树的底层数据按照所述节点容量向所述底层树文件中存储各节点数据;其中,每个节点数据的键值对中存储有下一层级节点的偏移地址。
5.根据权利要求4所述的方法,其特征在于,还包括:
当获取到数据查询指令时,依据所述数据查询指令中携带的逻辑地址,确定出根节点;
根据所述根节点中包含的偏移地址,确定出叶子节点;并读取所述叶子节点对应的数据。
6.根据权利要求2所述的方法,其特征在于,还包括:
当获取到数据修改指令时,判断所述DRAM内存中是否存在与所述数据修改指令中携带的节点标识相匹配的节点数据;
若是,则依据所述数据修改指令中携带待替换数据,对所述节点数据进行修改,并对修改后的节点数据设置脏标志;
若否,则判断所述DCPMM内存中是否存在与所述数据修改指令中携带的节点标识相匹配的节点数据;
当所述DCPMM内存中存在与所述数据修改指令中携带的节点标识相匹配的节点数据时,则依据所述数据修改指令中携带待替换数据,对所述节点数据进行修改;
当所述DCPMM内存中不存在与所述数据修改指令中携带的节点标识相匹配的节点数据时,则将所述硬盘中与所述数据修改指令中携带的节点标识相匹配的节点数据读取至所述DRAM内存中;依据所述数据修改指令中携带待替换数据,在所述DRAM内存中完成对所述节点数据的修改,并对修改后的节点数据设置脏标志。
7.根据权利要求6所述的方法,其特征在于,在所述将所述B+树的底层数据存储至所述底层树文件之后还包括:
按照预设的周期时间将映射至DRAM内存中设置有脏标志的数据迁移至所述DCPMM内存中。
8.一种B+树的存取装置,其特征在于,包括第一判断单元、第一存储单元、创建单元和第二存储单元;
所述第一判断单元,用于获取到B+树创建指令时,判断是否存在映射到DRAM内存的空闲的底层树文件;若是,则触发所述第一存储单元;若否,则触发所述创建单元;
所述第一存储单元,用于将所述B+树的底层数据存储至所述底层树文件;
所述创建单元,用于新建一个目标底层数文件,并将所述目标底层树文件映射至DRAM内存,以便于将所述B+树的底层数据存储至所述目标底层树文件中;
所述第二存储单元,用于当所述B+树的层数大于或等于预设阈值时,则将所述B+树中层数大于或等于所述预设阈值的数据存储至预先设定的存储区域;预先设定的存储区域为除DRAM内存外的存储空间。
9.一种B+树的存取装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至7任意一项所述B+树的存取方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述B+树的存取方法的步骤。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010093601.7A CN111309258B (zh) | 2020-02-14 | 2020-02-14 | 一种b+树的存取方法、装置和计算机可读存储介质 |
US17/799,878 US11762827B2 (en) | 2020-02-14 | 2020-09-24 | B-plus tree access method and apparatus, and computer-readable storage medium |
EP20919043.8A EP4105770A4 (en) | 2020-02-14 | 2020-09-24 | METHOD AND APPARATUS FOR ACCESSING B+ TREE AND COMPUTER READABLE STORAGE MEDIUM |
PCT/CN2020/117331 WO2021159711A1 (zh) | 2020-02-14 | 2020-09-24 | 一种b+树的存取方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010093601.7A CN111309258B (zh) | 2020-02-14 | 2020-02-14 | 一种b+树的存取方法、装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309258A CN111309258A (zh) | 2020-06-19 |
CN111309258B true CN111309258B (zh) | 2021-10-15 |
Family
ID=71158329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010093601.7A Active CN111309258B (zh) | 2020-02-14 | 2020-02-14 | 一种b+树的存取方法、装置和计算机可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11762827B2 (zh) |
EP (1) | EP4105770A4 (zh) |
CN (1) | CN111309258B (zh) |
WO (1) | WO2021159711A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309258B (zh) * | 2020-02-14 | 2021-10-15 | 苏州浪潮智能科技有限公司 | 一种b+树的存取方法、装置和计算机可读存储介质 |
US11983438B2 (en) * | 2021-02-09 | 2024-05-14 | Nutanix, Inc. | Technique for improving operations log indexing |
CN113392040B (zh) * | 2021-06-23 | 2023-03-21 | 锐捷网络股份有限公司 | 一种地址映射方法、装置、设备 |
CN116700935B (zh) * | 2023-08-04 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种内存数据迁移方法、装置、电子设备及存储介质 |
CN117194739B (zh) * | 2023-09-12 | 2024-04-19 | 北京云枢创新软件技术有限公司 | 基于命中状态查找层次树节点的方法、电子设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801769A (zh) * | 2004-12-31 | 2006-07-12 | 华为技术有限公司 | 一种数据传送方法 |
CN101789028A (zh) * | 2010-03-19 | 2010-07-28 | 苏州广达友讯技术有限公司 | 地理位置搜索引擎及其构建方法 |
CN108804019A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN109407978A (zh) * | 2018-09-27 | 2019-03-01 | 清华大学 | 高并发索引b+链表数据结构的设计与实现方法 |
CN110147204A (zh) * | 2019-05-22 | 2019-08-20 | 苏州浪潮智能科技有限公司 | 一种元数据落盘方法、装置、系统及计算机可读存储介质 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5813000A (en) * | 1994-02-15 | 1998-09-22 | Sun Micro Systems | B tree structure and method |
JP2001350635A (ja) | 2000-06-07 | 2001-12-21 | Nec Corp | 電文一括処理システムの起動スケジューリングシステム及び起動スケジューリング方法 |
US10152504B2 (en) * | 2009-03-11 | 2018-12-11 | Actian Netherlands B.V. | Column-store database architecture utilizing positional delta tree update system and methods |
US9483356B2 (en) * | 2013-03-06 | 2016-11-01 | Quantum Corporation | Heuristic journal reservations |
US20150089185A1 (en) | 2013-09-23 | 2015-03-26 | International Business Machines Corporation | Managing Mirror Copies without Blocking Application I/O |
CA2867589A1 (en) * | 2013-10-15 | 2015-04-15 | Coho Data Inc. | Systems, methods and devices for implementing data management in a distributed data storage system |
US9201918B2 (en) * | 2013-11-19 | 2015-12-01 | Netapp, Inc. | Dense tree volume metadata update logging and checkpointing |
US9798728B2 (en) * | 2014-07-24 | 2017-10-24 | Netapp, Inc. | System performing data deduplication using a dense tree data structure |
CN109299113B (zh) * | 2015-06-08 | 2021-03-30 | 南京航空航天大学 | 具有存储感知的混合索引的范围查询方法 |
US20170024140A1 (en) * | 2015-07-20 | 2017-01-26 | Samsung Electronics Co., Ltd. | Storage system and method for metadata management in non-volatile memory |
DE112016004860T5 (de) * | 2015-10-21 | 2018-07-26 | Arris International Ip Ltd. | Verteilte Regelbereitstellung in einer Extended Bridge |
EP3408982B1 (en) * | 2016-01-27 | 2020-12-09 | Oracle International Corporation | System and method for supporting scalable bit map based p_key table in a high performance computing environment |
US10789134B2 (en) * | 2016-04-15 | 2020-09-29 | Netapp, Inc. | NVRAM loss handling |
CN105930280B (zh) * | 2016-05-27 | 2019-07-05 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
US10552469B2 (en) * | 2017-01-06 | 2020-02-04 | Oracle International Corporation | File system hierarchy mirroring across cloud data stores |
CN108733678B (zh) | 2017-04-14 | 2021-11-09 | 华为技术有限公司 | 一种数据搜索的方法、装置和相关设备 |
US11029862B2 (en) * | 2017-04-25 | 2021-06-08 | Netapp, Inc. | Systems and methods for reducing write tax, memory usage, and trapped capacity in metadata storage |
US11086524B1 (en) * | 2018-06-27 | 2021-08-10 | Datadirect Networks, Inc. | System and method for non-volatile memory based optimized, versioned, log-structured metadata storage with efficient data retrieval |
US11423063B2 (en) * | 2018-07-31 | 2022-08-23 | Salesforce, Inc. | Flattening hierarchical database records using inverted indexing |
CN109407979B (zh) * | 2018-09-27 | 2020-07-28 | 清华大学 | 多线程持久性b+树数据结构设计与实现方法 |
CN109766312A (zh) | 2019-01-07 | 2019-05-17 | 深圳大学 | 一种区块链存储方法、系统、装置及计算机可读存储介质 |
CN110597805B (zh) * | 2019-07-24 | 2022-04-12 | 浙江大学 | 一种内存索引结构处理方法 |
WO2019228574A2 (en) * | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
CN110688345A (zh) * | 2019-09-26 | 2020-01-14 | 重庆大学 | 一种内存文件系统的多粒度结构化空间管理机制 |
CN111309258B (zh) | 2020-02-14 | 2021-10-15 | 苏州浪潮智能科技有限公司 | 一种b+树的存取方法、装置和计算机可读存储介质 |
-
2020
- 2020-02-14 CN CN202010093601.7A patent/CN111309258B/zh active Active
- 2020-09-24 EP EP20919043.8A patent/EP4105770A4/en active Pending
- 2020-09-24 WO PCT/CN2020/117331 patent/WO2021159711A1/zh unknown
- 2020-09-24 US US17/799,878 patent/US11762827B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801769A (zh) * | 2004-12-31 | 2006-07-12 | 华为技术有限公司 | 一种数据传送方法 |
CN101789028A (zh) * | 2010-03-19 | 2010-07-28 | 苏州广达友讯技术有限公司 | 地理位置搜索引擎及其构建方法 |
CN108804019A (zh) * | 2017-04-27 | 2018-11-13 | 华为技术有限公司 | 一种数据存储方法及装置 |
CN109407978A (zh) * | 2018-09-27 | 2019-03-01 | 清华大学 | 高并发索引b+链表数据结构的设计与实现方法 |
CN110147204A (zh) * | 2019-05-22 | 2019-08-20 | 苏州浪潮智能科技有限公司 | 一种元数据落盘方法、装置、系统及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111309258A (zh) | 2020-06-19 |
EP4105770A1 (en) | 2022-12-21 |
US11762827B2 (en) | 2023-09-19 |
US20230078081A1 (en) | 2023-03-16 |
WO2021159711A1 (zh) | 2021-08-19 |
EP4105770A4 (en) | 2023-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309258B (zh) | 一种b+树的存取方法、装置和计算机可读存储介质 | |
US11243706B2 (en) | Fragment management method and fragment management apparatus | |
CN111125447A (zh) | 一种元数据访问方法、装置、设备及可读存储介质 | |
KR101599177B1 (ko) | 복합식 비휘발성 저장 디바이스를 위한 데이터 이송 | |
US10565125B2 (en) | Virtual block addresses | |
WO2020076580A1 (en) | Key-value store tree data block spill with compaction | |
US11061788B2 (en) | Storage management method, electronic device, and computer program product | |
CN114860163B (zh) | 一种存储系统、内存管理方法和管理节点 | |
JP2015512604A (ja) | 暗号ハッシュ・データベース | |
CN112100293A (zh) | 数据处理方法、数据访问方法、装置及计算机设备 | |
US11126377B2 (en) | Accessing solid state disk | |
US11640244B2 (en) | Intelligent block deallocation verification | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
KR20230026946A (ko) | 해싱을 사용하는 키 밸류 스토리지 장치 및 그것의 동작 방법 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
CN114201648A (zh) | 用于高效扩展键值哈希表的系统及方法 | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 | |
WO2017054636A1 (zh) | 虚拟快照处理方法及装置 | |
CN111881064A (zh) | 一种全闪存储系统中访问请求的处理方法、装置及设备 | |
US11853577B2 (en) | Tree structure node compaction prioritization | |
CN114676139A (zh) | 一种索引数据存储方法、系统、设备及存储介质 | |
CN115391349A (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 |