CN113392040B - 一种地址映射方法、装置、设备 - Google Patents
一种地址映射方法、装置、设备 Download PDFInfo
- Publication number
- CN113392040B CN113392040B CN202110697500.5A CN202110697500A CN113392040B CN 113392040 B CN113392040 B CN 113392040B CN 202110697500 A CN202110697500 A CN 202110697500A CN 113392040 B CN113392040 B CN 113392040B
- Authority
- CN
- China
- Prior art keywords
- tree
- address
- node
- data
- full
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种地址映射方法、装置、设备。该方法:响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址;以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询数据逻辑地址对应的线性地址;以线性地址作为满N叉树中的索引值,在满N叉树中查询线性地址对应的节点物理地址;在B+树中,从节点物理地址指向的第一目标叶子节点中,获取数据逻辑地址对应的数据物理地址;通过数据物理地址从磁盘中获取待操作数据。该方法通过满N叉树对B+树元数据的管理,不仅减少B+树的写入放大,保持多层树结构中各个B+树的独立性,还提高存储空间利用率,在缓存中获得更快的查找性能,优先保证元数据的缓存命中率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种地址映射方法、装置、设备。
背景技术
存储系统中,为了正确读取数据,需要先将用户输入的逻辑地址转换为磁盘上的物理地址,再采用物理地址读取数据。从逻辑地址到物理地址的转换过程,称为地址映射。
目前,可采用B+树实现地址映射,但是,读写IO、后端垃圾回收等业务都需要依赖同一个B+树,对B+树的访问量较大,使得该B+树的业务负载过大,同样也会导致B+树性能不佳。
因此,如何实现数据地址映射,提高数据管理效率,成为亟待解决的技术问题。
发明内容
本发明实施例提供一种地址映射方法、装置、设备,用以实现数据地址映射,提高数据管理效率。
第一方面,本发明实施例提供一种地址映射方法,该地址映射方法包括:
响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址;
以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与所述数据逻辑地址对应的线性地址;其中,所述线性地址指向所述中间节点的子节点,与数据逻辑地址对应的数据物理地址存储于B+树的第一目标叶子节点中,指向第一目标叶子节点的节点物理地址以线性连续的方式存储于满N叉树中;
以线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址;
在B+树中,从节点物理地址指向的第一目标叶子节点中,获取数据物理地址;
通过数据物理地址从磁盘中获取待操作数据。
第二方面,本发明实施例提供一种地址映射装置,该地址映射装置包括:
解析模块,用于响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址;
查询模块,用于以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与所述数据逻辑地址对应的线性地址;其中,所述线性地址指向所述中间节点的子节点,与数据逻辑地址对应的数据物理地址存储于B+树的第一目标叶子节点中,指向第一目标叶子节点的节点物理地址以线性连续的方式存储于满N叉树中;以线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址;在B+树中,从节点物理地址指向的第一目标叶子节点中,获取数据物理地址;
获取模块,用于通过数据物理地址从磁盘中获取待操作数据。
第三方面,本发明实施例提供一种电子设备,其中包括处理器和存储器,其中,存储器上存储有可执行代码,当可执行代码被处理器执行时,使处理器至少可以实现第一方面中的地址映射方法。
本发明实施例提供了一种非暂时性机器可读存储介质,非暂时性机器可读存储介质上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器至少可以实现第一方面中的地址映射方法。
本发明实施例提供的地址映射方案中,响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址。进而,以数据逻辑地址作为B+树中的索引值,在B+树中查询与数据逻辑地址对应的数据物理地址,该数据物理地址存储于B+树的第一目标叶子节点中。而指向第一目标叶子节点的节点物理地址以线性连续的方式存储于满N叉树的第二目标叶子节点中,因此,可以通过满N叉树获取B+树的元数据以查找出第一目标叶子节点。具体地,以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与所述数据逻辑地址对应的线性地址,进而,以该线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址,最后,在B+树中,从该节点物理地址指向的第一目标叶子节点中,获取与数据逻辑地址对应的数据物理地址。这样,通过第一目标叶子节点中存储的数据物理地址从磁盘中获取待操作数据,即可实现从数据逻辑地址到数据物理地址的地址映射过程。
该方案中,使用满N叉树管理B+树的元数据,即在满N叉树中采用线性连续方式记录B+树中指向叶子节点的节点物理地址,降低了B+树的元数据放大,将垃圾回收等部分业务对B+树的访问量引流至满N叉树,不仅大大降低B+树的访问量,减轻B+树中的业务负载,提高数据管理效率,还有助于在多层树结构中保持各个B+树之间的独立性。并且,该方案采用满N叉树管理B+树的元数据(如指向子节点的线性地址),提高空间利用率,在缓存中获得更快的查找性能,并能优先保证元数据的缓存命中率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种地址映射方法的流程示意图;
图2为本发明实施例提供的一种地址映射方法的原理示意图;
图3为本发明实施例提供的另一种地址映射方法的原理示意图;
图4为本发明实施例提供的再一种地址映射方法的原理示意图;
图5为本发明实施例提供的一种地址映射装置的结构示意图;
图6为与图5所示实施例提供的地址映射装置对应的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
首先,下面先介绍本发明实施例中涉及到的几个概念,以辅助理解上下文内容。
逻辑地址,是指在计算机体系结构中是指应用程序角度看到的内存单元(memorycell)、存储单元(storage element)、网络主机(network host)的地址。逻辑地址往往不同于物理地址(physical address),通过地址翻译器(address translator)或映射函数可以把逻辑地址转化为物理地址。
实际上,逻辑地址可以是CPU所生成的地址。逻辑地址是内部和编程使用的、并不唯一。例如,在进行C语言指针编程中,可以读取指针变量本身值,实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。
物理地址,是磁盘或存储单元中用于表示数据存储位置的地址。该地址的编号可从0开始一直到可用物理存储空间的最高端,这些数字编号可被映射到实际的磁盘存储空间中。
线性地址(Linear Address),或者也称为虚拟地址(virtual address),与逻辑地址类似,线性地址并非真实存在的地址。实际应用中,线性地址可以作为逻辑地址到物理地址的中间层。具体地,在分段部件中逻辑地址是段中的偏移地址,然后加上基地址就是线性地址。例如,假设逻辑地址是硬件平台段式管理中的转换前地址,那么,线性地址则可以实现为:硬件页式内存的转换前地址。
数据结构,是相互之间存在一种或多种特定关系的数据元素的集合,主要包含三方面的内容:逻辑结构、存储结构和数据的运算。数据的逻辑结构与存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的的存储结构。逻辑结构比如包括线性结构与非线性结构,存储结构比如包括顺序存储、链式存储、索引存储、散列存储。
B+树,是一种树型的数据结构。实际上,B+树是一种多叉树(也称为n叉树)。B+树中,每个节点通常有多个子节点。以三层或三层以上的B+树为例,B+树主要有中间节点和叶子节点,根节点是中间节点的一个特例。实际上,所谓的根节点就是B+树中最顶端的树节点。以多层B+树为例,叶子节点为处于最底层的树节点,中间节点为处于最高层到次底层的树节点,其中,根节点为处于最高层(也即最顶端)的树节点。当然,在一些情况下,例如B+树仅有一层的情况下,根节点也可认为是叶子节点。中间节点还可称为索引节点。B+树通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,针对B+树的插入操作与修改操作的对数时间复杂度较为稳定。
满N叉树,也是一种n叉树。类似的,以三层或三层以上的满N叉树为例,满N叉树的树节点也可划分为中间节点和叶子节点,根节点是中间节点的一个特例。中间节点还可称为索引节点。类似地,在满N叉树中,叶子节点为处于最底层的树节点,中间节点为处于最高层到次底层的树节点,其中,根节点为处于最高层的树节点。需要注意的是,满N叉树具有以下几点使用限制:
其一,满N叉树中不存储索引值(key),key体现在满N叉树的线性连续存储关系,且key大小固定;
其二,满N叉树中的映射值(value)大小固定,树节点value中存储的指向子节点的地址大小固定;
其三,树节点的大小为固定的。
介绍完本发明实施例涉及到的几个概念后,下面结合以下实施例对本发明实施提供方案的执行过程进行说明。
存储系统中,为了正确读取数据,需要先将用户输入的逻辑地址转换为磁盘上的物理地址,再采用物理地址读取数据。从逻辑地址到物理地址的转换过程,称为地址映射。
目前,可使用B+树实现地址映射,但是,读写IO、后端垃圾回收等业务都需要依赖同一个B+树,对B+树的访问量较大,使得该B+树的业务负载过大,同样也会导致B+树性能不佳。例如,针对B+树的一次修改就会造成B+树路径上所有树节点的变动,引发较大的写入放大。
尤其是,在块存储系统中,磁盘以追加写方式进行数据存储,使用B+树实现地址映射会引起同步临界区竞争过大,进一步影响B+树的数据管理性能。
因此,如何实现数据地址映射,提高数据管理效率,成为亟待解决的技术问题。
为解决上述技术问题,本发明实施例提供的地址映射方案方案的核心思想是:
首先,响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址。进而,以数据逻辑地址作为B+树中的索引值,在B+树中查询与数据逻辑地址对应的数据物理地址,该数据物理地址存储于B+树的第一目标叶子节点中。而指向第一目标叶子节点的节点物理地址以线性连续的方式存储于满N叉树的第二目标叶子节点中,使得满N叉树能够用于管理B+树的元数据,以便减轻B+树的元数据放大。
在此基础上,通过满N叉树可获取B+树的元数据以查找出第一目标叶子节点,具体地,以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与数据逻辑地址对应的线性地址,进而,以该线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址,最后,在B+树中,从该节点物理地址指向的第一目标叶子节点中,获取与数据逻辑地址对应的数据物理地址。这样,通过第一目标叶子节点中存储的数据物理地址从磁盘中获取待操作数据,即可实现从数据逻辑地址到磁盘中的数据物理地址的地址映射过程。
通过使用满N叉树管理B+树的元数据,即在满N叉树中采用线性连续方式记录B+树中指向叶子节点的节点物理地址,降低了B+树的元数据放大,将垃圾回收等部分业务对B+树的访问量引流至满N叉树,不仅大大降低B+树的访问量,减轻B+树中的业务负载,提高数据管理效率,还有助于在多层树结构中保持各个B+树之间的独立性。并且,该方案采用满N叉树管理B+树的元数据(如线性地址),提高空间利用率,在缓存中获得更快的查找性能,并能优先保证元数据的缓存命中率。
另外,上面给出的地址映射方案的核心思路中,基于满N叉树具有的存储特点,即满N叉树无需存储索引值,可由索引值直接计算得到用于访问目标树节点的地址,能够大大减少元数据所占用的存储空间,提高存储空间的容量利用率。并且,满N叉树中通常是以自叶子节点向根节点的方向查找索引结果,因而该树结构更适合内存缓存(Cache)体系访问。
因而,上述思路中通过满N叉树,也可大大改善在块存储系统中因使用B+树实现地址映射而引起的同步临界区过大的问题,提升B+树的数据管理效率。
本发明实施例提供的技术方案适用于多种存储系统。例如,块存储系统。其中,块存储系统具有较高可靠性以及随机读写性能,通常面向于各种专有系统而非用户,例如交易系统、计费系统、制造管理系统、能源管理系统、电信系统,等等。
本发明实施例提供的技术方案适用于各种地址映射过程。例如,数据维护场景、数据访问场景、垃圾回收场景中的地址映射过程。这些场景中,常常会出现并发访问的现象,导致B+树的业务负载过大。
下面结合以下实施例对地址映射方法的执行过程进行说明。
图1为本发明实施例提供的一种地址映射方法的流程图。如图1所示,该地址映射方法包括如下步骤:
101、响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址。
102、以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与所述数据逻辑地址对应的线性地址。
103、以线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址。
104、在B+树中,从节点物理地址指向的第一目标叶子节点中,获取与数据逻辑地址对应的数据物理地址。
105、通过数据物理地址从磁盘中获取待操作数据。
图1示出的地址映射方法中,通过使用满N叉树管理B+树的元数据,降低了B+树的元数据放大,将垃圾回收等业务对B+树的访问量引流至满N叉树中,从而降低垃圾回收等业务对其他正常业务的影响,大大降低B+树的访问量,减轻B+树的业务负载,提高数据管理效率。该方法还有助于在多层树结构中保持各个B+树之间的独立性。并且,该方案采用满N叉树管理B+树的元数据(如线性地址),由于满N叉树无需存储索引值,还大大提高空间利用率,在缓存中获得更快的查找性能,并能优先保证元数据的缓存命中率。
下面结合具体示例说明图1示出的地址映射方法的具体执行过程。
首先,101中,响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址。
其中,数据操作请求中包括用于指示待操作数据存储位置的数据逻辑地址。实际应用中,以块存储系统为例,待操作数据的数据逻辑地址包括但不限于:待操作数据的卷地址(volume id)和逻辑区块偏移地址(Logical Block Address,LBA)。其中,逻辑区块偏移地址是用于描述存储设备中数据所在区块的通用机制,通常用于硬盘这类辅助记忆设备。可以理解的是,逻辑区块偏移地址可以理解为某个数据块的地址或者某个地址所指向的数据块。另一可选示例中,待操作数据的数据逻辑地址比如是数据偏移地址(offset),该数据偏移地址可作为在内存缓存中查找待操作数据的索引值。
进而,解析出待操作数据的数据逻辑地址之后,以数据逻辑地址作为B+树中的索引值,通过满N叉树所管理的元数据(例如指向各个树节点的节点物理地址),逐层查询B+树中与数据逻辑地址对应的数据物理地址。
实际应用中,B+树中的节点均可称为B+树的树节点。B+树的树节点包括叶子节点和中间节点。以多层B+树为例,叶子节点为处于最底层的树节点,中间节点为处于最顶层到次底层的树节点。其中,根节点为处于最顶层的中间节点。
本发明实施例中,与数据逻辑地址对应的数据物理地址存储于B+树的叶子节点中。为区分,该叶子节点称为第一目标叶子节点。
值得说明的是,为区分不同物理地址,基于物理地址的用途对物理地址进行区别命名,将用于指示待操作数据在磁盘中所处存储位置的物理地址称为数据物理地址,将指示树节点在磁盘中所处存储位置的物理地址称为节点物理地址。实际应用中,各种物理地址的称谓并不受本发明限制。
区别于目前的B+树,本实施例中,B+树的树节点采用线性地址记录子节点地址,以减少B+树的元数据放大现象,降低元数据所占空间。实际应用中,B+树中所有树节点的子节点地址均采用线性地址表示,并将指向各个树节点的节点物理地址按照线性地址的顺序存储到满N叉树中,也即:指向B+树中各个树节点的节点物理地址以线性连续的方式存储于满N叉树的叶子节点(为区别,该叶子节点称为第二目标叶子节点)中。具体地,指向第一目标叶子节点的节点物理地址以线性连续的方式存储于满N叉树的第二目标叶子节点中。
对于多层B+树而言,不同树节点中的线性地址作用不同。以图2示出的三层B+树为例,在图2中,从上至下来看,level表示树的层级。在图2中,第一层节点(即level2)为根节点、第二层节点(即level1)为中间节点、第三层节点(即level0)为叶子节点。树节点中存储有各个树节点对应的索引值(key)和线性地址(ptr)。其中,可选地,根节点中存储的ptr为指向对应中间节点的线性地址,中间节点中存储的ptr为指向对应叶子节点的线性地址。进一步可选地,为了降低B+树的业务压力,上述ptr都会作为在满N叉树中的索引值,以通过满N叉树来分担B+树的业务处理量。
例如,在图2中,B+树的各个叶子节点中存储有各自对应的索引值(key)和数据物理地址(addr)。其中,图2示出的B+树可以为图3示出的二层B+树结构中的一个第二层B+树。
具体而言,以数据逻辑地址作为B+树中的索引值,通过满N叉树所管理的元数据,逐层查询B+树中与数据逻辑地址对应的数据物理地址,可以实现为:
102中,以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与数据逻辑地址对应的线性地址;
103中,以线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址;
104中,在B+树中,从节点物理地址指向的第一目标叶子节点中,获取与数据逻辑地址对应的数据物理地址。
实际上,B+树的查找方式是从上到下执行的,即需要对B+树进行层层查找,对于多层B+树而言,即需要从根节点开始到叶子节点进行层层查找。其中,每一树节点的访问过程都需要到满N叉树中查询用于访问该树节点的节点物理地址。实际应用中,指向所述第一目标叶子节点的节点物理地址存储在满N叉树的其中一个叶子节点(为区分,该叶子节点称为第二目标叶子节点)中。
上述步骤中,以多层B+树为例,指向B+树中子节点的线性地址即是该中间节点所存储的指向下一层节点的线性地址。实际上,B+树中各个树节点地址均采用线性地址表示,这些线性地址由满N叉树管理。访问各个树节点时,需要基于线性地址在满N叉树中查询到对应的节点物理地址,进而,通过节点物理地址访问磁盘得到各个树节点所存储的内容数据。
假设B+树的中间节点包括根节点,基于此,以数据逻辑地址作为B+树中的索引值,在B+树的根节点中查询指向下一层中间节点(即该根节点的子节点)的线性地址。
进而,通过满N叉树中存储的索引关系,查询到该线性地址对应的节点物理地址,该节点物理地址即指向下一层中间节点的节点物理地址。通过该指向下一层中间节点的节点物理地址访问磁盘,以获取该下一层(即当前层)中间节点的内容数据,并通过索引值(即数据逻辑地址)从当前层中间节点的内容数据中查找指向再下一层中间节点(即当前层中间节点的子节点)的线性地址。
循环上述查找过程(即步骤102至103),直到从某一层中间节点的内容数据中查找到指向第一目标叶子节点的线性地址,并通过该线性地址在满N叉树中查询到该线性地址对应的节点物理地址,该节点物理地址即指向第一目标叶子节点的节点物理地址。从而,在B+树中,从该节点物理地址指向的第一目标叶子节点中,获取与数据逻辑地址对应的数据物理地址。
举例来说,假设块存储系统中采用二层B+树结构。假设第一层B+树用于管理多个数据卷。假设每一数据卷对应于一个卷属性,每一数据卷对应的卷属性包括指向下一层B+树的线性地址。为区别,本发明称该线性地址为第一线性地址。可选地,在第二层B+树中,每一数据卷均采用独立的B+树管理,以保证各个数据卷相互独立,减少后续维护开销。
基于上述假设,下面结合图3示出的二层B+树结构,说明102的具体执行过程。102中,以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与数据逻辑地址对应的线性地址,可以具体实现为:
从数据逻辑地址中解析出待操作数据的卷地址和逻辑区块偏移地址;以卷地址作为第一层B+树中的索引值,在第一层B+树中查找卷地址对应的数据卷,以获得该数据卷的卷属性;基于逻辑区块偏移地址,在第一线性地址指向的第二层B+树的中间节点中,查询与数据逻辑地址对应的线性地址。
其中,这里下一层树节点(即子节点)包括第二层B+树的中间节点以及第二目标叶子节点。为区别,本实施例将指向下一层树节点的线性地址称为第二线性地址。第二线性地址用于在满N叉树中查询存储有节点物理地址的第二目标叶子节点,具体查询过程见103的具体实现方式。
上述步骤中,例如,响应于用户对数据卷的访问请求,从该访问请求中获取数据卷的数据逻辑地址,再从数据逻辑地址中解析出该数据卷的卷地址和逻辑区块偏移地址(LBA)。当然,卷地址也可以是卷标识(volume id)。
进而,以图3示出的二层B+树结构为例,利用卷地址作为第一层B+树中的索引值,在第一层B+树中查找该卷地址对应的数据卷,从而得到该数据卷的卷属性,并确定该数据卷对应的卷属性中包括的指向下一层B+树的第一线性地址。假设该第一线性地址为指向第二层B+树2的线性地址(即ptr2),基于此,以LBA为索引值,在ptr2指向的第二层B+树2中,从根节点开始,查询指向根节点的下一层子节点的线性地址。
实际应用中,除了上文介绍的目标叶子节点外,访问B+树的其他树节点时,假设在Cache中未命中某一树节点,即未直接在Cache中查询到该树节点,则此情况下,也需要在满N叉树中查询与线性地址对应的节点物理地址,以便通过节点物理地址访问该树节点。
进而,103中,以与数据逻辑地址对应的线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址。
其中,基于上文介绍可知,节点物理地址用于访问磁盘数据,以获取B+树中各个树节点的内容数据。以访问第一目标叶子节点为例,指向第一目标叶子节点的节点物理地址,即满N叉树中与指向该第一目标叶子节点的线性地址对应的节点物理地址。其中,与该线性地址对应的节点物理地址存储于满N叉树的叶子节点(即第二目标叶子节点)中。
值得说明的是,本发明实施例中,满N叉树中并不存储索引值。实际上,满N叉树的索引值体现在满N叉树的线性连续存储关系。简单来说,就是节点物理地址会根据对应的线性地址(即索引值)存储至该线性地址对应的存储空间。可选地,将指向B+树中各个树节点的节点物理地址以线性连续的方式存储于满N叉树的各个第二目标叶子节点中。
这里,将指向B+树中各个树节点的节点物理地址以线性连续的方式存储于满N叉树的各个第二目标叶子节点中的具体实现方式见下文实施例,此处不展开。
以图4示出的三层满N叉树为例,在图4中,level表示树的层级,从下至上来看层级依次递增。blkid表示在当前层级中第几个数据块。具体地,不同层级中,数据块相互独立,同一个层级中,数据块的编号可以跨越不同的父节点。在图4中,level2中的节点为根节点、level1中的节点为中间节点、level0中的节点为叶子节点。
实际上,满N叉树的树节点中存储有指向各个子节点的节点物理地址(addr)。例如,在图4中,根节点中存储的addr为指向对应的下一层子节点的节点物理地址,下一层子节点中存储的addr为指向对应第二目标叶子节点的节点物理地址。这里指向第二目标叶子节点的节点物理地址也可称为第二目标叶子节点的块指针。
实际应用中,通过第二目标叶子节点的块指针,可以从磁盘加载该第二目标叶子节点,并从该第二目标叶子节点中读取其存储的映射表项。在本发明实施例中,该映射表项即为指向第一目标叶子节点的节点物理地址。
具体而言,103中,以与数据逻辑地址对应的线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址,可以实现为:
以线性地址作为满N叉树中的索引值,根据索引值计算得到节点索引信息;通过节点索引信息查找第二目标叶子节点的内容数据,并从第二目标叶子节点的内容数据中获取节点物理地址。
其中,节点索引信息包括叶子节点地址或父节点地址。叶子节点地址为指向第二目标叶子节点所处位置的索引信息,叶子节点地址包括第二目标叶子节点所处层级、以及第二目标叶子节点在所处层级中所处的数据块。父节点地址为指向第二目标叶子节点的父节点所处位置的索引信息,父节点地址包括父节点所处层级、以及父节点在所处层级中所处的数据块。实际应用中,数据块也可以实现为元数据块。
实际上,满N叉树中的查询过程是逐层向上的,也即对指向第一目标叶子节点的节点物理地址的查询是上述逐层向上的遍历过程。具体地,先从内存缓存中加载的叶子节点开始查询,直到找到所需的第二目标叶子节点,或者逐层向上达到根节点。
在图4中,可采用(level,blkid)在该满N叉树中寻址,其中level表示节点所在层级,blkid表示节点所在数据块。例如,第二目标叶子节点在满N叉树中所处位置可根据从B+树中得到的与数据逻辑地址对应的线性地址直接计算得到,其中,第二目标叶子节点在满N叉树中所处位置包括:该第二目标叶子节点所在的数据块(blkid)、以及该第二目标叶子节点在该数据块内的偏移地址(offset)。具体地,该第二目标叶子节点所在的数据块可以是线性地址(ptr)除以每个数据块包含的地址指针数,该第二目标叶子节点在该数据块内的偏移地址可以是线性地址(ptr)除以每个数据块包含的地址指针数得到的余数,与地址指针大小的乘积。
例如,假设指向第一目标叶子节点的节点物理地址存储于满N叉树的第二目标叶子节点中。在图4中,每个叶子节点能容纳地址指针数为X,每个中间节点能容纳地址数量为Y。基于上述假设,若从B+树中得到的与数据逻辑地址对应的线性地址为0,则基于上述计算原理可以计算得到,该节点物理地址存储在level为0且blkid为0的数据块所存储的第一个叶子节点中。若从B+树中得到的线性地址为X+1,则基于上述计算原理可以计算得到,该节点物理地址存储在level为0且blkid为1的数据块所存储的第二个叶子节点中。
此外,在图4示出的满N叉树中,父节点地址以及子节点在父节点中的偏移量也可以根据子节点地址通过以下公式计算出来,具体为:
父节点所处层级=子节点层级+1;
父节点所处数据块=子节点所处数据块/每个数据块包含的地址指针数;
父节点在所处数据块中的偏移量=(子节点所处数据块MOD每个数据块包含的地址指针数)*地址指针大小。
实际应用中,除了指向第一目标叶子节点的节点物理地址外,还可通过上述方法获取B+树中其他树节点的节点物理地址,如指向第一目标叶子节点的父节点的节点物理地址。
介绍完各个树节点的节点物理地址在满N叉树中所处存储位置的查询方式之后,仍以第一目标叶子节点为例,下面结合具体示例介绍基于满N叉树来获取指向第一目标叶子节点的节点物理地址的具体方式。
为提高数据查询效率,可从满N叉树的叶子节点(即第二目标叶子节点)开始查询指向第一目标叶子节点的节点物理地址。具体地,需要先计算节点索引信息,再基于节点索引信息在缓存中查询节点内容。区别于B+树的查找方式,满N叉树中可直接计算出叶子节点的节点索引信息(即叶子节点地址),若未命中再计算父节点的节点索引信息(即父节点地址)。简单来说,若未查询到叶子节点的内容数据,则访问该叶子节点的父节点,从而,在内存缓存中逐层向上查询满N叉树中叶子节点的内容数据所处的存储位置。当然,除了内存缓存之外,还可上述数据查询方式应用于其他存储单元,此处并不限定。
在一可选实施例中,假设根据索引值计算得到叶子节点地址。假设叶子节点地址包括第二目标叶子节点所处层级、以及第二目标叶子节点在所处层级中所处的数据块。基于上述假设,当节点索引信息包括叶子节点地址时,103中,通过节点索引信息查找第二目标叶子节点的内容数据,可以具体实现为:
在内存缓存中查找叶子节点地址对应的第二目标叶子节点,并从内容缓存中加载第二目标叶子节点的内容数据。
从而,从上述步骤加载的第二目标叶子节点的内容数据中,获取与该线性地址对应的节点物理地址。这里,与该线性地址对应的节点物理地址可以是指向第一目标叶子节点的节点物理地址。
基于上文介绍满N叉树的存储原理,由于线性地址之间存在线性连续特性,因而,后续查询与线性地址对应的数据物理地址时,可通过线性地址直接计算出对应的存储位置,从而,直接访问该存储位置获取对应的节点物理地址。
基于这一原理,上述步骤中,根据线性地址计算得到叶子节点地址,该叶子节点地址包括第二目标叶子节点所处层级、以及第二目标叶子节点在所处层级中所处的数据块。进而,通过该叶子节点地址在内存缓存中查找第二目标叶子节点的内容数据,并从第二目标叶子节点的内容数据中获取指向第一目标叶子节点的节点物理地址。这样,由于无需存储索引值,可减少数据访问时所占用的空间,降低临时同步区的大小,从而提高数据访问效率。
实际应用中,为节省内存空间,会将满N叉树的部分分页加载到内存缓存中。具体地,可根据使用热度以及使用时间确定加载到内存缓存中的分页。若叶子节点地址对应的第二目标叶子节点所处分页未被加载到内存缓存中,则在内存缓存中将无法查找到该第二目标叶子节点。当然,实际应用中,还可能因为其他原因,在内存缓存中无法查找到该第二目标叶子节点,例如地址更新、加载分页损坏等。
另一可选实施例中,若在内存缓存中没有查找到叶子节点地址,此情况下,还可逐层向上查询指向第二目标叶子节点的节点物理地址。实际上,针对B+树中的其他树节点也可采用此种追层向上查询的方式,以获取树节点的节点物理地址。
具体而言,假设根据索引值计算得到父节点地址。假设父节点地址包括父节点所处层级、以及父节点在所处层级中所处的数据块。基于上述假设,当节点索引信息包括父节点地址时,103中,通过节点索引信息查找第二目标叶子节点的内容数据,也可以具体实现为:
查找父节点地址对应的父节点;从父节点地址对应的父节点中,查询指向第二目标叶子节点的磁盘物理地址;通过第二目标叶子节点的磁盘物理地址,从磁盘中加载第二目标叶子节点的内容数据,并从第二目标叶子节点的内容数据中获取节点物理地址。
实际应用中,指向B+树中其他树节点的节点物理地址的获取方式,与上文介绍的指向第一目标叶子节点的节点物理地址的获取方式类似,此处不再赘述。
基于上述实现过程可知,上述逐层向上查询节点物理地址的遍历过程是递归的,直到在内存缓存中找到所需的第二目标叶子节点,或者达到根节点。根节点的块指针记录在元数据内。
基于上文介绍可知,若第二目标叶子节点不在内存缓存中,假设该第二目标叶子节点在内存缓存中对应的索引节点的层级为n,此情况下,满N叉树的查询操作复杂度为查询操作为O(n)。无论目标叶子节点是否在内存缓存中,插入操作均为O(1)。当插入一组数据地址映射关系时,满N叉树的元数据放大效益为树高。
其中,满N叉树的树高主要取决于索引值(即由B+树得到的与数据逻辑地址对应的线性地址)的跨度,为O(logNs)级别,N为满N叉树的最大叉数,s为索引值的跨度。由于索引值的空间跨度越大,线性地址分布越稀疏,B+树的性能相较满N叉树的性能更好;而索引值的空间跨度越小,线性地址分布越密集,满N叉树性能相较B+树的性能更佳。因此,实际应用中,满N叉树适合空间跨度小,分布连续的场景。通过使用满N叉树,无需保存线性地址即可存储与节点物理地址的映射关系,大大减少了元数据所占空间,提升数据管理性能和查询性能。
进而,循环102至103,直到查询到指向第一目标叶子节点的节点物理地址之后,104中,在B+树中,从节点物理地址指向的第一目标叶子节点中,获取与数据逻辑地址对应的数据物理地址。
例如,通过指向第一目标叶子节点的节点物理地址,从磁盘中加载第一目标叶子节点的内容数据,并从第一目标叶子节点的内容数据中获取与数据逻辑地址对应的数据物理地址。
最终,105中,通过与数据逻辑地址对应的数据物理地址从磁盘中获取待操作数据。在一些可选示例中,基于与数据逻辑地址对应的数据物理地址,从磁盘中加载该数据物理地址指向的存储块,从存储块中读取待操作数据。
上述步骤101至105的执行过程中,使用满N叉树管理B+树的元数据,即在满N叉树中采用线性连续方式记录B+树中指向叶子节点的节点物理地址,降低了B+树的元数据放大,将垃圾回收等部分业务对B+树的访问量引流至满N叉树,不仅大大降低B+树的访问量,减轻B+树中的业务负载,提高数据管理效率,还有助于在多层树结构中保持各个B+树之间的独立性;并且,该方案采用满N叉树管理B+树的元数据(如线性地址),提高空间利用率,在缓存中获得更快的查找性能,并能优先保证元数据的缓存命中率。
在上述或下述实施例中,将指向B+树中各个树节点的节点物理地址以线性连续的方式存储于满N叉树的各个第二目标叶子节点中,可以实现为:
对B+树中的一个待存储树节点,以满N叉树中一个未使用的线性地址,作为待存储树节点的索引值;在待存储树节点存储到磁盘之后,获取待存储树节点对应的磁盘物理地址,作为指向待存储树节点的节点物理地址;在满N叉树中,将待存储树节点的节点物理地址存储到待存储树节点的索引值对应的存储空间中。
实际应用中,满N叉树中可采用线性地址编号(例如64位ID地址)对各个层级的节点进行排序,并预留未插入索引值对应的树节点,以便后续维护线性地址到节点物理地址的对应关系。可选地,修改满N叉树中待更新树节点的线性地址与节点物理地址的索引关系,以更新所述B+树中的元数据。
另外,值得说明的是,满N叉树可用于管理一个或多个B+树的元数据。例如,满N叉树可用于管理图3示出的各个第二层B+树中的元数据,以提高数据管理性能,进一步提升数据查询效率。
在上述或下述实施例中,可选地,为减少用户IO读写、垃圾回收等操作对B+树造成的访问业务负载,还可直接更新满N叉树中线性地址与节点物理地址的对应关系,以管理维护B+树的元数据。从而,使用满N叉树分流垃圾回收等业务,进一步降低B+树的业务负载。
实际应用中,上文介绍的修改满N叉树中待更新树节点的线性地址与节点物理地址的索引关系的具体实现方式,包括以下之一:在满N叉树中,删除与原线性地址对应的叶子节点所存储的原节点物理地址;在满N叉树中,将与原线性地址对应的叶子节点所存储的原节点物理地址修改为目标节点物理地址;在满N叉树的树节点中,修改指向子节点的节点物理地址。
例如,假设B+树的树节点发生搬移,即该树节点的节点物理地址发生变动,而该树节点的线性地址不变。此情况下,可在满N叉树中,将与原线性地址对应的叶子节点所存储的原节点物理地址修改为目标节点物理地址,以实现B+树的树节点的搬移,避免引发B+树的变动。假设满N叉树的树节点发生搬移,此情况下,可在满N叉树的树节点中,修改指向子节点的节点物理地址,这种修改也不会引起B+树的变动。
基于上述原理可知,在上文介绍的二层B+树结构中,通过满N叉树对B+树元数据的管理,使得各个第二层B+树的变动不会扩散至其他第二层B+树上。当第二层B+树发生变动时,也不会引发第一层B+树的变动。上述变动均可通过修改满N叉树实现,因此,该二层B+树结构中各个B+树之间可保持相互独立,大大降低数据维护效率,提升数据管理性能。可以理解的是,除了上述示出的二层B+树结构外,实际上基于本发明介绍的原理,还可构建出三层B+树结构或者三层以上的其他B+树结构,此处不再赘述。
以下将详细描述本发明的一个或多个实施例的地址映射装置。本领域技术人员可以理解,这些地址映射装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图5为本发明一实施例提供的地址映射装置的结构示意图。如图5所示,该地址映射装置包括:
解析模块501,用于响应用户输入的数据操作请求,从数据操作请求中解析出待操作数据的数据逻辑地址;
查询模块502,用于以数据逻辑地址作为B+树中的索引值,在B+树的中间节点中查询与数据逻辑地址对应的线性地址;其中,该线性地址指向B+树的中间节点的子节点,与数据逻辑地址对应的数据物理地址存储于B+树的第一目标叶子节点中,指向第一目标叶子节点的节点物理地址以线性连续的方式存储于满N叉树中;以线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址;在B+树中,从节点物理地址指向的第一目标叶子节点中,获取与数据逻辑地址对应的数据物理地址;
获取模块503,用于通过数据物理地址从磁盘中获取待操作数据。
可选地,所述节点物理地址存储在所述满N叉树的第二目标叶子节点中。
查询模块502,以所述线性地址作为所述满N叉树中的索引值,在所述满N叉树中查询与所述线性地址对应的所述节点物理地址时,具体用于:
以所述线性地址作为满N叉树中的索引值,根据所述索引值计算得到节点索引信息,其中,所述节点索引信息包括叶子节点地址或父节点地址,叶子节点地址为指向所述第二目标叶子节点所处位置的索引信息,父节点地址为指向所述第二目标叶子节点的父节点所处位置的索引信息;
通过所述节点索引信息查找所述第二目标叶子节点的内容数据,并从所述第二目标叶子节点的内容数据中获取所述节点物理地址。
其中,可选地,若所述节点索引信息包括叶子节点地址,则查询模块502,通过所述节点索引信息查找所述第二目标叶子节点的内容数据时,具体用于:
在内存缓存中查找所述叶子节点地址对应的所述第二目标叶子节点,并从内容缓存中加载所述第二目标叶子节点的内容数据。
或者,可选地,若所述节点索引信息包括父节点地址,则查询模块502,通过所述节点索引信息查找所述第二目标叶子节点的内容数据时,具体用于:
查找所述父节点地址对应的父节点;
从所述父节点地址对应的父节点中,查询指向所述第二目标叶子节点的磁盘物理地址;
通过所述第二目标叶子节点的磁盘物理地址,从磁盘中加载所述第二目标叶子节点的内容数据。
可选地,数据逻辑地址包括待操作数据的卷地址和逻辑区块偏移地址。
查询模块502,以所述数据逻辑地址作为B+树中的索引值,在所述B+树的中间节点中查询与数据逻辑地址对应的线性地址时,具体用于:
从数据逻辑地址中解析出待操作数据的卷地址和逻辑区块偏移地址;
以卷地址作为第一层B+树中的索引值,在第一层B+树中查找卷地址对应的数据卷,以获得该数据卷的卷属性,其中,第一层B+树用于管理多个数据卷,每一数据卷对应于一个卷属性,每一数据卷对应的卷属性包括指向下一层B+树的第一线性地址;
基于逻辑区块偏移地址,在第一线性地址指向的第二层B+树的中间节点中,查询与数据逻辑地址对应的第二线性地址。其中,第二线性地址用于在满N叉树中查找存储有节点物理地址的第二目标叶子节点。
可选地,B+树包括树节点,B+树的树节点包括中间节点和叶子节点。
该装置还包括存储模块,用于将指向所述B+树中各个树节点的节点物理地址以线性连续的方式存储于满N叉树的各个第二目标叶子节点中。
可选地,存储模块将指向所述B+树中各个树节点的节点物理地址以线性连续的方式存储于满N叉树的各个树节点中时,具体用于:
对B+树中的一个待存储树节点,以满N叉树中一个未使用的线性地址,作为待存储树节点的索引值;
在待存储树节点存储到磁盘之后,获取待存储树节点对应的磁盘物理地址,作为指向待存储树节点的节点物理地址;
在满N叉树中,将待存储树节点的节点物理地址存储到待存储树节点的索引值对应的存储空间中。
可选地,装置还包括维护模块,用于修改满N叉树中待更新树节点的线性地址与节点物理地址的索引关系,以更新B+树中的元数据。
其中,可选地,维护模块在修改满N叉树中待更新树节点的线性地址与节点物理地址的索引关系,以更新B+树中的元数据时,具体用于实现以下方法之一:
在满N叉树中,删除与原线性地址对应的叶子节点所存储的原节点物理地址;
在满N叉树中,将与原线性地址对应的叶子节点所存储的原节点物理地址修改为目标节点物理地址;
在满N叉树的树节点中,修改指向子节点的节点物理地址。
可选地,数据逻辑地址包括待操作数据的卷地址和逻辑区块偏移地址;
查询模块502以线性地址作为满N叉树中的索引值,在满N叉树中查询与线性地址对应的节点物理地址时,具体用于:
根据线性地址计算得到叶子节点地址,其中,叶子节点地址为指向第二目标叶子节点所处位置的索引信息,叶子节点地址包括第二目标叶子节点所处层级、以及第二目标叶子节点在所处层级中所处的数据块;
在内存缓存中查找叶子节点地址对应的第二目标叶子节点,并从第二目标叶子节点中获取节点物理地址。
图5所示的地址映射装置可以实现前述图2至图4所示实施例中提供的方法,本实施例未详细描述的部分,可参考前述实施例的相关说明,在此不再赘述。
在一个可能的设计中,上述图5所示的地址映射装置的结构可实现为一电子设备。如图6所示,该电子设备可以包括:处理器601、存储器602。其中,存储器602上存储有可执行代码,当所述可执行代码被处理器601执行时,至少使处理器601可以实现如前述图2所示实施例中提供的地址映射方法。
其中,该电子设备的结构中还可以包括通信接口603,用于与其他设备通信。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行前述图2所示实施例中提供的地址映射方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的各个模块可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对本发明做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种地址映射方法,其特征在于,包括:
响应用户输入的数据操作请求,从所述数据操作请求中解析出待操作数据的数据逻辑地址;
以所述数据逻辑地址作为B+树中的索引值,在所述B+树的中间节点中查询与所述数据逻辑地址对应的线性地址;其中,所述线性地址指向所述中间节点的子节点,与所述数据逻辑地址对应的数据物理地址被存储于所述B+树的第一目标叶子节点中,指向所述第一目标叶子节点的节点物理地址以线性连续的方式被存储于满N叉树中;
以所述线性地址作为所述满N叉树中的索引值,在所述满N叉树中查询与所述线性地址对应的所述节点物理地址;
在所述B+树中,从所述节点物理地址指向的所述第一目标叶子节点中,获取所述数据物理地址;
通过所述数据物理地址从磁盘中获取所述待操作数据。
2.根据权利要求1所述的方法,其特征在于,所述节点物理地址存储在所述满N叉树的第二目标叶子节点中;
所述以所述线性地址作为所述满N叉树中的索引值,在所述满N叉树中查询与所述线性地址对应的所述节点物理地址,包括:
以所述线性地址作为满N叉树中的索引值,根据所述索引值计算得到节点索引信息,其中,所述节点索引信息包括叶子节点地址或父节点地址,叶子节点地址为指向所述第二目标叶子节点所处位置的索引信息,父节点地址为指向所述第二目标叶子节点的父节点所处位置的索引信息;
通过所述节点索引信息查找所述第二目标叶子节点的内容数据,并从所述第二目标叶子节点的内容数据中获取所述节点物理地址。
3.根据权利要求2所述的方法,其特征在于,当所述节点索引信息包括叶子节点地址时,所述通过所述节点索引信息查找所述第二目标叶子节点的内容数据,包括:
在内存缓存中查找所述叶子节点地址对应的所述第二目标叶子节点,并从内容缓存中加载所述第二目标叶子节点的内容数据。
4.根据权利要求2所述的方法,其特征在于,当所述节点索引信息包括父节点地址时,所述通过所述节点索引信息查找所述第二目标叶子节点的内容数据,包括:
查找所述父节点地址对应的父节点;
从所述父节点地址对应的父节点中,查询指向所述第二目标叶子节点的磁盘物理地址;
通过所述第二目标叶子节点的磁盘物理地址,从磁盘中加载所述第二目标叶子节点的内容数据。
5.根据权利要求1所述的方法,其特征在于,所述数据逻辑地址包括所述待操作数据的卷地址和逻辑区块偏移地址;
所述以所述数据逻辑地址作为B+树中的索引值,在所述B+树的中间节点中查询与所述数据逻辑地址对应的线性地址,包括:
从所述数据逻辑地址中解析出所述待操作数据的卷地址和逻辑区块偏移地址;
以所述卷地址作为第一层B+树中的索引值,在所述第一层B+树中查找所述卷地址对应的数据卷,以获得该数据卷的卷属性,其中,所述第一层B+树用于管理多个数据卷,每一数据卷对应于一个卷属性,每一数据卷对应的卷属性包括指向下一层B+树的第一线性地址;
基于所述逻辑区块偏移地址,在所述第一线性地址指向的第二层B+树的中间节点中,查询与所述数据逻辑地址对应的第二线性地址。
6.根据权利要求1所述的方法,其特征在于,所述B+树包括树节点,所述B+树的树节点包括中间节点和叶子节点;
所述方法还包括:
将指向所述B+树中各个树节点的节点物理地址以线性连续的方式存储于所述满N叉树的各个第二目标叶子节点中。
7.根据权利要求6所述的方法,其特征在于,所述将指向所述B+树中各个树节点的节点物理地址以线性连续的方式存储于所述满N叉树的各个树节点中,包括:
对所述B+树中的一个待存储树节点,以所述满N叉树中一个未使用的线性地址,作为所述待存储树节点的索引值;
在所述待存储树节点存储到磁盘之后,获取所述待存储树节点对应的磁盘物理地址,作为指向所述待存储树节点的节点物理地址;
在所述满N叉树中,将所述待存储树节点的节点物理地址存储到所述待存储树节点的索引值对应的存储空间中。
8.根据权利要求6所述的方法,其特征在于,还包括:
修改所述满N叉树中待更新树节点的线性地址与节点物理地址的索引关系,以更新所述B+树中的元数据。
9.一种地址映射装置,其特征在于,所述装置包括:
解析模块,用于响应用户输入的数据操作请求,从所述数据操作请求中解析出待操作数据的数据逻辑地址;
查询模块,用于以所述数据逻辑地址作为B+树中的索引值,在所述B+树的中间节点中查询与所述数据逻辑地址对应的线性地址;其中,所述线性地址指向所述中间节点的子节点,与所述数据逻辑地址对应的数据物理地址被存储于所述B+树的第一目标叶子节点中,指向所述第一目标叶子节点的节点物理地址以线性连续的方式被存储于满N叉树中;以所述线性地址作为所述满N叉树中的索引值,在所述满N叉树中查询与所述线性地址对应的所述节点物理地址;在所述B+树中,从所述节点物理地址指向的所述第一目标叶子节点中,获取所述数据物理地址;
获取模块,用于通过所述数据物理地址从磁盘中获取所述待操作数据。
10.一种电子设备,其特征在于,包括:处理器和存储器,其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至8中任一项所述的地址映射方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110697500.5A CN113392040B (zh) | 2021-06-23 | 2021-06-23 | 一种地址映射方法、装置、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110697500.5A CN113392040B (zh) | 2021-06-23 | 2021-06-23 | 一种地址映射方法、装置、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113392040A CN113392040A (zh) | 2021-09-14 |
CN113392040B true CN113392040B (zh) | 2023-03-21 |
Family
ID=77623506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110697500.5A Active CN113392040B (zh) | 2021-06-23 | 2021-06-23 | 一种地址映射方法、装置、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113392040B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116880780A (zh) * | 2023-09-08 | 2023-10-13 | 合肥康芯威存储技术有限公司 | 树的数据写入方法、装置、机器可读介质及存储器 |
CN117952082A (zh) * | 2024-03-25 | 2024-04-30 | 冠骋信息技术(苏州)有限公司 | Plc地址解析方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282605B1 (en) * | 1999-04-26 | 2001-08-28 | Moore Computer Consultants, Inc. | File system for non-volatile computer memory |
CN103995855A (zh) * | 2014-05-14 | 2014-08-20 | 华为技术有限公司 | 存储数据的方法和装置 |
CN111858590A (zh) * | 2020-07-16 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种存储系统元数据组织方法、系统、终端及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6859808B1 (en) * | 2001-05-31 | 2005-02-22 | Oracle International Corporation | Mapping logical row identifiers for primary B+tree-like structures to physical row identifiers |
US7697518B1 (en) * | 2006-09-15 | 2010-04-13 | Netlogic Microsystems, Inc. | Integrated search engine devices and methods of updating same using node splitting and merging operations |
US7937419B2 (en) * | 2008-06-26 | 2011-05-03 | Tatu Ylonen Oy | Garbage collection via multiobjects |
CN103019953B (zh) * | 2012-12-28 | 2015-06-03 | 华为技术有限公司 | 一种元数据的构建系统及其方法 |
US10698628B2 (en) * | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
CN110532201B (zh) * | 2019-08-23 | 2021-08-31 | 北京浪潮数据技术有限公司 | 一种元数据处理方法及装置 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
CN111309258B (zh) * | 2020-02-14 | 2021-10-15 | 苏州浪潮智能科技有限公司 | 一种b+树的存取方法、装置和计算机可读存储介质 |
CN111522507B (zh) * | 2020-04-14 | 2021-10-01 | 中山大学 | 一种低延迟的文件系统地址空间管理方法、系统及介质 |
-
2021
- 2021-06-23 CN CN202110697500.5A patent/CN113392040B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282605B1 (en) * | 1999-04-26 | 2001-08-28 | Moore Computer Consultants, Inc. | File system for non-volatile computer memory |
CN103995855A (zh) * | 2014-05-14 | 2014-08-20 | 华为技术有限公司 | 存储数据的方法和装置 |
CN111858590A (zh) * | 2020-07-16 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种存储系统元数据组织方法、系统、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113392040A (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5996088B2 (ja) | 暗号ハッシュ・データベース | |
KR100856245B1 (ko) | 파일 시스템 장치 및 그 파일 시스템의 파일 저장 및 파일 탐색 방법 | |
CN106294190B (zh) | 一种存储空间管理方法及装置 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN113392040B (zh) | 一种地址映射方法、装置、设备 | |
CN113961514B (zh) | 数据查询方法及装置 | |
CN116450656B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
US10678772B2 (en) | Sparse infrastructure for tracking ad-hoc operation timestamps | |
CN115510092B (zh) | 一种基于布谷鸟过滤器的近似成员查询优化方法 | |
CN113901279A (zh) | 一种图数据库的检索方法和装置 | |
US20110153677A1 (en) | Apparatus and method for managing index information of high-dimensional data | |
CN113821477A (zh) | 一种元数据缓存方法、系统、设备以及介质 | |
CN116975006A (zh) | 基于磁盘缓存及b树索引的数据去重方法、系统及介质 | |
CN111104435B (zh) | 一种元数据组织方法、装置、设备及计算机可读存储介质 | |
CN111881064A (zh) | 一种全闪存储系统中访问请求的处理方法、装置及设备 | |
CN118567577B (zh) | 基于分布式块存储的数据访问方法、装置、电子设备 | |
US11829398B2 (en) | Three-dimensional probabilistic data structure | |
CN117743338B (zh) | 一种基于双哈希的关键字匹配方法和装置 | |
CN107066624B (zh) | 数据离线存储方法 | |
CN107122264B (zh) | 海量数据容灾备份方法 | |
CN117785889A (zh) | 一种针对图数据库的索引管理方法及相关设备 | |
CN115017194A (zh) | 一种社区信息处理方法及系统 | |
CN118567577A (zh) | 基于分布式块存储的数据访问方法、装置、电子设备 | |
Markovskyi et al. | Hash search organization in e-dictionaries using block ciphers |
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 |