CN115793976A - 数据存储方法、装置、电子设备和可读存储介质 - Google Patents
数据存储方法、装置、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN115793976A CN115793976A CN202211555332.7A CN202211555332A CN115793976A CN 115793976 A CN115793976 A CN 115793976A CN 202211555332 A CN202211555332 A CN 202211555332A CN 115793976 A CN115793976 A CN 115793976A
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- data storage
- storage
- stored
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据存储方法、装置、电子设备和可读存储介质,涉及数据处理技术领域。该方法包括:获取待存储数据和索引值;基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位;基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。本申请的方法通过优化数据结构,避免脏数据影响数据存储设备中其他数据的读写,提高了数据存储设备的读写效率,提升用户体验感。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及数据存储方法、装置、电子设备和可读存储介质。
背景技术
数据存储设备在存储数据的过程中,数据的存储结构对数据可靠性、读写性能、宕机恢复等方面都具有至关重要的影响。
在数据存储设备给磁盘存储数据的过程中,经常会面临数据存储设备突然宕机的情形,不好的数据存储结构会导致数据在磁盘中未写入完整,使该数据成为脏数据,导致数据存储设备中其他数据的读写发生错误,降低了数据存储设备的读写效率,降低了用户体验感。
发明内容
本申请提供了一种数据存储方法、装置、电子设备和可读存储介质,通过优化数据结构,避免脏数据影响数据存储设备中其他数据的读写,提高了数据存储设备的读写效率,提升用户体验感。
第一方面,本申请提供一种数据存储方法,应用于数据存储设备,该方法包括:
获取待存储数据和索引值;
基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,存储标记位用于指示数据结构是否可用,有效标记位用于指示当前有效的数据存储位为第一数据存储位或第二数据存储位,第一数据存储位和第二数据存储位用于存储数据;
基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。
结合第一方面,在第一方面的某些实现方式中,在从树状索引结构中确定目标叶子节点之前,上述方法还包括:
若树状索引结构中不存在与索引值对应的叶子节点,在树状索引结构中新增叶子节点;
在新增叶子节点中存储索引值和存储位置信息。
结合第一方面,在第一方面的某些实现方式中,在将待存储数据存储至第一数据存储位之后,上述方法还包括:
基于索引值,从树状索引结构中确定目标叶子节点;
基于目标叶子节点,获取存储位置信息;
基于存储位置信息,确定待存储数据的存储位置;
从存储位置中获取数据结构;
基于数据结构中的存储标记位,判断数据结构是否可用;
在数据结构可用的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;
在当前有效的数据存储位为第一数据存储位的情况下,获取第一数据存储位中存储的数据。
结合第一方面,在第一方面的某些实现方式中,数据结构还包括:写入锁定位和/或数据位长度,写入锁定位用于指示数据结构是否可以修改,数据位长度用于指示第一数据存储位或第二数据存储位所存储的数据的长度。
结合第一方面,在第一方面的某些实现方式中,上述方法还包括:
在索引值对应的数据结构中存储的数据需要修改的情况下,基于索引值,确定目标叶子节点;
基于目标叶子节点,获取存储位置信息;
基于存储位置信息,确定待存储数据的存储位置;
从存储位置中获取数据结构;
基于数据结构中的写入锁定位,判断数据结构是否可以修改;
在数据结构可以修改的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;
在当前有效的数据存储位为第一数据存储位的情况下,将修改数据存入第二数据存储位,并将有效标记位设为第二数据存储位有效。
结合第一方面,在第一方面的某些实现方式中,上述方法还包括:
在索引值对应的数据结构中存储的数据需要删除的情况下,基于索引值,确定目标叶子节点;
基于目标叶子节点,获取存储位置信息;
基于存储位置信息,确定待存储数据的存储位置;
从存储位置中获取数据结构;
将数据结构中的存储标记位和有效标记位设为初始状态,将第一数据存储位和第二数据存储位中的数据删除,并从树状索引结构中删除目标叶子节点。
结合第一方面,在第一方面的某些实现方式中,树状索引结构包括根树索引结构和多个子树索引结构,目标叶子节点位于多个子树索引结构中的一个子树索引结构中,根树索引结构和多个子树索引结构分别存储于数据存储设备的不同磁盘中。
第二方面,本申请提供另一种数据存储装置,包括:
获取模块,用于获取待存储数据和索引值;
处理模块,用于基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,存储标记位用于指示数据结构是否可用,有效标记位用于指示当前有效的数据存储位为第一数据存储位或第二数据存储位,第一数据存储位和第二数据存储位用于存储数据;以及,基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。
结合第二方面,在第二方面的某些实现方式中,处理模块还用于:在从树状索引结构中确定目标叶子节点之前,若树状索引结构中不存在与索引值对应的叶子节点,在树状索引结构中新增叶子节点;在新增叶子节点中存储索引值和存储位置信息。
结合第二方面,在第二方面的某些实现方式中,处理模块还用于:在将待存储数据存储至第一数据存储位之后,基于索引值,从树状索引结构中确定目标叶子节点;
获取模块还用于:基于目标叶子节点,获取存储位置信息;
处理模块还用于:基于存储位置信息,确定待存储数据的存储位置;
获取模块还用于:从存储位置中获取数据结构;
处理模块还用于:基于数据结构中的存储标记位,判断数据结构是否可用;在数据结构可用的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;
获取模块还用于:在当前有效的数据存储位为第一数据存储位的情况下,获取第一数据存储位中存储的数据。
结合第二方面,在第二方面的某些实现方式中,上述数据结构还包括:写入锁定位和/或数据位长度,写入锁定位用于指示数据结构是否可以修改,数据位长度用于指示第一数据存储位或第二数据存储位所存储的数据的长度。
结合第二方面,在第二方面的某些实现方式中,处理模块还用于:在索引值对应的数据结构中存储的数据需要修改的情况下,基于索引值,确定目标叶子节点;
获取模块还用于:基于目标叶子节点,获取存储位置信息;
处理模块还用于:基于存储位置信息,确定待存储数据的存储位置;
获取模块还用于:从存储位置中获取数据结构;
处理模块还用于:基于数据结构中的写入锁定位,判断数据结构是否可以修改;在数据结构可以修改的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;以及,在当前有效的数据存储位为第一数据存储位的情况下,将修改数据存入第二数据存储位,并将有效标记位设为第二数据存储位有效。
结合第二方面,在第二方面的某些实现方式中,处理模块还用于:在索引值对应的数据结构中存储的数据需要删除的情况下,基于索引值,确定目标叶子节点;
获取模块还用于:基于目标叶子节点,获取存储位置信息;
处理模块还用于:基于存储位置信息,确定待存储数据的存储位置;
获取模块还用于:从存储位置中获取数据结构;
处理模块还用于:将数据结构中的存储标记位和有效标记位设为初始状态,将第一数据存储位和第二数据存储位中的数据删除,并从树状索引结构中删除目标叶子节点。
结合第二方面,在第二方面的某些实现方式中,树状索引结构包括根树索引结构和多个子树索引结构,目标叶子节点位于多个子树索引结构中的一个子树索引结构中,根树索引结构和多个子树索引结构分别存储于数据存储设备的不同磁盘中。
第三方面,本申请提供一种电子设备,包括:
至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面所述的数据存储方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面中国所述的数据存储方法。
本申请提供的数据存储方法,基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。在存储设备宕机恢复后,若待存储数据未写完整,该存储标记位为不可用,指示该数据结构无效,存储设备在读取数据时不会读取该无效的数据结构中的数据,避免未写入完整的数据影响数据存储设备中其他数据的读写,提高了数据存储设备的读写效率,提升了用户体验感。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种数据存储方法的应用场景示意图;
图2为本申请实施例提供的一种数据存储方法的流程示意图;
图3为本申请实施例提供的一种树状索引结构的示意图;
图4为本申请实施例提供的数据存储装置的结构示意图;
图5为本申请实施例提供的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
数据存储设备在存储数据的过程中,数据的存储结构对数据可靠性、读写性能、宕机恢复等方面都具有至关重要的影响。在数据存储设备给磁盘存储数据的过程中,经常会面临存储设备突然宕机的情形,不好的数据存储结构会导致数据在磁盘中未写入完整,使该数据成为脏数据,导致数据存储设备中其他数据的读写发生错误,降低了数据存储设备的读写效率,降低了用户体验感。
有鉴于此,本申请实施例提出了一种数据存储方法,基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。在存储设备宕机恢复后,若待存储数据未写完整,该存储标记位处于初始值,指示该数据结构不可用,指示该数据结构无效,存储设备在读取数据时不会读取该无效的数据结构中的数据,避免未写入完整的数据影响数据存储设备中其他数据的读写,提高了数据存储设备的读写效率,提升了用户体验感。
图1为本申请实施例提供的一种数据存储方法的应用场景示意图。如图1所示,该应用场景中包括客户端101、服务器104、数据存储设备105。客户端101与服务器104存在连接,可以交互数据,服务器104与数据存储设备105存在连接。客户端101上可以部署业务应用,客户端101可以将业务应用产生的业务数据发送至服务器104,服务器104上部署了与该业务应用对应的后端应用。服务器104收到业务数据后,可以对业务数据进行处理,并将需要保存的数据发送至数据存储设备105。对应地,数据存储设备105接收需要保存的数据后,可以将需要保存的数据写入数据存储设备105的内存中。
在另一种可能的实现方式中,服务器104上部署的上述业务应用对应的后端应用可以部署在数据存储设备105中。客户端101可以将业务应用产生的业务数据发送至数据存储设备105,由数据存储设备105保存该业务数据。
可选地,图1所示的应用场景中的客户端的数量可以有多个,例如该应用场景还包括客户端102和客户端103,本申请实施例对此不做限定。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图2为本申请实施例提供的一种数据存储方法的流程示意图。该数据存储方法200可以应用于上述图1所示的应用场景中,该方法可以由图1中所示的数据存储设备105执行对应的步骤,也可以由服务器、计算机等其他物理设备执行,本实施例对于执行主体的具体产品形态和数量不作具体限制。如图2所示,该方法包括:
S201、获取待存储数据和索引值。
应理解,数据存储设备可以基于获取的待存储数据,生成索引值,示例性地,待存储信息为订单信息,数据存储设备可以基于订单信息中的订单号生成索引值(例如索引值:25)。
S202、基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,存储标记位用于指示数据结构是否可用,有效标记位用于指示当前有效的数据存储位为第一数据存储位或第二数据存储位,第一数据存储位和第二数据存储位用于存储数据。
示例性地,树状索引结构可以是B+树、B树等,本申请对此不做限定。
应理解,目标叶子节点是树状索引结构中最底段的节点。数据存储设备可以根据树状结构的规则确定目标叶子节点,例如数据存储设备可以根据B+树结构的规则确定目标叶子节点。目标叶子节点可以包括存储位置信息和索引值。
应理解,数据存储设备可以基于目标叶子节点中的存储位置信息找到待存储数据可以存储的位置。
存储位置的数据结构即为待存储数据在该存储位置存储时的数据结构,该数据结构中可以包括存储标记位、有效标记位、第一数据存储位和第二数据存储位等。
示例性地,存储标记位的值可以是0或1,0指示该数据结构不可用,即该数据结构为失效的,1指示该数据结构可用,即该数据结构为有效的。存储标记位的初始值可以为0。
示例性地,有效标记位的值可以是0或1,0指示第一数据存储位是有效的,即第一数据存储位中存储的数据是有效的,1指示第二数据存储位是有效的,即第二数据存储位中存储的数据是有效的。有效标记位的初始值可以为0。
应理解,待存储数据可以存储于数据存储位1中或数据存储位2中。
S203、基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。
示例性地,数据存储设备将待存储数据存储至数据结构中的第一数据存储位,在存储完成后,修改存储标记位的值为1,1指示待存储数据所在的数据结构可用,并修改有效标记位的值为0,0指示第一数据存储位中存储的数据有效。
应理解,在数据存储设备未完整的将待存储数据信存储至第一数据存储位的情况下,数据存储设备并未将存储标记位设为可用,存储标记位处于初始值,指示该数据结构不可用。
本申请提供的数据存储方法,基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。在存储设备宕机恢复后,若待存储数据未写完整,该存储标记位处于初始值,指示该数据结构不可用,存储设备在读取数据时不会读取该无效的数据结构中的数据,避免未写入完整的数据影响数据存储设备中其他数据的读写,提高了数据存储设备的读写效率,提升了用户体验感。
可选地,在从树状索引结构中确定目标叶子节点之前,上述方法还包括:
若树状索引结构中不存在与索引值对应的叶子节点,在树状索引结构中新增叶子节点;
在新增叶子节点中存储索引值和存储位置信息。
本申请实施例提供的方法,通过新增叶子节点,并在新增叶子节点中存储索引值和存储位置信息,为待存储数据提供索引,在待存储数据存储后,方便后续查询。
获取存储位置信息的方法可以是以下两种方法:
在一种可能的实现方式中,存储位置信息可以是数据存储设备选择的一个空闲位置,并将该空闲位置的位置信息作为存储位置信息。
在另一种可能的实现方式中,待存储数据可以以上述数据结构的形式存储于数据存储设备中的空闲位置(例如,数据存储设备中的磁盘中的空闲位置),数据存储设备将该空闲位置的位置信息,保存至新增叶子节点中,作为存储位置信息。
应理解,新增的叶子节点可以是目标叶子节点。
应理解,新增叶子节点后的树状索引结构需要满足树状索引结构的规则,在新增叶子节点后的树状结构无法满足树状索引结构规则的情况下,树状结构可以根据树状索引结构的规则进行部分重组。示例性地,树状索引结构需要满足B+树的规则,若B+树的阶数为m,B+树中每个节点最多有m-1个子节点,每个节点最多有m-1个值,每个节点中的m-1个值通过大小递增顺序排列,排列后的值将子节点分成了m个区间,每个子节点的值在父节点的区间内。
数据存储设备可以通过上述方法将待存储数据存入数据存储设备中。此外,数据存储设备可以进行数据查询,待查询数据可以是通过上述方法200存入数据存储设备中的上述待存储数据,也可以是其它的已存储在数据存储设备中的数据,本申请实施例对此不作限定。
下面以待查询数据是通过上述方法200存入数据存储设备中的上述待存储数据为例,介绍数据存储设备进行数据查询的方法。该方法包括下列步骤:
基于索引值,从树状索引结构中确定目标叶子节点;
基于目标叶子节点,获取存储位置信息;
基于存储位置信息,确定待存储数据的存储位置;
从存储位置中获取数据结构;
基于数据结构中的存储标记位,判断数据结构是否可用;
在数据结构可用的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;
在当前有效的数据存储位为第一数据存储位的情况下,获取第一数据存储位中存储的数据。
本申请实施例提供的方法,在数据结构可用的情况下,通过数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位,方便准确的查询当前数据结构中的有效数据。
应理解,数据存储设备可以基于待查询数据中的信息,生成索引值,示例性地,待查询数据为订单信息,数据存储设备获取订单信息中的订单号,数据存储设备可以基于该订单号,生成索引值。
示例性地,数据结构中的存储标记位的值为1,数据存储设备判断该数据结构可用,数据结构中的有效标记位的值为0,数据存储设备判断当前有效的数据存储位为第一数据存储位,获取第一数据存储位中存储的数据,作为查询结果。
示例性地,数据结构中的存储标记位为0,数据存储设备判断该数据结构不可用,返回查询不到数据,并将目标叶子节点删除。
可选地,数据结构还包括:写入锁定位和/或数据位长度,写入锁定位用于指示数据结构是否可以修改,数据位长度用于指示第一数据存储位或第二数据存储位所存储的数据的长度。
示例性,写入锁定位的值可以是0或1,0指示该数据结构当前可修改,1指示该数据结构当前不可修改。写入锁定位的初始值可以为0。
应理解,第一数据存储位存储的数据长度与第二数据存储位存储的数据长度一致,数据位长度在数据结构固定后不可修改。示例性地,在第一数据存储位存储待存储数据,待存储数据的数据位长度为32,在第二数据存储位存储数据位长度为32的空数据。
数据存储设备可以通过上述方法进行数据存储和数据查询。此外,数据存储设备可以进行数据修改,待修改的数据可以是通过上述方法200存入数据存储设备中的上述待存储数据,也可以是其它的已存储在数据存储设备中的数据,本申请实施例对此不作限定。
下面以待修改的数据是通过上述方法200存入数据存储设备中的上述待存储数据为例,介绍数据存储设备进行数据修改的方法:
在一种可能的实现方式中,在索引值对应的数据结构中存储的数据需要修改的情况下,基于索引值,确定目标叶子节点;
基于目标叶子节点,获取存储位置信息;
基于存储位置信息,确定待存储数据的存储位置;
从存储位置中获取数据结构;
基于数据结构中的写入锁定位,判断数据结构是否可以修改;
在数据结构可以修改的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;
在当前有效的数据存储位为第一数据存储位的情况下,将修改数据存入第二数据存储位,并将有效标记位设为第二数据存储位有效。
上述实施例可以通过写入锁定位,判断数据结构是否可以修改,在数据结构可以修改的情况下才可以对数据结构中的数据进行修改,避免数据结构中的数据被篡改。
应理解,数据存储设备可以基于待修改数据中的信息,生成索引值。示例性地,待修改数据为订单信息,数据存储设备获取订单信息中的订单号,数据存储设备可以基于该订单号,生成索引值。
示例性地,数据结构中的写入锁定位的值为0,数据存储设备判断该数据结构当前可以修改,数据结构中的有效标记位的值为0,数据存储设备判断当前有效的数据存储位为第一数据存储位,数据存储设备将修改数据存入第二数据存储位,将该数据结构中有效标记位修改为1,1指示第二数据存储位中的数据有效。
示例性地,数据结构中的写入锁定位的值为1,数据存储设备判断该数据结构当前不可以修改,处于锁定状态,数据存储设备等待写入锁定位的值变为0后,即该数据结构当前可以修改,处于非锁定状态后,数据存储设备基于数据结构中的有效标记位的值为0,判断当前有效的数据存储位为第一数据存储位,数据存储设备将修改数据存入第二数据存储位,并将该数据结构中有效标记位修改为1,1指示第二数据存储位中的数据有效。
应理解,在将修改数据存入第二数据存储位,存入不完整的情况下,数据存储设备不会将该数据结构中有效标记位进行修改,即修改数据未生效,该数据结构中有效标记位依然指示第一数据存储位有效,即原数据有效。在下次查询该数据时,读取的依然是原数据。
在另一种可能的实现方式中,在索引值对应的数据结构中存储的数据需要修改的情况下,基于索引值,确定目标叶子节点;
基于目标叶子节点,获取存储位置信息;
基于存储位置信息,确定待存储数据的存储位置;
从存储位置中获取数据结构;
基于数据结构中的写入锁定位,判断数据结构是否可以修改;
在数据结构可以修改的情况下,将写入锁定位设为数据结构不可以修改;基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;
在当前有效的数据存储位为第一数据存储位的情况下,将修改数据存入第二数据存储位,将有效标记位设为第二数据存储位有效,并将写入锁定位设为数据结构可以修改。
示例性地,数据结构中的写入锁定位的值为0,数据存储设备判断该数据结构当前可以修改,将写入锁定位设为1,数据结构中的有效标记位的值为0,数据存储设备判断当前有效的数据存储位为第一数据存储位,数据存储设备将修改数据存入第二数据存储位,将该数据结构中有效标记位修改为1,1指示第二数据存储位中的数据有效,并将写入锁定位设为0。
示例性地,数据结构中的写入锁定位的值为1,数据存储设备判断该数据结构当前不可以修改,处于锁定状态,数据存储设备等待写入锁定位的值变为0后,即该数据结构当前可以修改,处于非锁定状态后,数据存储设备基于数据结构中的有效标记位的值为0,判断当前有效的数据存储位为第一数据存储位,数据存储设备将修改数据存入第二数据存储位,并将该数据结构中有效标记位修改为1,1指示第二数据存储位中的数据有效,并将写入锁定位设为0。
上述实施例可以通过写入锁定位,避免数据存储设备同时对同一数据结构进行不同的数据修改,防止并发写入导致无法明确第一数据存储位和第二数据存储位中的有效数据。
数据存储设备可以通过上述方法进行数据存储、数据查询和数据修改。此外,数据存储设备可以进行数据删除,待删除的数据可以是通过上述方法200存入数据存储设备中的上述待存储数据,也可以是其它的已存储在数据存储设备中的数据,本申请实施例对此不作限定。
下面以待删除的数据是通过上述方法200存入数据存储设备中的上述待存储数据为例,介绍数据存储设备进行数据删除的方法。该方法包括下列步骤:
在索引值对应的数据结构中存储的数据需要删除的情况下,基于索引值,确定目标叶子节点;
基于目标叶子节点,获取存储位置信息;
基于存储位置信息,确定待存储数据的存储位置;
从存储位置中获取数据结构;
将数据结构中的存储标记位和有效标记位设为初始状态,将第一数据存储位和第二数据存储位中的数据删除,并从树状索引结构中删除目标叶子节点。
上述实施例通过目标叶子节点可以快速查找待删除的数据所在的数据结构,将数据结构中的第一和第二数据存储位中的数据删除,并将目标叶子节点进行删除,释放数据存储设备的内存空间,提高数据存储设备的有效存储内存。
应理解,数据存储设备可以基于待删除数据中的信息,生成索引值。
示例性地,数据结构中的存储标记位和有效标记位的初始状态对应的值为0。
可选地,树状索引结构包括根树索引结构和多个子树索引结构,目标叶子节点位于多个子树索引结构中的一个子树索引结构中,根树索引结构和多个子树索引结构分别存储于数据存储设备的不同磁盘中。
应理解,根树索引结构和多个子树索引结构,均可以由一个根节点和多层子节点组成,根树的叶子节点指向子树,存储子树的位置信息,做子树的路由。
示例性地,根树索引结构和多个子树索引结构均可以是B+树结构。
还应理解,根树索引结构和多个子树索引结构的存储位置可以有以下方式:
在一种可能的实现方式中,根树索引结构可以在数据存储设备的一个磁盘中,多个子树索引结构可以分别在数据存储设备的其它磁盘中。
在另一种可能的实现方式中,根树索引结构可以和一部分子树索引结构在数据存储设备的一个磁盘中,多个子树索引结构中的另一部分可以分别在数据存储设备的其它磁盘中。
上述实施例将传统的单一树结构拆分成根树索引结构和多个子树索引结构,并可以将根树索引结构和多个子树索引结构分别存储在不同的磁盘中,打破了数据存储的空间性限制,能够同时在多个磁盘上进行读写,多个磁盘的读写性能彼此之间不受影响,提高了数据存储设备的读写效率。
下面结合图3,对树状索引结构进行介绍。图3中树状索引结构包括一个根树索引结构、子树1索引结构和子树2索引结构。根树索引结构包括一个根节点、根树叶子节点1和根树叶子节点2,根树叶子节点1指向子树1索引结构,根树叶子节点2指向子树2索引结构。子树1的索引结构为3阶B+树结构,子树1的索引结构中每个节点最多有2个子节点。子树1的根节点有子节点1和子节点2,子节点1有叶子节点1和叶子节点2,子节点2有叶子节点3。子树2的索引结构为3阶B+树结构,子树2的索引结构中每个节点最多有2个子节点。子树2的根节点有子节点3和子节点4,子节点3有叶子节点4和叶子节点5,子节点4有叶子节点6。
图4为本申请实施例提供的一种数据存储装置的结构示意图。如图4所示,该数据存储装置400包括:获取模块401和处理模块402。
获取模块401,用于获取待存储数据和索引值;
处理模块402,用于基于索引值,从树状索引结构中确定目标叶子节点,目标叶子节点包括存储位置信息,存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,存储标记位用于指示数据结构是否可用,有效标记位用于指示当前有效的数据存储位为第一数据存储位或第二数据存储位,第一数据存储位和第二数据存储位用于存储数据;以及,基于存储位置信息,确定待存储数据的存储位置,并将待存储数据存储至第一数据存储位,并将存储标记位设为可用,将有效标记位设为第一数据存储位有效。
可选地,处理模块402还用于:在从树状索引结构中确定目标叶子节点之前,若树状索引结构中不存在与索引值对应的叶子节点,在树状索引结构中新增叶子节点;以及,在新增叶子节点中存储索引值和存储位置信息。
可选地,处理模块402还用于:在将待存储数据存储至第一数据存储位之后,基于索引值,从树状索引结构中确定目标叶子节点;
获取模块401还用于:基于目标叶子节点,获取存储位置信息;
处理模块402还用于:基于存储位置信息,确定待存储数据的存储位置;
获取模块401还用于:从存储位置中获取数据结构;
处理模块402还用于:基于数据结构中的存储标记位,判断数据结构是否可用;在数据结构可用的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;
获取模块401还用于:在当前有效的数据存储位为第一数据存储位的情况下,获取第一数据存储位中存储的数据。
可选地,上述数据结构还包括:写入锁定位和/或数据位长度,写入锁定位用于指示数据结构是否可以修改,数据位长度用于指示第一数据存储位或第二数据存储位所存储的数据的长度。
可选地,处理模块402还用于:在索引值对应的数据结构中存储的数据需要修改的情况下,基于索引值,确定目标叶子节点;
获取模块401还用于:基于目标叶子节点,获取存储位置信息;
处理模块402还用于:基于存储位置信息,确定待存储数据的存储位置;
获取模块401还用于:从存储位置中获取数据结构;
处理模块402还用于:基于数据结构中的写入锁定位,判断数据结构是否可以修改;在数据结构可以修改的情况下,基于数据结构中的有效标记位,判断当前有效的数据存储位为第一数据存储位或第二数据存储位;以及,在当前有效的数据存储位为第一数据存储位的情况下,将修改数据存入第二数据存储位,并将有效标记位设为第二数据存储位有效。
可选地,处理模块402还用于:在索引值对应的数据结构中存储的数据需要删除的情况下,基于索引值,确定目标叶子节点;
获取模块401还用于:基于目标叶子节点,获取存储位置信息;
处理模块402还用于:基于存储位置信息,确定待存储数据的存储位置;
获取模块401还用于:从存储位置中获取数据结构;
处理模块402还用于:将数据结构中的存储标记位和有效标记位设为初始状态,将第一数据存储位和第二数据存储位中的数据删除,并从树状索引结构中删除目标叶子节点。
可选地,树状索引结构包括根树索引结构和多个子树索引结构,目标叶子节点位于多个子树索引结构中的一个子树索引结构中,根树索引结构和多个子树索引结构分别存储于数据存储设备的不同磁盘中。
本申请实施例提供的数据存储装置400,适用于上述方法实施例,在此不再赘述。
本申请实施例还提供了一种电子设备500,如图5所示,图5所示的电子设备包括:处理器501和存储器502。其中,处理器501和存储器502相连,如通过总线503相连。可选地,电子设备还可以包括收发器。需要说明的是,实际应用中收发器不限于一个,该电子设备的结构并不构成对本申请实施例的限定。
处理器501可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器501也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线503可包括一通路,在上述组件之间传送信息。总线503可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线503或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线503等。总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线503或一种类型的总线503。
存储器502可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器502用于存储执行本申请方案的应用程序代码,并由处理器501来控制执行。处理器501用于执行存储器502中存储的应用程序代码,以实现前述方法实施例所示的内容。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。还可以为服务器等。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
本申请提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中的相应内容。
本申请还提供了一种计算机程序产品,该计算机程序产品包括计算机程序(也可以称为代码,或指令),当该计算机程序在计算机上运行时,该计算机可以执行上述方法实施例中的相应内容。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种数据存储方法,其特征在于,应用于数据存储设备,所述方法包括:
获取待存储数据和索引值;
基于所述索引值,从树状索引结构中确定目标叶子节点,所述目标叶子节点包括存储位置信息,所述存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,所述存储标记位用于指示所述数据结构是否可用,所述有效标记位用于指示当前有效的数据存储位为所述第一数据存储位或所述第二数据存储位,所述第一数据存储位和所述第二数据存储位用于存储数据;
基于所述存储位置信息,确定所述待存储数据的存储位置,并将所述待存储数据存储至所述第一数据存储位,并将所述存储标记位设为可用,将所述有效标记位设为所述第一数据存储位有效。
2.根据权利要求1所述的方法,其特征在于,在所述从树状索引结构中确定目标叶子节点之前,所述方法还包括:
若所述树状索引结构中不存在与所述索引值对应的叶子节点,在所述树状索引结构中新增叶子节点;
在所述新增叶子节点中存储所述索引值和所述存储位置信息。
3.根据权利要求1所述的方法,其特征在于,在所述将所述待存储数据存储至所述第一数据存储位之后,所述方法还包括:
基于所述索引值,从所述树状索引结构中确定所述目标叶子节点;
基于所述目标叶子节点,获取存储位置信息;
基于所述存储位置信息,确定所述待存储数据的存储位置;
从所述存储位置中获取数据结构;
基于所述数据结构中的存储标记位,判断所述数据结构是否可用;
在所述数据结构可用的情况下,基于所述数据结构中的有效标记位,判断当前有效的数据存储位为所述第一数据存储位或所述第二数据存储位;
在当前有效的数据存储位为所述第一数据存储位的情况下,获取第一数据存储位中存储的数据。
4.根据权利要求1所述的方法,其特征在于,所述数据结构还包括:写入锁定位和/或数据位长度,所述写入锁定位用于指示所述数据结构是否可以修改,所述数据位长度用于指示所述第一数据存储位或所述第二数据存储位所存储的数据的长度。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述索引值对应的数据结构中存储的数据需要修改的情况下,基于所述索引值,确定所述目标叶子节点;
基于所述目标叶子节点,获取存储位置信息;
基于所述存储位置信息,确定所述待存储数据的存储位置;
从所述存储位置中获取数据结构;
基于所述数据结构中的写入锁定位,判断所述数据结构是否可以修改;
在所述数据结构可以修改的情况下,基于所述数据结构中的有效标记位,判断当前有效的数据存储位为所述第一数据存储位或所述第二数据存储位;
在当前有效的数据存储位为所述第一数据存储位的情况下,将修改数据存入所述第二数据存储位,并将所述有效标记位设为所述第二数据存储位有效。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述索引值对应的数据结构中存储的数据需要删除的情况下,基于所述索引值,确定所述目标叶子节点;
基于所述目标叶子节点,获取存储位置信息;
基于所述存储位置信息,确定所述待存储数据的存储位置;
从所述存储位置中获取数据结构;
将所述数据结构中的存储标记位和有效标记位设为初始状态,将所述第一数据存储位和所述第二数据存储位中的数据删除,并从所述树状索引结构中删除所述目标叶子节点。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述树状索引结构包括根树索引结构和多个子树索引结构,所述目标叶子节点位于所述多个子树索引结构中的一个子树索引结构中,所述根树索引结构和所述多个子树索引结构分别存储于所述数据存储设备的不同磁盘中。
8.一种数据存储装置,其特征在于,包括:
获取模块,用于获取待存储数据和索引值;
处理模块,用于基于所述索引值,从树状索引结构中确定目标叶子节点,所述目标叶子节点包括存储位置信息,所述存储位置信息对应的存储位置的数据结构包括存储标记位、有效标记位、第一数据存储位和第二数据存储位,所述存储标记位用于指示所述数据结构是否可用,所述有效标记位用于指示当前有效的数据存储位为所述第一数据存储位或所述第二数据存储位,所述第一数据存储位和所述第二数据存储位用于存储数据;以及,基于所述存储位置信息,确定所述待存储数据的存储位置,并将所述待存储数据存储至所述第一数据存储位,并将所述存储标记位设为可用,将所述有效标记位设为所述第一数据存储位有效。
9.一种电子设备,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1-7任一项所述的数据存储方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211555332.7A CN115793976A (zh) | 2022-12-06 | 2022-12-06 | 数据存储方法、装置、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211555332.7A CN115793976A (zh) | 2022-12-06 | 2022-12-06 | 数据存储方法、装置、电子设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115793976A true CN115793976A (zh) | 2023-03-14 |
Family
ID=85473390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211555332.7A Pending CN115793976A (zh) | 2022-12-06 | 2022-12-06 | 数据存储方法、装置、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115793976A (zh) |
-
2022
- 2022-12-06 CN CN202211555332.7A patent/CN115793976A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110162525B (zh) | 基于b+树的读写冲突解决方法、装置及存储介质 | |
CN107273042B (zh) | 重复删除dram系统算法架构的存储器模块及方法 | |
CN110113393B (zh) | 一种消息推送方法、装置、电子设备及介质 | |
CN107273397B (zh) | 用于有效的存储器在线重复删除应用的虚拟桶多哈希表 | |
CN111782656B (zh) | 数据读写方法及装置 | |
CN109976669B (zh) | 一种边缘存储方法、装置和存储介质 | |
US20230177009A1 (en) | Techniques for handling letter case in file systems | |
CN113568566A (zh) | 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器 | |
CN109460406B (zh) | 一种数据处理方法及装置 | |
CN114020525B (zh) | 故障隔离方法、装置、设备及存储介质 | |
KR102698516B1 (ko) | 네트워크 키 값 인덱싱 설계 | |
CN114880289A (zh) | 一种文件分组显示方法及计算设备 | |
CN111857600B (zh) | 一种数据读写方法及装置 | |
CN113407376A (zh) | 一种数据恢复方法、装置及电子设备 | |
CN114443598A (zh) | 写数据方法、装置、计算机设备及存储介质 | |
CN112115521B (zh) | 数据访问方法及装置 | |
CN115793976A (zh) | 数据存储方法、装置、电子设备和可读存储介质 | |
CN108804625B (zh) | 一种lsm树的优化方法、装置及计算机设备 | |
CN113590623B (zh) | 一种用于数据深分页查询的方法、装置及设备 | |
CN112988473B (zh) | 一种备份数据实时恢复方法及系统 | |
CN112907198B (zh) | 业务状态流转维护方法、装置及电子设备 | |
CN108388424A (zh) | 一种调用接口数据的方法、装置及电子设备 | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN108694209B (zh) | 基于对象的分布式索引方法和客户端 | |
CN107305582B (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 |