CN117271531A - 一种数据存储方法、系统、设备及介质 - Google Patents

一种数据存储方法、系统、设备及介质 Download PDF

Info

Publication number
CN117271531A
CN117271531A CN202311551001.0A CN202311551001A CN117271531A CN 117271531 A CN117271531 A CN 117271531A CN 202311551001 A CN202311551001 A CN 202311551001A CN 117271531 A CN117271531 A CN 117271531A
Authority
CN
China
Prior art keywords
node
storage
leaf storage
storage node
capacity
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.)
Granted
Application number
CN202311551001.0A
Other languages
English (en)
Other versions
CN117271531B (zh
Inventor
王超群
高美洲
孙大朋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311551001.0A priority Critical patent/CN117271531B/zh
Publication of CN117271531A publication Critical patent/CN117271531A/zh
Application granted granted Critical
Publication of CN117271531B publication Critical patent/CN117271531B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及存储技术领域,尤其涉及一种数据存储方法、系统、设备及介质。方法包括:确定每个叶子存储节点的优先级并确定各优先级的叶子存储节点的容量上限和容量下限;当固态存储设备接收到更新指令,解析更新指令得到节点标识和更新数据,在映射表中查询与节点标识对应的目标叶子存储节点;若目标叶子存储节点的节点容量超过目标叶子存储节点对应的容量上限,查询目标叶子存储节点的分裂增量节点,基于分裂增量节点将更新数据存储至下一优先级叶子存储节点;若目标叶子存储节点的节点容量低于目标叶子存储节点对应的容量下限,查询目标叶子存储节点的合并增量节点,基于合并增量节点将更新数据存储至上一优先级叶子存储节点。

Description

一种数据存储方法、系统、设备及介质
技术领域
本发明涉及存储技术领域,尤其涉及一种数据存储方法、系统、设备及介质。
背景技术
随着存储技术的飞速发展,单机多核架构的发展也逐步趋于成熟,但对于异构多核架构的研究仍处于未完善的阶段。相关技术中,针对大容量和高吞吐的固态存储设备进行数据存储时存在较大的局限性以及读写放大的缺陷,无法充分发挥异构固态存储设备的高速随机数据存储的优势。因此,如何使异构固态存储设备实现更高效的读写效率以提升异构固态存储设备的数据存储性能是目前亟待解决的技术问题。
发明内容
有鉴于此,本发明提出了一种数据存储方法、系统、设备及介质。
基于上述目的,本发明实施例的第一方面提供了一种固态存储设备数据存储的方法,具体包括如下步骤:
确定每个叶子存储节点的优先级,并确定各所述优先级的所述叶子存储节点的容量上限和容量下限;
响应于所述固态存储设备接收到更新指令,解析所述更新指令得到节点标识和更新数据,在映射表中查询与所述节点标识对应的目标叶子存储节点;
判断所述目标叶子存储节点的节点容量是否超过所述目标叶子存储节点对应的容量上限,或低于所述目标叶子存储节点对应的容量下限;
响应于所述节点容量超过对应的所述容量上限,查询所述目标叶子存储节点的分裂增量节点,基于所述分裂增量节点将所述更新数据存储至下一优先级叶子存储节点;
响应于所述节点容量低于对应的所述容量下限,查询所述目标叶子存储节点的合并增量节点,基于所述合并增量节点将所述更新数据存储至上一优先级叶子存储节点。
在一些实施方式中,所述数据存储方法还包括:
响应于所述节点容量超过对应的所述容量上限且未查询到所述分裂增量节点,确定所述目标叶子存储节点的优先级对应的下一优先级,并在所述下一优先级的所有所述叶子存储节点中,查询节点编号与所述目标叶子存储节点的节点编号相同的第一叶子存储节点;
创建第一指针指向所述目标叶子存储节点且第二指针指向所述第一叶子存储节点的分裂增量节点;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述分裂增量节点的存储地址,以指示所述更新数据存储至所述第一叶子存储节点。
在一些实施方式中,所述数据存储方法还包括:
响应于所述节点容量低于对应的所述容量下限且未查询到所述合并增量节点,判断所述目标叶子存储节点的优先级是否为第一优先级;
响应于所述目标叶子存储节点的优先级不为第一优先级,确定所述目标叶子存储节点的优先级对应的上一优先级,并在所述上一优先级的所有叶子存储节点中,查询节点编号与所述目标叶子存储节点的节点编号相同的第二叶子存储节点;
创建第一指针指向所述目标叶子节点的删除信息节点,其中,所述删除信息节点记录了所述第二叶子存储节点对应的节点标识;
在所述第二叶子存储节点上创建第一指针指向所述目标叶子存储节点的合并增量节点;
基于所述删除信息节点和所述合并增量节点更新所述映射表以指示所述更新数据存储至所述第二叶子存储节点。
在一些实施方式中,所述基于所述删除信息节点和所述合并增量节点更新所述映射表以指示所述更新数据存储至所述第二叶子存储节点的步骤,包括:
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述删除信息节点的存储地址,将所述映射表中所述第二叶子存储节点的节点标识对应的节点指针所指向的物理地址更新为所述合并增量节点的存储地址,并将更新后的所述映射表用于指示所述更新数据存储至所述第二叶子存储节点。
在一些实施方式中,所述数据存储方法还包括:
响应于所述节点容量未超过对应的所述容量上限且未低于对应的所述容量下限,对所述目标叶子存储节点的访问进行加锁,并判断所述目标叶子存储节点是否存在增量链;
响应于所述目标叶子存储节点不存在增量链,创建第一指针指向所述目标叶子存储节点的第一增量信息节点,并将所述更新数据存储至所述第一增量信息节点;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述第一增量信息节点的存储地址。
在一些实施方式中,所述数据存储方法还包括:
响应于所述目标叶子存储节点存在增量链,获取所述增量链的链头增量信息节点;
创建第一指针指向所述链头增量信息节点的第二增量信息节点,将所述更新数据存储至所述第二增量信息节点,并将所述第二增量信息节点作为所述增量链中新的链头增量信息节点;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述第二增量信息节点的存储地址。
在一些实施方式中,所述数据存储方法还包括:
响应于所述分裂增量节点创建完成,查询所述目标叶子存储节点的父存储节点;
创建第一指针指向所述父存储节点的第一索引信息节点,其中,所述第一索引信息节点记录了在所述父存储节点中增加所述第一叶子存储节点的索引信息;
确定所述父存储节点对应的父节点标识,将所述父节点标识对应的节点指针所指向的物理地址更新为所述第一索引信息节点的存储地址。
在一些实施方式中,所述数据存储方法还包括:
响应于所述合并增量节点创建完成,查询所述目标叶子存储节点的父存储节点;
创建第一指针指向所述父存储节点的第二索引信息节点,其中,所述第二索引信息节点记录了在所述父存储节点中删除所述目标叶子存储节点的索引信息;
确定所述父存储节点对应的父节点标识,将所述父节点标识对应的节点指针所指向的物理地址更新为所述第二索引信息节点的存储地址。
在一些实施方式中,所述数据存储方法还包括:
响应于所述增量链中增量信息节点数量达到预设数量,对所述目标叶子存储节点的访问进行加锁,并创建新的叶子存储节点,将所述目标叶子存储节点的存储数据与所述增量链中所有增量信息节点的存储数据合并后存入所述新的叶子存储节点,其中,所述新的叶子存储节点的优先级与所述目标叶子存储节点的优先级相同;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述新的叶子存储节点的存储地址。
在一些实施方式中,所述确定每个叶子存储节点的优先级,并确定各所述优先级的所述叶子存储节点的容量上限和容量下限的步骤,包括:
根据所述固态存储设备的各所述叶子存储节点的存储性能确定各所述叶子存储节点的优先级;
设置第一预设比例,根据第一预设比例划分所述固态存储设备的总存储容量得到各所述优先级的所述叶子存储节点分别对应的存储容量;
设置第二预设比例,根据所述第二预设比例和每个所述存储容量,得到各所述优先级的叶子存储节点的容量上限;
设置第三预设比例,根据所述第三预设比例和每个所述存储容量,得到各所述优先级的叶子存储节点的容量下限。
在一些实施方式中,所述根据第一预设比例划分所述固态存储设备的总存储容量得到各所述优先级的所述叶子存储节点分别对应的存储容量的步骤,包括:
若所述叶子存储节点的所述优先级为第一级,将所述第一预设比例与所述总存储容量的乘积值作为所述叶子存储节点对应的存储容量;
若所述叶子存储节点的所述优先级不为第一级,获取所述叶子存储节点的上一优先级叶子存储节点对应的上一优先级存储容量,将所述第一预设比例与所述上一优先级存储容量的乘积值作为所述叶子存储节点对应的存储容量。
在一些实施方式中,所述数据存储方法还包括:
响应于所述映射表中所述父节点标识对应的节点指针所指向的物理地址更新为所述第二索引信息节点的存储地址,删除所述目标叶子存储节点内的存储数据,并对所述目标叶子存储节点的访问进行解锁。
在一些实施方式中,所述数据存储方法还包括:
响应于确定所述更新数据存储完成,对所述目标叶子存储节点的访问进行解锁。
在一些实施方式中,所述数据存储方法还包括:
响应于所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述新的叶子存储节点的存储地址,删除所述目标叶子存储节点内的存储数据。
在一些实施方式中,所述在映射表中查询与所述节点标识对应的目标叶子存储节点的步骤,包括:
在所述映射表中查询与所述节点标识对应的节点指针,根据所述节点指针指向的物理地址获取目标叶子存储节点。
在一些实施方式中,所述第一指针为物理地址指针,所述第二指针为逻辑地址指针。
根据本发明的第二方面,还一种数据存储系统,所述的系统包括:
划分单元,用于确定每个叶子存储节点的优先级,并确定各所述优先级的所述叶子存储节点的容量上限和容量下限;
查询单元,用于响应于固态存储设备接收到更新指令,解析所述更新指令得到节点标识和更新数据,在映射表中查询与所述节点标识对应的目标叶子存储节点;
判断单元,用于判断所述目标叶子存储节点的节点容量是否超过所述目标叶子存储节点对应的容量上限,或低于所述目标叶子存储节点对应的容量下限;
分裂存储单元,用于响应于所述节点容量超过对应的所述容量上限,查询所述目标叶子存储节点的分裂增量节点,基于所述分裂增量节点将所述更新数据存储至下一优先级叶子存储节点;
合并存储单元,用于响应于所述节点容量低于对应的所述容量下限,查询所述目标叶子存储节点的合并增量节点,基于所述合并增量节点将所述更新数据存储至上一优先级叶子存储节点。
根据本发明的第三方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述计算机程序由所述处理器执行时实现如上方法的步骤。
根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明至少具有以下有益技术效果:上述一种数据存储方法,为每个叶子存储节点预先分配了优先级,能够在接收到更新指令后根据优先级和更新数据的访问频率或重要性等快速为更新数据分配相应优先级上叶子存储节点的节点标识,并预先构建映射表以保存各节点标识和对应叶子存储节点之间的映射关系,以便于在接收到更新指令后根据节点标识和节点指针准确查询到用以存储更新数据的目标叶子存储节点,且映射表能够实现相邻叶子存储节点间无锁化分裂和合并操作,有助于叶子存储节点间逻辑存储关系的修改,实现在固态存储设备中高效随机存储的目的,当目标叶子存储节点超过容量上限或低于容量下限表示目标叶子存储节点此时需要进行调整,若查询到目标叶子存储节点的分裂增量节点,表示目标叶子存储与下一优先级叶子存储节点间已发生了分裂关系,则直接将更新数据存入下一优先级叶子存储节点,若查询到目标叶子存储节点的合并增量节点,表示目标叶子存储与上一优先级叶子存储节点已发生了合并关系,则直接将更新数据存入上一优先级叶子存储节点,实现了数据存储的高效规范化管理,对于大容量、高吞吐的固态存储设备能够充分发挥其高效随机存储数据的优势,提高固态存储设备的读写速度。
此外,本发明还提供了一种数据存储系统、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的数据存储方法的一实施例的框图;
图2为本发明提供的Bw-tree基本结构的一实施例的示意图;
图3为本发明提供的目标叶子存储节点分裂前的一实施例的示意图;
图4为本发明提供的创建分裂增量节点的一实施例的示意图;
图5为本发明提供的节点分裂过程中更新父存储节点的一实施例的示意图;
图6为本发明提供的数据存储方法中创建删除信息节点的一实施例的示意图;
图7为本发明提供的数据存储方法中创建合并增量节点的一实施例的示意图;
图8为本发明提供的节点合并过程中更新父存储节点的一实施例的示意图;
图9为本发明提供的利用增量信息节点进行数据更新的一实施例的示意图;
图10为本发明提供的数据存储系统的一实施例的示意图;
图11为本发明提供的计算机设备的一实施例的结构示意图;
图12为本发明提供的计算机可读存储介质的一实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
相关技术中,基于B+-tree能够提供优秀的读性能将B+-tree单独用于异构固态存储设备中,基于LSM-tree能够提供批量写和多层并归将LSM-tree单独用于异构固态存储设备中,分别通过上述两种不同的方法实现异构固态存储设备内部的数据存储。但B+-tree存在对初始数据原地更新导致写放大严重的问题,且B+-tree实现无锁结构非常复杂,不利于异构固态存储设备中存储系统的开发。LSM-tree存在读放大严重和对数据格式要求严格等问题,即要求树结构中每层数据都是有序的,因此LSM-tree无法使异构固态存储设备发挥出自身高效随机存储数据的优势。进一步的,相关技术中结合B+-tree和LSM-tree两种方法的优缺点,还提出了一种应用于大型存储服务器的Bw-tree方法,Bw-tree是一种无锁化的B+tree模型。虽然Bw-tree能够有效兼容B+-tree和LSM-tree的优缺点,但其在频繁分配或回收存储空间的情况下会存在大量不连续的小块存储空间未被利用导致存储性能剧烈抖动的问题,无法达到有效提高大容量和高吞吐的异构固态存储设备读写速度的目的。
本发明提出基于Bw-tree实现的一种数据存储方法,旨在解决大容量和高吞吐的异构固态存储设备内部无法充分发挥异构固态存储设备的高速随机数据存储的优势,导致异构固态存储设备读写速度慢的问题,并有效避免了Bw-tree在异构固态存储设备内应用时可能存在的存储性能抖动剧烈的问题。
下面以异构固态存储设备为例对本发明的数据存储方法进行说明。
基于上述目的,本发明实施例的第一个方面,提出了一种数据存储方法的实施例。如图1所示,其包括如下步骤:
步骤101,确定每个叶子存储节点的优先级,并确定各优先级的叶子存储节点的容量上限和容量下限。
在一些实施方式中,能够根据固态存储设备的各叶子存储节点的存储性能确定各叶子存储节点的优先级。设置第一预设比例、第二预设比例和第三预设比例,其中,第一预设比例用于计算各叶子存储节点的容量的值,其能够根据可用容量空间计算各叶子存储节点容量,第二预设比例用于计算各叶子存储节点的容量上限的值,第三预设比例用于计算各叶子存储节点的容量下限的值。根据设置好的第一预设比例,将固态存储设备的总存储容量从第一优先级开始逐优先级依次划分得到各优先级的叶子存储节点分别对应的存储容量,并根据存储容量、第二预设比例和第三预设比例分别计算叶子存储节点的容量上限和容量下限。例如,设置该第一预设比例为10%,第二预设比例为90%,第三预设比例为10%,总存储容量为1TB,则第一优先级的叶子存储节点的存储容量为1TB×10%=102.4GB,容量上限为92.16GB,容量下限为10.24GB。第二优先级的叶子存储节点的存储容量为102.4GB×10%=10.24GB=10485.76MB,容量上限为9437.184MB,容量下限为1048.576MB。第三优先级的叶子存储节点的存储容量为10.24GB×10%=1.024GB=1073741.824KB,容量上限为966367.6416KB,容量下限为107374.1824KB,依次类推。其中,不同优先级中的第一预设比例可以相同或不同,即第一优先级的第一预设比例可以为20%,第二优先级的第一预设比例可以为10%。需要说明的是本实施例中说涉及的比例值、优先级数量、存储容量、容量上限和容量下限仅用于举例说明,不应理解为对本发明方案的限制,在具体实施过程中比例值、优先级数量、存储容量、容量上限和容量下限需要依据具体业务场景可进行灵活变化。
在一些实施方式中,相同优先级中可以包括一个或多个叶子存储节点,且相同优先级中的叶子存储节点的节点编号均不相同,不同优先级中具有相同节点编号的叶子存储节点为兄弟节点。
步骤102,响应于固态存储设备接收到更新指令,解析更新指令得到节点标识和更新数据,在映射表中查询与节点标识对应的目标叶子存储节点。
图2为本发明提供的Bw-tree基本结构的一实施例的示意图。
在一些实施方式中,基于Bw-tree将异构固态存储设备在设计上分为三层,分别为Bw-tree层、缓存层和闪存层。其中,Bw-tree层设置于异构固态存储设备的内存页中,其中还包括API(Application Programming Interface,应用程序编程接口),Bw-tree层主要的作用是对基础树结构的更新与搜寻。缓存层主要的作用是对Bw-tree结构进行逻辑页的抽象,缓存层中还包括映射表,能够对映射表进行维护,并根据数据存储的需求将映射表从闪存中读取至随机存储器(RAM)中,以提高数据传输的性能。闪存层主要的作用是管理闪存数据的写入和存储垃圾的回收工作。
在一些实施方式中,映射表包含了物理指针到逻辑指针的映射,每个逻辑指针都存在一个对应的节点标识(ID)来识别,节点标识能够通过映射表翻译成内存的物理地址或者闪存的偏移地址。映射表隔离了物理地址和Bw-tree中各节点,这样每次修改叶子存储节点或者写入数据到固态存储设备时,不需要涉及根节点的修改,只需要更新各节点间的连接。通过数据的读写来SMO操作(Structural modification operations,结构修改操作),解耦指针的直接引用,使得节点分离和节点合并无锁化,并通过CAS(Compare and Swap,比较并交换)操作切换节点指针完成对Bw-tree结构的修改,提高数据读写的效率。
在一些实施方式中,更新指令包括对插入指令、更改指令和删除指令。
步骤103,判断目标叶子存储节点的节点容量是否超过目标叶子存储节点对应的容量上限,或低于目标叶子存储节点对应的容量下限。
在一些实施方式中,通过判断节点容量、容量上限和容量下限间的关系来判断目标叶子存储节点是否发生了节点分裂或者节点合并,以便于确定实际对更新数据进行存储的叶子存储节点。
步骤104,响应于节点容量超过对应的容量上限,查询目标叶子存储节点的分裂增量节点,基于分裂增量节点将更新数据存储至下一优先级叶子存储节点。
在一些实施方式中,通过节点分裂得到的叶子存储节点与被分裂的叶子存储节点为兄弟节点,且分裂得到的叶子存储节点比被分裂的叶子存储节点低一个优先级。当确定目标叶子存储节点中已使用的节点容量超过了容量上限,通过查询分裂增量节点来判断目标叶子存储节点是否已经发生了节点分裂。若查询到分裂增量节点则目标叶子存储节点已发生了节点分裂,确定目标叶子存储节点的下一优先级叶子存储节点为实际对更新数据进行存储的叶子存储节点,通过分裂增量节点中的逻辑指针获取下一优先级叶子存储节点的存储地址。
步骤105,响应于节点容量低于对应的容量下限,查询目标叶子存储节点的合并增量节点,基于合并增量节点将更新数据存储至上一优先级叶子存储节点。
在一些实施方式中,通过节点合并得到的叶子存储节点为被合并的叶子存储节点的兄弟节点,且合并得到的叶子存储节点比被合并的叶子存储节点高一个优先级。当确定目标叶子存储节点中已使用的节点容量低于容量下限,通过查询合并增量节点来判断目标叶子存储节点是否已经发生了节点合并。若查询到合并增量节点则目标叶子存储节点已发生了节点合并,确定目标叶子存储节点的上一优先级叶子存储节点为实际对更新数据进行存储的叶子存储节点,通过分裂增量节点中的逻辑指针获取上一优先级叶子存储节点的存储地址。
上述一种数据存储方法,为每个叶子存储节点预先分配了优先级,能够在接收到更新指令后根据优先级和更新数据的访问频率或重要性等快速为更新数据分配相应优先级上叶子存储节点的节点标识,避免了频繁分配叶子存储节点情况下出现大量不连续的小块存储空间未被利用从而使存储性能剧烈波动的情况,并预先构建映射表以保存各节点标识和对应叶子存储节点之间的映射关系,以便于在接收到更新指令后根据节点标识和节点指针准确查询到用以存储更新数据的目标叶子存储节点,且映射表能够实现相邻叶子存储节点间无锁化分裂和合并操作,有助于叶子存储节点间逻辑指针的修改,实现在固态存储设备中高效随机存储的目的,当目标叶子存储节点超过容量上限或低于容量下限表示目标叶子存储节点此时需要进行调整,若查询到目标叶子存储节点的分裂增量节点,表示目标叶子存储与下一优先级叶子存储节点间已发生了分裂关系,则直接将更新数据存入下一优先级叶子存储节点,若查询到目标叶子存储节点的合并增量节点,表示目标叶子存储与上一优先级叶子存储节点已发生了合并关系,则直接将更新数据存入上一优先级叶子存储节点,实现了数据存储的高效规范化管理,对于大容量、高吞吐的固态存储设备能够充分发挥其高效随机存储数据的优势,提高固态存储设备的读写速度。
在一些实施方式中,本发明的数据存储方法还包括:响应于节点容量超过对应的容量上限且未查询到分裂增量节点,确定目标叶子存储节点的优先级对应的下一优先级,并在下一优先级的所有叶子存储节点中,查询节点编号与目标叶子存储节点的节点编号相同的第一叶子存储节点;创建第一指针指向目标叶子存储节点且第二指针指向第一叶子存储节点的分裂增量节点;将映射表中节点标识对应的节点指针所指向的物理地址更新为分裂增量节点的存储地址,以指示更新数据存储至第一叶子存储节点。
在一些实施方式中,本发明的数据存储方法还包括:响应于分裂增量节点创建完成,查询目标叶子存储节点的父存储节点;创建第一指针指向父存储节点的第一索引信息节点,其中,第一索引信息节点记录了在父存储节点中增加第一叶子存储节点的索引信息;确定父存储节点对应的父节点标识,将父节点标识对应的节点指针所指向的物理地址更新为第一索引信息节点的存储地址。
在一些实施方式中,当确定目标叶子存储节点中已使用的节点容量超过了容量上限且未查询到对应的分裂增量节点,此时触发目标叶子存储节点开始进行节点分裂。节点分裂的整个过程包括两个阶段:首先在目标叶子存储节点上做分裂,然后更新目标叶子存储节点的父存储节点。
一实例中,图3为本发明提供的目标叶子存储节点分裂前的一实施例的示意图。图4为本发明提供的创建分裂增量节点的一实施例的示意图。图3和图4中,Ptr表示节点指针,N0为目标叶子存储节点的节点标识,N1为第一叶子存储节点的节点标识,N2为N1的下一优先级的兄弟节点的节点标识,P为N0的父存储节点的节点标识,Q为根节点的节点标识,节点内RS表示该叶子存储节点当前连接的右兄弟节点。每个叶子存储节点包含了键值(key)和记录数据(value)对,以及最小键值(LK)和最大键值(HK),索引信息节点包含了以键值排序的键值和指针数据对。
目标叶子存储节点分裂大概分为2步:
1、根据N0的节点编号,在下一优先级的所有叶子存储节点中查询节点编号与目标叶子存储节点的节点编号相同的下一优先级叶子存储节点N1,将其作为N0的分裂节点。然后设置N0的分裂键值(SK)为K10,该分裂键值根据实际应用情况进行设置此处不对分裂阈值作具体限定,通过比较将N0中大于K10的存储数据复制到N1中,如图2所示。
2、完成复制后,创建分裂增量节点,分裂增量节点记录了分裂键值和指向N1的逻辑指针信息,通过CAS方式更新映射表中N0的节点指针指向分裂增量节点。
一实例中,图5为本发明提供的节点分裂过程中更新父存储节点的一实施例的示意图。目标叶子存储节点分裂完成后,更新目标叶子存储节点的父存储节点的步骤为:在P上创建一个索引信息节点,该索引信息节点记录了N0的分裂键值、指向N1的逻辑指针、最大键值K20。安装索引信息节点,并通过CAS方式更新映射表中P的节点指针指向索引信息节点,至此完成N0分裂的过程。
上述一种数据存储方法,根据优先级和节点编号,在预先分配好优先级的各叶子存储节点快速确定目标叶子存储节点的分裂节点,避免节点分裂过程中对分裂节点的随机建立,进而避免了在频繁分配或后续回收叶子存储节点过程中出现大量不连续的小块存储空间,有利于实现规则化的高效管理,进一步通过数据的读写来修改结构操作,解耦指针的直接引用以使得节点分离无锁化,并通过CAS切换节点指针完成对树结构的修改提高效率,通过创建增量节点记录节点的更新,避免了对已存储的数据进行原地修改,保证了数据的安全性。
在一些实施方式中,本发明的数据存储方法还包括:响应于节点容量低于对应的容量下限且未查询到合并增量节点,判断目标叶子存储节点的优先级是否为第一优先级;响应于目标叶子存储节点的优先级不为第一优先级,确定目标叶子存储节点的优先级对应的上一优先级,并在上一优先级的所有叶子存储节点中,查询节点编号与目标叶子存储节点的节点编号相同的第二叶子存储节点;创建第一指针指向目标叶子节点的删除信息节点,其中,删除信息节点记录了第二叶子存储节点对应的节点标识;在第二叶子存储节点上创建第一指针指向目标叶子存储节点的合并增量节点;基于删除信息节点和合并增量节点更新映射表以指示更新数据存储至第二叶子存储节点。
在一些实施方式中,基于删除信息节点和合并增量节点更新映射表以指示更新数据存储至第二叶子存储节点的步骤,包括:将映射表中节点标识对应的节点指针所指向的物理地址更新为删除信息节点的存储地址,将映射表中第二叶子存储节点的节点标识对应的节点指针所指向的物理地址更新为合并增量节点的存储地址,并将更新后的映射表用于指示更新数据存储至第二叶子存储节点。
在一些实施方式中,本发明的数据存储方法还包括:响应于合并增量节点创建完成,查询目标叶子存储节点的父存储节点;创建第一指针指向父存储节点的第二索引信息节点,其中,第二索引信息节点记录了在父存储节点中删除目标叶子存储节点的索引信息;确定父存储节点对应的父节点标识,将父节点标识对应的节点指针所指向的物理地址更新为第二索引信息节点的存储地址。
在一些实施方式中,当确定目标叶子存储节点中已使用的节点容量低于容量下限且未查询到对应的合并增量节点,此时触发目标叶子存储节点开始进行节点合并。节点合并的整个过程包括三个阶段:首先在目标叶子存储节点上做合并,然后更新目标叶子存储节点的父存储节点。
一实例中,图6为本发明提供的数据存储方法中创建删除信息节点的一实施例的示意图。图7为本发明提供的数据存储方法中创建合并增量节点的一实施例的示意图。图8为本发明提供的节点合并过程中更新父存储节点的一实施例的示意图。图中,N1为目标叶子存储节点的节点标识,N0为第二叶子存储节点的节点标识,N2为N1的下一优先级的兄弟节点的节点标识, P为N0的父存储节点的节点标识,Q为根节点的节点标识。
目标叶子存储节点合并大概分为2步:
1、创建删除信息节点,通过CAS方式更新映射表中N1的节点指针指向删除信息节点。即如果要合并N1,需要在N1上标记删除,然后创建删除信息节点以表示N1已经被删除了。且删除信息节点中记录了N0的节点标识,当有查询线程或更新线程需要读取N1中的数据时,会先读取到删除信息节点,此时查询线程或更新线程就会自动应用至N0上。
2、根据N1的节点编号,在上一优先级的所有叶子存储节点中查询节点编号与目标叶子存储节点的节点编号相同的上一优先级叶子存储节点N0,将其作为N1的合并节点。在N0上创建合并增量节点,合并增量节点记录了指向N1的物理指针和N1的最小键值(即合并键值MK)。此时,N1中的数据存储状态转换成了存储于N0中。最后通过CAS方式更新映射表中N0的节点指针指向合并增量节点。
一实例中,目标叶子存储节点合并完成后,更新目标叶子存储节点的父存储节点的步骤为:在P上创建一个索引信息节点,利用索引信息节点删除P上关于N1的索引信息和N0的最大键值。安装索引信息节点,并通过CAS方式更新映射表中P的节点指针指向索引信息节点,至此完成N1合并的过程。
上述一种数据存储方法,根据优先级和节点编号,在预先分配好优先级的各叶子存储节点快速确定目标叶子存储节点的合并节点,避免节点合并过程中对合并节点的随机建立,进而避免了在频繁分配或后续回收叶子存储节点过程中出现大量不连续的小块存储空间,有利于实现规则化的高效管理,进一步通过数据的读写来修改结构操作,解耦指针的直接引用以使得节点合并无锁化,并通过CAS切换节点指针完成对树结构的修改提高效率,通过创建增量节点记录节点的更新,避免了对已存储的数据进行原地修改,保证了数据的安全性。
在一些实施方式中,本发明的数据存储方法还包括:响应于节点容量未超过对应的容量上限且未低于对应的容量下限,对目标叶子存储节点的访问进行加锁,并判断目标叶子存储节点是否存在增量链;响应于目标叶子存储节点不存在增量链,创建第一指针指向目标叶子存储节点的第一增量信息节点,并将更新数据存储至第一增量信息节点;将映射表中节点标识对应的节点指针所指向的物理地址更新为第一增量信息节点的存储地址。
在一些实施方式中,本发明的数据存储方法还包括:响应于目标叶子存储节点存在增量链,获取增量链的链头增量信息节点;创建第一指针指向链头增量信息节点的第二增量信息节点,将更新数据存储至第二增量信息节点,并将第二增量信息节点作为增量链中新的链头增量信息节点;将映射表中节点标识对应的节点指针所指向的物理地址更新为第二增量信息节点的存储地址。
在一些实施方式中,图9为本发明提供的利用增量信息节点进行数据更新的一实施例的示意图。图9中,N1、N2、Ni、Nj和Nk为各叶子存储节点的节点标识,P1、P2、Pi、Pj和Pk为各节点标识各自对应的节点指针。增量信息节点创建完成后,通过CAS方式更新映射表中叶子存储节点的节点指针指向增量信息节点。
在一些实施方式中,相同叶子存储节点上的多个增量信息节点能够构成一条增量链,每个新的增量信息节点会更新为该增量链的链头节点。
上述一种数据存储方法,更新叶子存储节点的时候,不使用直接修改叶子存储节点的内容的方式来进行更新,而是通过创建增量信息节点来描述对叶子存储节点的修改内容,避免写放大的问题,且增量信息节点允许通过加锁操作创建到叶子存储节点中,以避免其他线程对叶子存储节点更新过程的干扰,保证数据传输安全稳定。
在一些实施方式中,本发明的数据存储方法还包括:响应于增量链中增量信息节点数量达到预设数量,对目标叶子存储节点的访问进行加锁,并创建新的叶子存储节点,将目标叶子存储节点的存储数据与增量链中所有增量信息节点的存储数据合并后存入新的叶子存储节点,其中,新的叶子存储节点的优先级与目标叶子存储节点的优先级相同;将映射表中节点标识对应的节点指针所指向的物理地址更新为新的叶子存储节点的存储地址。
在一些实施方式中,随着更新的增加,增量链越来越长,查找叶子存储节点中内容时就需要遍历整个增量链,导致查找性能下降,因此需要设置一个预设数量,当超过该预设数量时触发增量链上增量信息节点和对应叶子存储节点的合并。在增量信息节点和目标叶子存储节点的合并过程中首先创建一个新的叶子存储节点,将增量链上增量信息节点的更新内容和目标叶子存储节点上的值合并后,将合并的结果更新到新的叶子存储节点中,通过CAS方式更新映射表中目标叶子存储节点的节点指针指向新的叶子存储节点,最后释放目标叶子存储节点中的资源。
上述一种数据存储方法,通过监测目标叶子存储节点上增量信息节点的数量是否超过预设数量来对增量链进行合并得到新的叶子存储节点,避免了增量链过长导致查找性能下降的问题,有效提高了异构固态存储设备的读写速度,且增量链合并允许对目标叶子存储节点进行加锁操作,以避免其他线程对叶子存储节点增量链合并过程的干扰,保证数据传输安全稳定。
在一些实施方式中,确定每个叶子存储节点的优先级,并确定各优先级的叶子存储节点的容量上限和容量下限的步骤,包括:根据固态存储设备的各叶子存储节点的存储性能确定各叶子存储节点的优先级;设置第一预设比例,根据第一预设比例划分固态存储设备的总存储容量得到各优先级的叶子存储节点分别对应的存储容量;设置第二预设比例,根据第二预设比例和每个存储容量,得到各优先级的叶子存储节点的容量上限;设置第三预设比例,根据第三预设比例和每个存储容量,得到各优先级的叶子存储节点的容量下限。
在一些实施方式中,根据第一预设比例划分固态存储设备的总存储容量得到各优先级的叶子存储节点分别对应的存储容量的步骤,包括:若叶子存储节点的优先级为第一级,将第一预设比例与总存储容量的乘积值作为叶子存储节点对应的存储容量;若叶子存储节点的优先级不为第一级,获取叶子存储节点的上一优先级叶子存储节点对应的上一优先级存储容量,将第一预设比例与上一优先级存储容量的乘积值作为叶子存储节点对应的存储容量。
在一些实施方式中,本发明的数据存储方法还包括:响应于映射表中父节点标识对应的节点指针所指向的物理地址更新为第二索引信息节点的存储地址,删除目标叶子存储节点内的存储数据。
在一些实施方式中,本发明的数据存储方法还包括:响应于映射表中节点标识对应的节点指针所指向的物理地址更新为新的叶子存储节点的存储地址,删除目标叶子存储节点内的存储数据,并对目标叶子存储节点的访问进行解锁。
在一些实施方式中,本发明的数据存储方法还包括:响应于确定所述更新数据存储完成,对目标叶子存储节点的访问进行解锁。
在一些实施方式中,在映射表中查询与节点标识对应的目标叶子存储节点的步骤,包括:在映射表中查询与节点标识对应的节点指针,根据节点指针指向的物理地址获取目标叶子存储节点。
在一些实施方式中,第一指针为物理地址指针,第二指针为逻辑地址指针。
上述一种数据存储方法,为每个叶子存储节点预先分配了优先级,能够在接收到更新指令后根据优先级和更新数据的访问频率或重要性等快速为更新数据分配相应优先级上叶子存储节点的节点标识,并预先构建映射表以保存各节点标识和对应叶子存储节点之间的映射关系,以便于在接收到更新指令后根据节点标识和节点指针准确查询到用以存储更新数据的目标叶子存储节点,且映射表能够实现相邻叶子存储节点间无锁化分裂和合并操作,有助于叶子存储节点间逻辑指针的修改,实现在固态存储设备中高效随机存储的目的,当目标叶子存储节点超过容量上限或低于容量下限表示目标叶子存储节点此时需要进行调整,若查询到目标叶子存储节点的分裂增量节点,表示目标叶子存储与下一优先级叶子存储节点间已发生了分裂关系,则直接将更新数据存入下一优先级叶子存储节点,若查询到目标叶子存储节点的合并增量节点,表示目标叶子存储与上一优先级叶子存储节点已发生了合并关系,则直接将更新数据存入上一优先级叶子存储节点,实现了数据存储的高效规范化管理,对于大容量、高吞吐的固态存储设备能够充分发挥其高效随机存储数据的优势,提高固态存储设备的读写速度。
在一些实施例中,请参照图10所示,本发明还一种数据存储系统,数据存储系统系统包括:
划分单元110,用于确定每个叶子存储节点的优先级,并确定各优先级的叶子存储节点的容量上限和容量下限;
查询单元120,用于响应于固态存储设备接收到更新指令,解析更新指令得到节点标识和更新数据,在映射表中查询与节点标识对应的目标叶子存储节点;
判断单元130,用于判断目标叶子存储节点的节点容量是否超过目标叶子存储节点对应的容量上限,或低于目标叶子存储节点对应的容量下限;
分裂存储单元140,用于响应于节点容量超过对应的容量上限,查询目标叶子存储节点的分裂增量节点,基于分裂增量节点将更新数据存储至下一优先级叶子存储节点;
合并存储单元150,用于响应于节点容量低于对应的容量下限,查询目标叶子存储节点的合并增量节点,基于合并增量节点将更新数据存储至上一优先级叶子存储节点。
上述一种数据存储系统,为每个叶子存储节点预先分配了优先级,能够在接收到更新指令后根据优先级和更新数据的访问频率或重要性等快速为更新数据分配相应优先级上叶子存储节点的节点标识,并在系统中预先构建映射表以保存各节点标识和对应叶子存储节点之间的映射关系,以便于在接收到更新指令后根据节点标识和节点指针准确查询到用以存储更新数据的目标叶子存储节点,且映射表能够实现相邻叶子存储节点间无锁化分裂和合并操作,有助于叶子存储节点间逻辑存储关系的修改,实现在固态存储设备中高效随机存储的目的,当目标叶子存储节点超过容量上限或低于容量下限表示目标叶子存储节点此时需要进行调整,若查询到目标叶子存储节点的分裂增量节点,表示目标叶子存储与下一优先级叶子存储节点间已发生了分裂关系,则直接将更新数据存入下一优先级叶子存储节点,若查询到目标叶子存储节点的合并增量节点,表示目标叶子存储与上一优先级叶子存储节点已发生了合并关系,则直接将更新数据存入上一优先级叶子存储节点,实现了数据存储的高效规范化管理,对于大容量、高吞吐的固态存储设备能够充分发挥其高效随机存储数据的优势,提高固态存储设备的读写速度。
基于同一发明构思,根据本发明的另一个方面,如图11所示,本发明的实施例还提供了一种计算机设备30,在该计算机设备30中包括处理器310以及存储器320,存储器320存储有可在处理器上运行的计算机程序321,处理器310执行程序时执行如上的方法的步骤。
基于同一发明构思,根据本发明的另一个方面,如图12所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有被处理器执行时执行如上方法的计算机程序410。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (19)

1.一种数据存储方法,其特征在于,用于固态存储设备,包括:
确定每个叶子存储节点的优先级,并确定各所述优先级的所述叶子存储节点的容量上限和容量下限;
响应于所述固态存储设备接收到更新指令,解析所述更新指令得到节点标识和更新数据,在映射表中查询与所述节点标识对应的目标叶子存储节点;
判断所述目标叶子存储节点的节点容量是否超过所述目标叶子存储节点对应的容量上限,或低于所述目标叶子存储节点对应的容量下限;
响应于所述节点容量超过对应的所述容量上限,查询所述目标叶子存储节点的分裂增量节点,基于所述分裂增量节点将所述更新数据存储至下一优先级叶子存储节点;
响应于所述节点容量低于对应的所述容量下限,查询所述目标叶子存储节点的合并增量节点,基于所述合并增量节点将所述更新数据存储至上一优先级叶子存储节点。
2.根据权利要求1所述的数据存储方法,其特征在于,还包括:
响应于所述节点容量超过对应的所述容量上限且未查询到所述分裂增量节点,确定所述目标叶子存储节点的优先级对应的下一优先级,并在所述下一优先级的所有所述叶子存储节点中,查询节点编号与所述目标叶子存储节点的节点编号相同的第一叶子存储节点;
创建第一指针指向所述目标叶子存储节点且第二指针指向所述第一叶子存储节点的分裂增量节点;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述分裂增量节点的存储地址,以指示所述更新数据存储至所述第一叶子存储节点。
3.根据权利要求1所述的数据存储方法,其特征在于,还包括:
响应于所述节点容量低于对应的所述容量下限且未查询到所述合并增量节点,判断所述目标叶子存储节点的优先级是否为第一优先级;
响应于所述目标叶子存储节点的优先级不为第一优先级,确定所述目标叶子存储节点的优先级对应的上一优先级,并在所述上一优先级的所有叶子存储节点中,查询节点编号与所述目标叶子存储节点的节点编号相同的第二叶子存储节点;
创建第一指针指向所述目标叶子节点的删除信息节点,其中,所述删除信息节点记录了所述第二叶子存储节点对应的节点标识;
在所述第二叶子存储节点上创建第一指针指向所述目标叶子存储节点的合并增量节点;
基于所述删除信息节点和所述合并增量节点更新所述映射表以指示所述更新数据存储至所述第二叶子存储节点。
4.根据权利要求3所述的数据存储方法,其特征在于,所述基于所述删除信息节点和所述合并增量节点更新所述映射表以指示所述更新数据存储至所述第二叶子存储节点的步骤,包括:
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述删除信息节点的存储地址,将所述映射表中所述第二叶子存储节点的节点标识对应的节点指针所指向的物理地址更新为所述合并增量节点的存储地址,并将更新后的所述映射表用于指示所述更新数据存储至所述第二叶子存储节点。
5.根据权利要求1所述的数据存储方法,其特征在于,还包括:
响应于所述节点容量未超过对应的所述容量上限且未低于对应的所述容量下限,对所述目标叶子存储节点的访问进行加锁,并判断所述目标叶子存储节点是否存在增量链;
响应于所述目标叶子存储节点不存在增量链,创建第一指针指向所述目标叶子存储节点的第一增量信息节点,并将所述更新数据存储至所述第一增量信息节点;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述第一增量信息节点的存储地址。
6.根据权利要求5所述的数据存储方法,其特征在于,还包括:
响应于所述目标叶子存储节点存在增量链,获取所述增量链的链头增量信息节点;
创建第一指针指向所述链头增量信息节点的第二增量信息节点,将所述更新数据存储至所述第二增量信息节点,并将所述第二增量信息节点作为所述增量链中新的链头增量信息节点;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述第二增量信息节点的存储地址。
7.根据权利要求2所述的数据存储方法,其特征在于,还包括:
响应于所述分裂增量节点创建完成,查询所述目标叶子存储节点的父存储节点;
创建第一指针指向所述父存储节点的第一索引信息节点,其中,所述第一索引信息节点记录了在所述父存储节点中增加所述第一叶子存储节点的索引信息;
确定所述父存储节点对应的父节点标识,将所述父节点标识对应的节点指针所指向的物理地址更新为所述第一索引信息节点的存储地址。
8.根据权利要求3所述的数据存储方法,其特征在于,还包括:
响应于所述合并增量节点创建完成,查询所述目标叶子存储节点的父存储节点;
创建第一指针指向所述父存储节点的第二索引信息节点,其中,所述第二索引信息节点记录了在所述父存储节点中删除所述目标叶子存储节点的索引信息;
确定所述父存储节点对应的父节点标识,将所述父节点标识对应的节点指针所指向的物理地址更新为所述第二索引信息节点的存储地址。
9.根据权利要求6所述的数据存储方法,其特征在于,还包括:
响应于所述增量链中增量信息节点数量达到预设数量,对所述目标叶子存储节点的访问进行加锁,并创建新的叶子存储节点,将所述目标叶子存储节点的存储数据与所述增量链中所有增量信息节点的存储数据合并后存入所述新的叶子存储节点,其中,所述新的叶子存储节点的优先级与所述目标叶子存储节点的优先级相同;
将所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述新的叶子存储节点的存储地址。
10.根据权利要求1所述的数据存储方法,其特征在于,所述确定每个叶子存储节点的优先级,并确定各所述优先级的所述叶子存储节点的容量上限和容量下限的步骤,包括:
根据所述固态存储设备的各所述叶子存储节点的存储性能确定各所述叶子存储节点的优先级;
设置第一预设比例,根据第一预设比例划分所述固态存储设备的总存储容量得到各所述优先级的所述叶子存储节点分别对应的存储容量;
设置第二预设比例,根据所述第二预设比例和每个所述存储容量,得到各所述优先级的叶子存储节点的容量上限;
设置第三预设比例,根据所述第三预设比例和每个所述存储容量,得到各所述优先级的叶子存储节点的容量下限。
11.根据权利要求10所述的数据存储方法,其特征在于,所述根据第一预设比例划分所述固态存储设备的总存储容量得到各所述优先级的所述叶子存储节点分别对应的存储容量的步骤,包括:
若所述叶子存储节点的所述优先级为第一级,将所述第一预设比例与所述总存储容量的乘积值作为所述叶子存储节点对应的存储容量;
若所述叶子存储节点的所述优先级不为第一级,获取所述叶子存储节点的上一优先级叶子存储节点对应的上一优先级存储容量,将所述第一预设比例与所述上一优先级存储容量的乘积值作为所述叶子存储节点对应的存储容量。
12.根据权利要求8所述的数据存储方法,其特征在于,还包括:
响应于所述映射表中所述父节点标识对应的节点指针所指向的物理地址更新为所述第二索引信息节点的存储地址,删除所述目标叶子存储节点内的存储数据。
13.根据权利要求9所述的数据存储方法,其特征在于,还包括:
响应于所述映射表中所述节点标识对应的节点指针所指向的物理地址更新为所述新的叶子存储节点的存储地址,删除所述目标叶子存储节点内的存储数据,并对所述目标叶子存储节点的访问进行解锁。
14.根据权利要求5或6所述的数据存储方法,其特征在于,还包括:
响应于确定所述更新数据存储完成,对所述目标叶子存储节点的访问进行解锁。
15.根据权利要求1所述的数据存储方法,其特征在于,所述在映射表中查询与所述节点标识对应的目标叶子存储节点的步骤,包括:
在所述映射表中查询与所述节点标识对应的节点指针,根据所述节点指针指向的物理地址获取目标叶子存储节点。
16.根据权利要求2所述的数据存储方法,其特征在于,所述第一指针为物理地址指针,所述第二指针为逻辑地址指针。
17.一种数据存储系统,其特征在于,包括:
划分单元,用于确定每个叶子存储节点的优先级,并确定各所述优先级的所述叶子存储节点的容量上限和容量下限;
查询单元,用于响应于固态存储设备接收到更新指令,解析所述更新指令得到节点标识和更新数据,在映射表中查询与所述节点标识对应的目标叶子存储节点;
判断单元,用于判断所述目标叶子存储节点的节点容量是否超过所述目标叶子存储节点对应的容量上限,或低于所述目标叶子存储节点对应的容量下限;
分裂存储单元,用于响应于所述节点容量超过对应的所述容量上限,查询所述目标叶子存储节点的分裂增量节点,基于所述分裂增量节点将所述更新数据存储至下一优先级叶子存储节点;
合并存储单元,用于响应于所述节点容量低于对应的所述容量下限,查询所述目标叶子存储节点的合并增量节点,基于所述合并增量节点将所述更新数据存储至上一优先级叶子存储节点。
18. 一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1至16任意一项所述的方法的步骤。
19.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1至16任意一项所述的方法的步骤。
CN202311551001.0A 2023-11-21 2023-11-21 一种数据存储方法、系统、设备及介质 Active CN117271531B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311551001.0A CN117271531B (zh) 2023-11-21 2023-11-21 一种数据存储方法、系统、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311551001.0A CN117271531B (zh) 2023-11-21 2023-11-21 一种数据存储方法、系统、设备及介质

Publications (2)

Publication Number Publication Date
CN117271531A true CN117271531A (zh) 2023-12-22
CN117271531B CN117271531B (zh) 2024-02-23

Family

ID=89202963

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311551001.0A Active CN117271531B (zh) 2023-11-21 2023-11-21 一种数据存储方法、系统、设备及介质

Country Status (1)

Country Link
CN (1) CN117271531B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117453853A (zh) * 2023-12-26 2024-01-26 天津南大通用数据技术股份有限公司 一种基于bw树的超长字符串跨页索引方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107667364A (zh) * 2015-06-04 2018-02-06 微软技术许可有限责任公司 使用硬件事务存储器控制索引的原子更新
CN110515957A (zh) * 2019-09-02 2019-11-29 深圳市网心科技有限公司 一种区块链数据存储的方法、系统、设备及可读存储介质
CN112395288A (zh) * 2020-09-25 2021-02-23 浙江大学 基于希尔伯特曲线的r树索引合并更新方法、装置及介质
CN112559529A (zh) * 2020-12-16 2021-03-26 杭州趣链科技有限公司 数据存储方法、装置、计算机设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107667364A (zh) * 2015-06-04 2018-02-06 微软技术许可有限责任公司 使用硬件事务存储器控制索引的原子更新
CN110515957A (zh) * 2019-09-02 2019-11-29 深圳市网心科技有限公司 一种区块链数据存储的方法、系统、设备及可读存储介质
CN112395288A (zh) * 2020-09-25 2021-02-23 浙江大学 基于希尔伯特曲线的r树索引合并更新方法、装置及介质
CN112559529A (zh) * 2020-12-16 2021-03-26 杭州趣链科技有限公司 数据存储方法、装置、计算机设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117453853A (zh) * 2023-12-26 2024-01-26 天津南大通用数据技术股份有限公司 一种基于bw树的超长字符串跨页索引方法

Also Published As

Publication number Publication date
CN117271531B (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
US10740308B2 (en) Key_Value data storage system
US7856437B2 (en) Storing nodes representing respective chunks of files in a data store
CN106294190B (zh) 一种存储空间管理方法及装置
CN117271531B (zh) 一种数据存储方法、系统、设备及介质
US20090037456A1 (en) Providing an index for a data store
CN111240588B (zh) 一种持久性内存对象存储系统
JP6501916B2 (ja) ファイルストレージにおけるインデックス付け実施方法及びシステム
CN105320775A (zh) 数据的存取方法和装置
CN110858162B (zh) 内存管理方法及装置、服务器
CN109063192B (zh) 一种高性能海量文件存储系统工作方法
US8190857B2 (en) Deleting a shared resource node after reserving its identifier in delete pending queue until deletion condition is met to allow continued access for currently accessing processor
US10558636B2 (en) Index page with latch-free access
CN109325022B (zh) 一种数据处理方法和装置
CN112711564B (zh) 合并处理方法以及相关设备
WO2016187975A1 (zh) 内存碎片整理方法及装置
CN113377292A (zh) 一种单机存储引擎
KR20090007926A (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
CN110825732A (zh) 数据查询方法、装置、计算机设备和可读存储介质
WO2022083287A1 (zh) 存储空间管理方法、装置、设备及存储介质
US20220365905A1 (en) Metadata processing method and apparatus, and a computer-readable storage medium
CN110413617B (zh) 一种根据数据量的大小动态调节哈希表组的方法
CN113760171A (zh) 一种元数据存储方法及装置
CN115904211A (zh) 一种存储系统、数据处理方法及相关设备
CN111797062B (zh) 数据处理方法、装置和分布式数据库系统
CN114969200B (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