CN116880780A - 树的数据写入方法、装置、机器可读介质及存储器 - Google Patents
树的数据写入方法、装置、机器可读介质及存储器 Download PDFInfo
- Publication number
- CN116880780A CN116880780A CN202311153310.2A CN202311153310A CN116880780A CN 116880780 A CN116880780 A CN 116880780A CN 202311153310 A CN202311153310 A CN 202311153310A CN 116880780 A CN116880780 A CN 116880780A
- Authority
- CN
- China
- Prior art keywords
- block address
- tree
- data
- writing
- logic block
- 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
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000015654 memory Effects 0.000 title claims description 45
- 238000013507 mapping Methods 0.000 claims abstract description 75
- 238000004590 computer program Methods 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/064—Management of blocks
-
- 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
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
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)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的一种树的数据写入方法,所述数据写入方法包括:对数据写入请求进行解析,得到所述数据写入请求中携带的第一逻辑区块地址和待写入数据;以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点;为待写入数据分配新的物理区块地址,并将所述新的物理区块地址写入到所述目标叶子节点;向所述目标叶子节点对应的存储空间写入所述待写入数据。本发明通过将逻辑区块地址与物理区块地址及映射关系通过B+树进行存储,在对数据进行访问时通过B+树能够很快地查找相应的位置,在面对随机写入的场景时能够有效地提升数据写入的性能。
Description
技术领域
本发明涉及数据存储领域,具体涉及一种树的数据写入方法、装置、机器可读介质及存储器。
背景技术
在FW(Firmware,固件)中,当控制器将每一笔数据写入到Nand Flash(闪存)中,会记录下该数据的LBA(Logical Block Address, 逻辑区块地址)到PBA(Physics BlockAddress,物理区块地址)的映射关系,LBA到PBA映射关系所组成的一张表为L2P(Logicalto Physical,逻辑地址到物理地址)映射表,L2P映射表是存储在闪存中,并且有一部分是存储在RAM中用于提高地址映射的查找速度;如果访问的LBA对应的映射关系不在RAM中,需要从闪存中将L2P表读取到RAM中进行查找。如果主机进行Random Write(随机写入)的操作,由于LBA的不连续会导致产生大量的L2P的映射关系,主机想要查找其中一笔LBA对应的L2P映射关系时会花费很长的时间。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种树的数据写入方法、装置、机器可读介质及存储器,用于解决现有技术存在的问题。
为实现上述目的及其他相关目的,本发明提供一种树的数据写入方法,所述树为B+树,所述B+树包括多个叶子节点,所述数据写入方法包括:
对数据写入请求进行解析,得到所述数据写入请求中携带的第一逻辑区块地址和待写入数据;
以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点;
为待写入数据分配新的物理区块地址,并将所述新的物理区块地址写入到所述目标叶子节点;
向所述目标叶子节点对应的存储空间写入所述待写入数据。
于本发明一实施例中,所述B+树包括多个中间节点,每个所述中间节点指向至少一个叶子节点,在所述中间节点中存储有一级映射表,在所述叶子节点中存储有二级映射表,一级映射表指向二级映射表;以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点的步骤包括:
以所述第一逻辑区块地址为B+树的索引值,在所述B+树的多个中间节点中查找与所述第一逻辑区块地址对应的目标中间节点;
获取所述第一逻辑区块地址在所述目标中间节点中的二级映射表中的第一偏移位置;
以所述第一偏移位置为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一偏移位置对应的目标叶子节点。
于本发明一实施例中,所述第一偏移位置的计算方法包括:
对所述第一逻辑区块地址进行第一取余计算,得到第一余数,并以所述第一余数作为所述第一逻辑区块地址在所述目标二级映射表中的第一偏移位置。
于本发明一实施例中,所述方法还包括:
在将所述新的物理区块地址写入到所述目标叶子节点后,将所述新的物理区块地址和所述逻辑区块地址在所述一级映射表或/和所述二级映射表中进行更新。
于本发明一实施例中,所述方法还包括:
获取第二逻辑区块地址在二级映射表中的第二偏移位置,其中,所述第二逻辑区块地址为在先写入数据的逻辑区块地址;
根据所述第一偏移位置与所述第二偏移位置的大小关系确定所述第一逻辑区块地址与所述第二逻辑区块地址的指向关系。
于本发明一实施例中,所述根据所述第一偏移位置与所述第二偏移位置的大小关系确定所述第一逻辑区块地址与所述第二逻辑区块地址的指向关系的步骤包括:
若所述第一偏移位置大于所述第二偏移位置,则将第一逻辑区块地址指向第二逻辑区块地址对应的二级映射表;
若所述第一偏移位置小于或等于所述第二偏移位置,则将第二逻辑区块地址指向第一逻辑区块地址对应的一级映射表。
于本发明一实施例中,所述方法还包括:
响应于所述目标叶子节点中已存储的关键值的数量大于设定阈值,分裂所述目标叶子节点,并更新所述目标叶子节点的双亲节点中的关键值,以完成数据的写入。
为实现上述目的及其他相关目的,本发明提供一种树的数据写入装置,所述树为B+树,所述B+树包括多个叶子节点,所述数据写入装置包括:
地址解析模块,用于对数据写入请求进行解析,得到所述数据写入请求中携带的第一逻辑区块地址和待写入数据;
地址查找模块,用于以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点;
地址写入模块,用于为待写入数据分配新的物理区块地址,并将所述新的物理区块地址写入到所述目标叶子节点;
数据写入模块,用于向所述目标叶子节点对应的存储空间写入所述待写入数据。
为实现上述目的及其他相关目的,本发明提供一种存储器,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现所述的树的数据写入方法。
为实现上述目的及其他相关目的,本发明提供一个或多个机器可读介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使得计算机执行所述的树的数据写入方法。
如上所述,本发明提供的一种树的数据写入方法、装置、机器可读介质及存储器,具有以下有益效果:
本发明的一种树的数据写入方法,所述树为B+树所述数据写入方法包括:对数据写入请求进行解析,得到所述数据写入请求中携带的第一逻辑区块地址和待写入数据;以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点;为待写入数据分配新的物理区块地址,并将所述新的物理区块地址写入到所述目标叶子节点;向所述目标叶子节点对应的存储空间写入所述待写入数据。本发明通过将逻辑区块地址与物理区块地址及映射关系通过B+树进行存储,在对数据进行访问时通过B+树能够很快地查找到相应的位置,在面对随机写入的场景时能够有效地提升数据写入的性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一示例性的树的数据写入方法实施环境的示意图;
图2为本申请一示例性的B+树的结构示意图;
图3为本申请一示例性的一种树的数据写入方法的流程图;
图4为本申请一示例性的在B+树的多个叶子节点中查询与第一物理区块地址对应的目标叶子节点的方法流程图;
图5为本申请一示例性的在图2的基础上进行数据写入后的示意图;
图6为本申请一示例性的树的数据写入装置的框图;
图7示出了适于用来实现本申请实施例的存储器的计算机系统的结构示意图。
具体实施方式
以下将参照附图和优选实施例来说明本发明的实施方式,本领域技术人员可由本说明书中所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
图1示出根据计算机系统的示意性框图。计算机系统包括主机、控制系统和存储器。在下文以固态硬盘为例进行描述。固态硬盘例如包括图中所示的控制系统和存储器,存储器的存储介质例如为闪存芯片阵列。
控制系统的主机接口连接至主机,以传输指令。主机接口例如是SATA、M.2、mSATA和PCI-E。处理器与主机接口、缓存控制器和存储器控制器128相连接。控制系统中的缓存芯片包括SRAM芯片和DRAM芯片,例如存储L2P映射表。处理器用于实现存储器控制的核心软件层,即FTL(Flash Translation Layer ,闪存转换层),使得操作系统和文件系统能够像访问硬盘一样访问存储器。该FTL还有例如支持所有SLC(Single Level Cell,单层单元)和MLC(Multi-Level Cell,多层单元)、支持坏块管理、损耗均衡、垃圾回收、断电恢复、写平衡技术等特点。FTL的核心功能是地址映射,其中,处理器经由缓存控制器读取缓存芯片以获得L2P映射表,基于L2P映射表将从主机接收到的逻辑地址映射成存储器的物理地址。控制系统的存储器控制器连接至存储器,根据处理器提供的物理地址对存储器的相应存储单元进行数据访问操作。
存储器包括闪存芯片阵列。为了提高数据读写性能,控制系统的存储器控制器可以经由多个通道CH0和CH1对存储器的闪存芯片进行读写。每个通道连接一组闪存芯片。每个闪存芯片包括多个物理块,每个物理块包括多个物理页。对闪存芯片的数据访问操作包括读、写和擦除。由于闪存芯片的物理特性,数据操作的基本单位例如是物理页,擦除操作的基本单位例如是物理块。
在主机执行数据操作时,控制系统从主机接收到指令。控制系统将指令中的逻辑地址映射成物理地址,该物理地址用于表征存储器中的位置,包括通道、物理块和物理页等。在读取操作中,控制系统以物理页为单位读取数据,以及从中获取与逻辑地址相对应的读取数据。在写入操作中,控制系统将指令中的数据生成以物理页为单位的数据,然后以物理页为单位写入到闪存芯片中。在写入操作时,还需要更新L2P映射表。
在上述的计算机系统中,控制系统中的缓存芯片包括SRAM芯片和DRAM芯片。大容量的DRAM芯片可以支持大容量固态硬盘的地址映射,例如,对于1TB的存储芯片阵列,采用1GB的缓存芯片用于存储L2P映射表,二者例如是1:1000的关系。
应该理解,图1中的控制系统的数目仅仅是示意性的。根据实际需要,可以具有任意数目的控制系统和存储器。
首先,先介绍本发明实施例中涉及到的几个概念,以辅助理解上下文内容。
逻辑区块地址,是指在计算机体系结构中是指应用程序角度看到的内存单元(memorycell)、存储单元(storage element)、网络主机(network host)的地址。逻辑地址往往不同于物理区块地址,通过地址翻译器(address translator)或映射函数可以把逻辑区块地址转化为物理区块地址。
实际上,逻辑区块地址可以是CPU所生成的地址。逻辑区块地址是内部和编程使用的、并不唯一。例如,在进行C语言指针编程中,可以读取指针变量本身值,实际上这个值就是逻辑区块地址,它是相对于你当前进程数据段的地址(偏移地址),不和绝对物理地址相干。
物理区块地址,是磁盘或存储单元中用于表示数据存储位置的地址。该地址的编号可从0开始一直到可用物理存储空间的最高端,这些数字编号可被映射到实际的磁盘存储空间中。
B+树,是一种树型的数据结构。实际上,B+树是一种多叉树(也称为n叉树)。B+树中,每个节点通常有多个子节点。以三层或三层以上的B+树为例,B+树主要有中间节点和叶子节点,根节点是中间节点的一个特例。实际上,所谓的根节点就是B+树中最顶端的树节点。以多层B+树为例,叶子节点为处于最底层的树节点,中间节点为处于最高层到次底层的树节点,其中,根节点为处于最高层(也即最顶端)的树节点。当然,在一些情况下,例如B+树仅有一层的情况下,根节点也可认为是叶子节点。中间节点还可称为索引节点。B+树通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,针对B+树的插入操作与修改操作的对数时间复杂度较为稳定。
如图2所示,一个m阶的B+树具有如下几个特征:
1.树中每个节点至多有m颗子树,中间节点只用来索引,所有数据都保存在叶子节点;2.所有的叶子节点中包含全部元素的信息,以及指向这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序连接;3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或者最小)元素。
在图2中,根节点元素8是中间节点2,5,8的最大元素,也是叶子节点6,8的最大元素,根节点元素15是中间节点11,15的最大元素,也是叶子节点13,15的最大元素;根节点的最大元素也就是整个B+树的最大元素,以后无论插入多少元素,始终保持最大的元素在根节点当中;由于父节点的元素都出现在叶子节点中,因此所有的叶子节点包含了全部的元素信息,并且每一个叶子节点都带有指下一个节点的指针,形成一个有序链表。
目前,针对小数据读写场景,在FWrite时会触发Random Write随机写入操作,Random Write随机写入会分配许多WriteTbl,大量的WriteTbl是通过AmtLink进行链接的,当AmtLink链很长时候,此时主机想要找AmtLink中的某个逻辑地址会耗费大量的时间。为了解决上述问题,本发明的实施例提出了一种树的数据写入方法,将AmtLink以B+树方式进行链,这样,此时主机想要找AmtLink中某个节点所对应时间复杂度为O(logN),因此,在进行数据写入时大幅提升了数据写入的效率。具体地,本发明实施例提出的树的数据写入方法,数据写入方法包括:对数据写入请求进行解析,得到数据写入请求中携带的第一逻辑区块地址和待写入数据;以第一逻辑区块地址作为B+树的索引值,在B+树的多个叶子节点中查询与第一逻辑区块地址对应的目标叶子节点;为待写入数据分配新的物理区块地址,并将新的物理区块地址写入到目标叶子节点;向目标叶子节点对应的存储空间写入待写入数据。
本申请的实施例分别提出一种树的数据写入方法、一种树的数据写入装置、一种存储器、一种计算机可读存储介质,以下将对这些实施例进行详细描述。
请参阅图3,图3是本申请的一示例性实施例示出的一种树的数据写入方法的流程图。该方法可以应用于图1所示的实施环境,并由该实施环境中的控制系统具体执行。应理解的是,该方法也可以适用于其它的示例性实施环境,并由其它实施环境中的设备具体执行,本实施例不对该方法所适用的实施环境进行限制。
请参阅图3,图3为本申请一示例性的一种树的数据写入方法的流程图,该树的数据写入方法至少包括步骤S210至步骤S270,详细介绍如下:
步骤S310,对数据写入请求进行解析,得到数据写入请求中携带的第一逻辑区块地址和待写入数据;
在主机向系统发送数据写入指令时,系统接收主机发送的数据写入请求时,响应数据写入请求,并对数据写入请求进行解析,从而可以得到数据写入请求中携带的逻辑区块地址和待写入的数据,其中,逻辑区块地址被定义为第一逻辑区块地址。
在解析出待写入数据的逻辑区块地址之后,以逻辑区块地址作为索引值,在二级映射表示查找与逻辑区块地址对应的物理区块地址。
步骤S320,以第一逻辑区块地址作为B+树的索引值,在B+树的多个叶子节点中查询与第一逻辑区块地址对应的目标叶子节点;
请参阅图4,图4为本申请一示例性实施例示出的确定目标叶子节点的方法流程图。B+树包括多个中间节点,每个中间节点指向至少一个叶子节点,在中间节点中存储有一级映射表,在叶子节点中存储有二级映射表,一级映射表指向二级映射表;以第一逻辑区块地址作为B+树的索引值,在B+树的多个叶子节点中查询与第一逻辑区块地址对应的目标叶子节点的步骤包括:
步骤S410,以第一逻辑区块地址为B+树的索引值,在B+树的多个中间节点中查找与第一逻辑区块地址对应的目标中间节点;
需要说明的是,对于多层结构的B+树来说,包括根节点、多个中间节点、以及多个叶子节点,多个中间节点组成中间节点层,多个叶子节点组成叶子节点层。根节点中的索引指向中间节点层的中间节点,中间节点的索引指向叶子节点,通过根节点的索引就可以找到中间节点,通过中间节点的索引就可以找到叶子节点。如图2所示,在图2中,节点(8,15)为根节点,节点(2、5、8)、节点(11、15)为中间节点,节点(1、2)、节点(3、5)、节点(1、2)、节点(6、8)、节点(9、11)、节点(13、15)为叶子节点。在中间节点中存储有一级映射表,在叶子节点中存储有二级映射表,一级映射表中记录有指向二级映射表的指针(地址),一个一级映射表可以指向多个二级映射表,而二级映射表中记录有多个偏移位置,每一个偏移位置对应一存储空间。通过对一级映射表进行查询可以找到二级映射表,通过对二级映射表进行查询可以找到具体的存储空间,即数据的存储地址。
对于图2来说,在对存储器进行访问时,通过根节点开始查找,在节点(2、5、8)、节点(11、15)中找到其中一个作为目标中间节点,然后从目标中间节点开始查找,找到目标叶子节点。若目标中间节点为节点(2、5、8),则目标叶子节点为节点(1、2)、节点(3、5)、节点(1、2)、节点(6、8)中的一个,若目标中间节点为节点(11、15),则目标叶子节点为节点(9、11)、节点(13、15)中的一个。
步骤S420,获取第一逻辑区块地址在目标中间节点中的二级映射表中的第一偏移位置;
在一实施例中,对第一逻辑区块地址进行第一取余计算,得到第一余数,并以第一余数作为第一逻辑区块地址在目标二级映射表中的第一偏移位置。
比如,记第一逻辑区块地址为Lai,对第一逻辑区块地址进行第一取余计算,即对Lai取余1024后得到该笔Lai在二级映射表Amt中Offset-偏移位置,即第一偏移位置。
在一实施例中,方法还包括:在将新的物理区块地址写入到目标叶子节点后,将新的物理区块地址和逻辑区块地址在一级映射表或/和二级映射表中进行更新。
步骤S430,以第一偏移位置为B+树的索引值,在B+树的多个叶子节点中查询与第一偏移位置对应的目标叶子节点。
步骤S340,向目标叶子节点写入数据。
在一实施例中,方法还包括:
获取第二逻辑区块地址在二级映射表中的第二偏移位置,其中,第二逻辑区块地址为在先写入数据的逻辑区块地址;其中,第二偏移位置的计算方式与第一偏移位置相同,这里不再进行重复说明。
根据第一偏移位置与第二偏移位置的大小关系确定第一逻辑区块地址与第二逻辑区块地址的指向关系。
具体地,根据第一偏移位置与第二偏移位置的大小关系确定第一逻辑区块地址与第二逻辑区块地址的指向关系的步骤包括:
将第一偏移位置与第二偏移位置进行比较;若第一偏移位置大于第二偏移位置,则将第一逻辑区块地址指向第二逻辑区块地址对应的二级映射表;若第一偏移位置小于或等于第二偏移位置,则将第二逻辑区块地址指向第一逻辑区块地址对应的一级映射表。
在一实施例中,方法还包括:
响应于目标叶子节点中已存储的关键值的数量大于设定阈值,分裂目标叶子节点,并更新目标叶子节点的双亲节点中的关键值,以完成数据的写入。
以图2所示的B+树进行数据的写入为例,需要注意的是,数据的写入都是在叶子节点进行的,在写入前先找到要写入的叶子节点,即目标叶子节点。具体的查找方法可以参考步骤S410-步骤S430。
如果被插入关键值的叶子节点当前含有关键值的数量是小于阶数m,则直接插入;如果插入的关键值后,叶子节点当前含有的关键值的数量等于阶数m,则该叶子节点会被分裂成2个新的叶子节点,一个叶子节点包含⌈m/2⌉个关键值,另外一个节点含有⌊m/2⌋个关键值。(⌈m/2⌉表示向下取整,⌊m/2⌋表示向上取整);同时将⌈m/2⌉的关键值移至双亲节点;如果上移操作导致其双亲的关键值个数大于M,则应该继续分裂其双亲节点。
需要说明的是,B+树的阶数以及关键值的数量可以根据实际需求进行设定,本发明中不进行限定。比如,关键值的数量可以设定为16。如果当前的逻辑区块地址所指向的叶子节点中已经存储的逻辑区块地址的数量已经超过16个,需要分裂当前的叶子节点,并且更新对应的双亲节点中的最大的LBA的值。
如图5所示,图5为本申请一示例性实施例示出的在图2的基础上进行数据写入后的示意图。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图6是本申请的一示例性实施例示出的树的数据写入装置的框图。该装置可以应用于图1所示的实施环境,并具体配置在智能终端中。该装置也可以适用于其它的示例性实施环境,并具体配置在其它设备中,本实施例不对该装置所适用的实施环境进行限制。
如图6所示,一种树的数据写入装置,树为B+树,数据写入装置包括:
地址解析模块610,用于对数据写入请求进行解析,得到数据写入请求中携带的第一逻辑区块地址和待写入数据;
地址查找模块620,用于以第一逻辑区块地址作为B+树的索引值,在B+树的多个叶子节点中查询与第一逻辑区块地址对应的目标叶子节点;
地址写入模块630,用于为待写入数据分配新的物理区块地址,并将新的物理区块地址写入到目标叶子节点;
数据写入模块640,用于向目标叶子节点对应的存储空间写入待写入数据。
在一实施例中,B+树包括多个中间节点,每个中间节点指向至少一个叶子节点,在中间节点中存储有一级映射表,在叶子节点中存储有二级映射表,一级映射表指向二级映射表。地址查找模块620以第一逻辑区块地址为B+树的索引值,在B+树的多个中间节点中查找与第一逻辑区块地址对应的目标中间节点;获取第一逻辑区块地址在目标中间节点中的二级映射表中的第一偏移位置;以第一偏移位置为B+树的索引值,在B+树的多个叶子节点中查询与第一偏移位置对应的目标叶子节点。
在一实施例中,地址查找模块620对第一逻辑区块地址进行第一取余计算,得到第一余数,并以第一余数作为第一逻辑区块地址在目标二级映射表中的第一偏移位置。
在一实施例中,装置还包括更新模块,用于在将新的物理区块地址写入到目标叶子节点后,将新的物理区块地址和逻辑区块地址在一级映射表或/和二级映射表中进行更新。
在一实施例中,地址查找模块620获取第二逻辑区块地址在二级映射表中的第二偏移位置,其中,第二逻辑区块地址为在先写入数据的逻辑区块地址;根据第一偏移位置与第二偏移位置的大小关系确定第一逻辑区块地址与第二逻辑区块地址的指向关系;若第一偏移位置大于第二偏移位置,则将第一逻辑区块地址指向第二逻辑区块地址对应的二级映射表;若第一偏移位置小于或等于第二偏位置,则将第二逻辑区块地址指向第一逻辑区块地址对应的一级映射表。
在一实施例中,更新模块响应于目标叶子节点中已存储的关键值的数量大于设定阈值,分裂目标叶子节点,并更新目标叶子节点的双亲节点中的关键值,以完成数据的写入。
需要说明的是,上述实施例所提供的树的数据写入装置与上述实施例所提供的树的数据写入方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。上述实施例所提供的在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,本处也不对此进行限制。
本申请的实施例还提供了一种存储器,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得存储器实现上述各个实施例中提供的树的数据写入方法。
图7示出了适于用来实现本申请实施例的存储器的计算机系统的结构示意图。需要说明的是,图7示出的存储器的计算机系统700仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(Central Processing Unit,CPU)701,其可以根据存储在只读存储器(Read-Only Memory,ROM)702中的程序或者从储存部分708加载到随机访问存储器(Random Access Memory,RAM)703中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 703中,还存储有系统操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(Input /Output,I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分707;包括硬盘等的储存部分708;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分707。通信部分707经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入储存部分708。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图2所示的树的数据写入方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机的处理器执行时,使计算机执行如前的树的数据写入方法。该计算机可读存储介质可以是上述实施例中描述的存储器中所包含的,也可以是单独存在,而未装配入该存储器中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的树的数据写入方法。
上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,但凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种树的数据写入方法,其特征在于,所述树为B+树,所述B+树包括多个叶子节点,所述数据写入方法包括:
对数据写入请求进行解析,得到所述数据写入请求中携带的第一逻辑区块地址和待写入数据;
以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点;
为待写入数据分配新的物理区块地址,并将所述新的物理区块地址写入到所述目标叶子节点;
向所述目标叶子节点对应的存储空间写入所述待写入数据。
2.根据权利要求1所述的树的数据写入方法,其特征在于,所述B+树包括多个中间节点,每个所述中间节点指向至少一个叶子节点,在所述中间节点中存储有一级映射表,在所述叶子节点中存储有二级映射表,一级映射表指向二级映射表;以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点的步骤包括:
以所述第一逻辑区块地址为B+树的索引值,在所述B+树的多个中间节点中查找与所述第一逻辑区块地址对应的目标中间节点;
获取所述第一逻辑区块地址在所述目标中间节点中的二级映射表中的第一偏移位置;
以所述第一偏移位置为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一偏移位置对应的目标叶子节点。
3.根据权利要求2所述的树的数据写入方法,其特征在于,所述第一偏移位置的计算方法包括:
对所述第一逻辑区块地址进行第一取余计算,得到第一余数,并以所述第一余数作为所述第一逻辑区块地址在所述目标二级映射表中的第一偏移位置。
4.根据权利要求2所述的树的数据写入方法,其特征在于,所述方法还包括:
在将所述新的物理区块地址写入到所述目标叶子节点后,将所述新的物理区块地址和所述逻辑区块地址在所述一级映射表或/和所述二级映射表中进行更新。
5.根据权利要求2或3所述的树的数据写入方法,其特征在于,所述方法还包括:
获取第二逻辑区块地址在二级映射表中的第二偏移位置,其中,所述第二逻辑区块地址为在先写入数据的逻辑区块地址;
根据所述第一偏移位置与所述第二偏移位置的大小关系确定所述第一逻辑区块地址与所述第二逻辑区块地址的指向关系。
6.根据权利要求5所述的树的数据写入方法,其特征在于,所述根据所述第一偏移位置与所述第二偏移位置的大小关系确定所述第一逻辑区块地址与所述第二逻辑区块地址的指向关系的步骤包括:
若所述第一偏移位置大于所述第二偏移位置,则将第一逻辑区块地址指向第二逻辑区块地址对应的二级映射表;
若所述第一偏移位置小于或等于所述第二偏移位置,则将第二逻辑区块地址指向第一逻辑区块地址对应的一级映射表。
7.根据权利要求1所述的树的数据写入方法,其特征在于,所述方法还包括:
响应于所述目标叶子节点中已存储的关键值的数量大于设定阈值,分裂所述目标叶子节点,并更新所述目标叶子节点的双亲节点中的关键值,以完成数据的写入。
8.一种树的数据写入装置,其特征在于,所述树为B+树,所述B+树包括多个叶子节点,所述数据写入装置包括:
地址解析模块,用于对数据写入请求进行解析,得到所述数据写入请求中携带的第一逻辑区块地址和待写入数据;
地址查找模块,用于以所述第一逻辑区块地址作为B+树的索引值,在所述B+树的多个叶子节点中查询与所述第一逻辑区块地址对应的目标叶子节点;
地址写入模块,用于为待写入数据分配新的物理区块地址,并将所述新的物理区块地址写入到所述目标叶子节点;
数据写入模块,用于向所述目标叶子节点对应的存储空间写入所述待写入数据。
9.一种存储器,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1-7任意一项所述的树的数据写入方法。
10.一种机器可读介质,其特征在于,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使得计算机执行如权利要求1-7任意一项所述的树的数据写入方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311153310.2A CN116880780A (zh) | 2023-09-08 | 2023-09-08 | 树的数据写入方法、装置、机器可读介质及存储器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311153310.2A CN116880780A (zh) | 2023-09-08 | 2023-09-08 | 树的数据写入方法、装置、机器可读介质及存储器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116880780A true CN116880780A (zh) | 2023-10-13 |
Family
ID=88270330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311153310.2A Pending CN116880780A (zh) | 2023-09-08 | 2023-09-08 | 树的数据写入方法、装置、机器可读介质及存储器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116880780A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019953A (zh) * | 2012-12-28 | 2013-04-03 | 华为技术有限公司 | 一种元数据的构建系统及其方法 |
US20190114083A1 (en) * | 2017-10-17 | 2019-04-18 | Seagate Technology Llc | Mapping system for data storage devices |
CN110781101A (zh) * | 2019-10-25 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种一对多映射关系的存储方法、装置、电子设备及介质 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
CN113392040A (zh) * | 2021-06-23 | 2021-09-14 | 锐捷网络股份有限公司 | 一种地址映射方法、装置、设备 |
US11144394B1 (en) * | 2020-06-05 | 2021-10-12 | Vmware, Inc. | Storing B-tree pages in capacity tier for erasure-coded storage in distributed data systems |
CN115438039A (zh) * | 2021-06-04 | 2022-12-06 | 华为技术有限公司 | 存储系统的数据索引结构的调整方法和装置 |
-
2023
- 2023-09-08 CN CN202311153310.2A patent/CN116880780A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019953A (zh) * | 2012-12-28 | 2013-04-03 | 华为技术有限公司 | 一种元数据的构建系统及其方法 |
US20190114083A1 (en) * | 2017-10-17 | 2019-04-18 | Seagate Technology Llc | Mapping system for data storage devices |
CN110781101A (zh) * | 2019-10-25 | 2020-02-11 | 苏州浪潮智能科技有限公司 | 一种一对多映射关系的存储方法、装置、电子设备及介质 |
CN111125447A (zh) * | 2019-12-22 | 2020-05-08 | 北京浪潮数据技术有限公司 | 一种元数据访问方法、装置、设备及可读存储介质 |
US11144394B1 (en) * | 2020-06-05 | 2021-10-12 | Vmware, Inc. | Storing B-tree pages in capacity tier for erasure-coded storage in distributed data systems |
CN115438039A (zh) * | 2021-06-04 | 2022-12-06 | 华为技术有限公司 | 存储系统的数据索引结构的调整方法和装置 |
CN113392040A (zh) * | 2021-06-23 | 2021-09-14 | 锐捷网络股份有限公司 | 一种地址映射方法、装置、设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9684462B2 (en) | Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
KR101289931B1 (ko) | 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치 | |
US8862566B2 (en) | Systems and methods for intelligent parallel searching | |
JP5902323B2 (ja) | コンテンツ派生データのメモリ内配置方法および装置 | |
US11288287B2 (en) | Methods and apparatus to partition a database | |
US7870122B2 (en) | Self-tuning index for flash-based databases | |
CN113157689A (zh) | 数据索引方法、装置及电子设备 | |
WO2023045407A1 (zh) | 一种i/o请求处理方法、装置、设备及可读存储介质 | |
CN104021223A (zh) | 一种集群数据库测点的访问方法及装置 | |
Alam et al. | Performance of point and range queries for in-memory databases using radix trees on GPUs | |
KR101565975B1 (ko) | 인덱스를 저장하는 플래시 메모리를 포함하는 사용자 장치 및 그것의 인덱스 액세스 방법 | |
CN117573676A (zh) | 基于存储系统的地址处理方法、装置、存储系统及介质 | |
CN115437579B (zh) | 一种元数据管理方法、装置、计算机设备及可读存储介质 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
CN111104435B (zh) | 一种元数据组织方法、装置、设备及计算机可读存储介质 | |
CN116880780A (zh) | 树的数据写入方法、装置、机器可读介质及存储器 | |
CN112328630B (zh) | 数据查询方法、装置、设备及存储介质 | |
US11487731B2 (en) | Read iterator for pre-fetching nodes of a B-tree into memory | |
CN112015672A (zh) | 一种存储系统中数据处理方法、装置、设备及存储介质 | |
US10169250B2 (en) | Method and apparatus method and apparatus for controlling access to a hash-based disk | |
CN115827653B (zh) | 一种用于htap和海量数据的纯列式更新方法及装置 | |
US6807618B1 (en) | Address translation | |
Park et al. | Design of a High-Performance, High-Endurance Key-Value SSD for Large-Key Workloads | |
Li et al. | LayerBF: A Space Allocation Policy for Bloom Filter in 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 |