CN113032349A - 数据存储方法、装置、电子设备及计算机可读介质 - Google Patents

数据存储方法、装置、电子设备及计算机可读介质 Download PDF

Info

Publication number
CN113032349A
CN113032349A CN201911357062.7A CN201911357062A CN113032349A CN 113032349 A CN113032349 A CN 113032349A CN 201911357062 A CN201911357062 A CN 201911357062A CN 113032349 A CN113032349 A CN 113032349A
Authority
CN
China
Prior art keywords
data
memory
access data
access
write request
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
Application number
CN201911357062.7A
Other languages
English (en)
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201911357062.7A priority Critical patent/CN113032349A/zh
Publication of CN113032349A publication Critical patent/CN113032349A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1737Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据存储方法、装置、电子设备及计算机可读介质,涉及数据存储领域。其中,所述方法包括:在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;将所述写请求针对所述访问数据的操作记录于增量日志文件中;将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。通过本申请实施例,极大地扩展了数据的存储容量,并且大幅度降低了数据的存储成本。

Description

数据存储方法、装置、电子设备及计算机可读介质
技术领域
本申请实施例涉及数据存储领域,尤其涉及一种数据存储方法、装置、电子设备及计算机可读介质。
背景技术
Redis是一个开源、支持网络、基于内存、键值对(Key-Value)存储数据库,使用ANSI C编写,也支持数据的持久化和丰富的数据结构。阿里云提供基于开源Redis的内存型存储服务。但是,该内存型存储服务需要将数据全部存储在内存中。而在计算机系统中,内存的存储容量比较有限,大约为几十GB到几百GB之间,并且内存的成本很高,价格通常是外存的几十到几百倍。内存主要的优势是访问性能高,读写性能大约是外存的几百倍到几千倍。由此可见,如何解决现有技术中存在的使用内存存储数据导致的数据存储容量受限及数据存储成本高昂的问题成为当前亟待解决的技术问题。
发明内容
本申请的目的在于提出一种数据存储方法、装置、电子设备及计算机可读介质,用于解决现有技术中存在的使用内存存储数据导致的数据存储容量受限及数据存储成本高昂的技术问题。
根据本申请实施例的第一方面,提供了一种数据存储方法。所述方法包括:在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;将所述写请求针对所述访问数据的操作记录于增量日志文件中;将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
根据本申请实施例的第二方面,提供了一种数据存储装置。所述装置包括:第一执行模块,用于在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;记录模块,用于将所述写请求针对所述访问数据的操作记录于增量日志文件中;应用模块,用于将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
根据本申请实施例的第三方面,提供了一种数据存储系统。所述系统包括:基于内存的数据库,以及与所述数据库交互的基于外部存储设备的存储引擎,所述数据库,用于在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作,并将所述写请求针对所述访问数据的操作记录于增量日志文件中,及将所述增量日志文件应用于所述存储引擎;所述存储引擎,用于基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
根据本申请实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;计算机可读介质,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例的第一方面所述的数据存储方法。
根据本申请实施例的第五方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例的第一方面所述的数据存储方法。
根据本申请实施例提供的技术方案,在确定接收到的写请求的访问数据存在于内存中时,执行写请求针对访问数据的操作,并将写请求针对访问数据的操作记录于增量日志文件中,再将增量日志文件应用于外部存储设备的存储引擎,使得存储引擎基于增量日志文件,将写请求针对访问数据操作后的数据持久化存储于外部存储设备中,与现有的其它方式相比,通过将记录有写请求针对访问数据的操作的增量日志文件应用于外部存储设备的存储引擎,使得存储引擎基于增量日志文件,将写请求针对访问数据操作后的数据持久化存储于外部存储设备中,极大地扩展了数据的存储容量,并且大幅度降低了数据的存储成本。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例一中数据存储方法的步骤流程图;
图2A为本申请实施例二中数据存储方法的步骤流程图;
图2B为根据本申请实施例二提供的基于内存的数据库的数据结构与存储引擎的数据结构之间的映射关系的示意图;
图3A为本申请实施例三中数据存储系统的结构示意图;
图3B为根据本申请实施例三提供的数据存储系统的架构示意图;
图4为本申请实施例四中数据存储装置的结构示意图;
图5为本申请实施例五中数据存储装置的结构示意图;
图6为本申请实施例六中电子设备的结构示意图;
图7为本申请实施例七中电子设备的硬件结构。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅配置为解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
参照图1,示出了本申请实施例一的数据存储方法的步骤流程图。
具体地,本实施例的数据存储方法包括以下步骤:
在步骤S101中,在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作。
在本实施例中,所述写请求可理解为对访问数据进行更改的请求。任何对访问数据操作引起访问数据改变的请求均可称为本实施例的写请求。具体地,所述写请求可以包括:数据创建请求、数据删除请求、数据修改请求、数据更新请求、数据添加请求等。当基于所述内存的数据库为redis数据库时,所述写请求的访问数据可为键值对。所述写请求针对所述访问数据的操作可为创建操作、删除操作、修改操作、更新操作、添加操作等。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,当接收到用户通过终端设备的客户端发送的写请求时,基于所述内存的redis数据库对写请求执行解析操作,以确定所述写请求的访问数据。然后,确定所述写请求的访问数据是否存在于所述内存中,当确定所述写请求的访问数据存在于所述内存中时,执行所述写请求针对所述访问数据的操作。在本实施例中,所述内存中仅存储热数据,也即是用户经常访问的数据,而外部存储设备存储包括热数据和冷数据的全量数据,因此,在执行所述写请求针对所述访问数据的操作之前,需要事先确定所述写请求的访问数据是否存在于所述内存中。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在步骤S102中,将所述写请求针对所述访问数据的操作记录于增量日志文件中。
在本实施例中,将所述写请求针对所述访问数据的操作以日志的形式写到增量日志文件中。具体地,当基于所述内存的数据库为redis数据库时,将接收到的写请求对应的Redis命令以日志的形式写到AOF(Append Only File,只追加文件)文件中。其中,所述增量日志文件可理解为用于以增量的形式记录写请求针对访问数据的操作的日志文件。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在步骤S103中,将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
在本实施例中,所述外部存储设备可为固态硬盘,或者机械硬盘。固态硬盘的性能明显优于机械硬盘,但是远低于内存。而机械硬盘的性能极大受限于机械磁头臂的寻道时间。所述存储引擎用于将数据持久化存储于外部存储设备中。所述存储引擎可为嵌入式的存储引擎,例如,Rocks DB。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,当基于所述内存的数据库为redis数据库时,使用独立线程异步地将所述增量日志文件应用于外部存储设备的存储引擎Rocks DB,存储引擎Rocks DB基于所述增量日志文件,将所述写请求针对所述访问数据操作后的键值对数据持久化存储于所述外部存储设备中。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
通过本申请实施例提供的数据存储方法,在确定接收到的写请求的访问数据存在于内存中时,执行写请求针对访问数据的操作,并将写请求针对访问数据的操作记录于增量日志文件中,再将增量日志文件应用于外部存储设备的存储引擎,使得存储引擎基于增量日志文件,将写请求针对访问数据操作后的数据持久化存储于外部存储设备中,与现有的其它方式相比,通过将记录有写请求针对访问数据的操作的增量日志文件应用于外部存储设备的存储引擎,使得存储引擎基于增量日志文件,将写请求针对访问数据操作后的数据持久化存储于外部存储设备中,极大地扩展了数据的存储容量,并且大幅度降低了数据的存储成本。
本实施例的数据存储方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
参照图2A,示出了本申请实施例二的数据存储方法的步骤流程图。
具体地,本实施例的数据存储方法包括以下步骤:
在步骤S201中,在确定所述访问数据不存在于所述内存中时,将从所述外部存储设备中读取的所述访问数据置换到所述内存中。
在本实施例中,所述内存中仅存储热数据,也即是用户经常访问的数据,而外部存储设备存储包括热数据和冷数据的全量数据。因此,在确定所述访问数据不存在于所述内存中时,从所述外部存储设备中读取所述访问数据,并将从所述外部存储设备中读取的所述访问数据置换到所述内存中。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一些可选实施例中,所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中之前,所述方法还包括:如果确定所述访问数据的访问频率超过预设的访问频率阈值,或者所述访问数据的空闲时间未超过预设的时间阈值,则执行所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中的步骤。具体地,在确定所述访问数据的访问频率超过预设的访问频率阈值,或者所述访问数据的空闲时间未超过预设的时间阈值时,可确定所述写请求的访问数据为热数据,因此,可将从所述外部存储设备中读取的所述访问数据置换到所述内存中,以方便于写请求针对访问数据执行相关的操作。其中,所述预设的访问频率阈值和所述预设的时间阈值可由本领域技术人员根据实际需要进行设定,本申请实施例对此不做任何限定。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一些可选实施例中,所述方法还包括:如果确定所述访问数据的访问频率未超过预设的访问频率阈值,并且所述访问数据的空闲时间超过预设的时间阈值,则从所述外部存储设备中读取所述访问数据,并执行所述执行所述写请求针对所述访问数据的操作的步骤。具体地,在确定所述访问数据的访问频率未超过预设的访问频率阈值,并且所述访问数据的空闲时间超过预设的时间阈值时,可确定所述写请求的访问数据为冷数据,因此,没有必要将从所述外部存储设备中读取的所述访问数据置换到所述内存中,而是直接从所述外部存储设备中读取所述访问数据,并执行所述写请求针对所述访问数据的操作。其中,所述预设的访问频率阈值和所述预设的时间阈值可由本领域技术人员根据实际需要进行设定,本申请实施例对此不做任何限定。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一些可选实施例中,在将从所述外部存储设备中读取的所述访问数据置换到所述内存中时,基于所述内存的数据库的数据结构与所述存储引擎的数据结构之间的映射关系,从所述外部存储设备中读取所述访问数据;将从所述外部存储设备中读取的所述访问数据置换到所述内存中。籍此,通过基于所述内存的数据库的数据结构与所述存储引擎的数据结构之间的映射关系,能够实现对所述外部存储设备存储的数据的细粒度的访问,进而大幅度地降低从外部存储设备中读取访问数据所带来的性能抖动。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,所述从所述外部存储设备中读取所述访问数据之前,所述方法还包括:对属于所述数据库的数据结构的数据进行拆分,以获得所述数据对应的多个键值对;建立所述数据对应的多个键值对分别与所述存储引擎的键值对之间的映射关系,以获得所述数据库的数据结构与所述存储引擎的数据结构之间的映射关系。籍此,通过获得的所述数据库的数据结构与所述存储引擎的数据结构之间的映射关系,能够实现对所述外部存储设备存储的数据的细粒度的访问,进而大幅度地降低从外部存储设备中读取数据所带来的性能抖动。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,所述数据库可为基于所述内存的redis数据库,所述存储引擎可为Rocks DB。在外部存储设备中持久化存储redis数据库中属于复杂数据结构(Redis数据库支持的非String类型的数据结构,例如,Hash、List、Sorted Set、Set、Geo等)的数据时,可对属于复杂数据结构的数据进行拆分,以获得所述数据对应的多个键值对,并对所述数据对应的多个键值对进行存储,支持对外部存储设备中存储的数据进行细粒度访问。如图2B所示,可对一个属于Hash结构的数据进行拆分,有2个field;可对一个属于Set结构的数据进行拆分,有2个Member;可对一个属于Zset结构的数据进行拆分,有2个Score。如果没有对属于复杂数据结构的数据进行拆分,则从外部存储设备中读取的数据置换到内存中时,需要把整个属于复杂数据结构的数据置换到内存中,这样就会造成性能抖动。如果对属于复杂数据结构的数据进行拆分,则从外部存储设备中读取的数据置换到内存中时,需要把该数据的某个键值对置换到内存中,无需把整个属于复杂数据结构的数据置换到内存中,从而使得外部存储设备的数据访问性能更加平滑。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在步骤S202中,执行所述写请求针对所述访问数据的操作。
由于该步骤S202与上述步骤S101类似,在此不再赘述。
在步骤S203中,将所述写请求针对所述访问数据的操作记录于增量日志文件中。
由于该步骤S203与上述步骤S102类似,在此不再赘述。
在步骤S204中,将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
由于该步骤S204与上述步骤S103类似,在此不再赘述。
在一些可选实施例中,所述方法还包括:当所述内存的存储空间写满数据,或者定期对所述内存的存储空间进行清理时,确定存储于所述内存的存储空间的数据的访问频率或者空闲时间;基于所述访问频率或者所述空闲时间,清理存储于所述内存的存储空间的数据,以释放所述内存的存储空间。籍此,通过存储于所述内存的存储空间的数据的访问频率或者空闲时间,能够选择用户经常访问的热数据存储在内存中,使得用户经常访问的热数据具有更高的访问性能(读写性能),进而确保大部分读写请求的访问性能。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,定期对内存的存储空间进行清理可理解为每隔预设的时间段对内存的存储空间进行清理。在确定存储于所述内存的存储空间的数据的访问频率或者空闲时间时,可通过基于所述内存的redis数据库实时获取存储于所述内存的存储空间的数据的访问频率或者空闲时间。在基于所述访问频率或者所述空闲时间,清理存储于所述内存的存储空间的数据时,可对所述访问频率不超过预先配置的频率阈值的数据执行清理操作,以释放内存的存储空间;或者,可对所述空闲时间超过预先配置的时间阈值的数据执行清理操作,以释放内存的存储空间。其中,所述预先配置的频率阈值和所述预先配置的时间阈值可由本领域技术人员根据实际需要进行设定,本申请实施例对此不做任何限定。所述空闲时间可理解为所述内存中存储的数据未被访问的时间长度。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,当接收到用户通过终端设备的客户端发送的读请求时,基于所述内存的redis数据库对读请求执行解析操作,以确定所述读请求的访问数据。然后,确定所述读请求的访问数据是否存在于所述内存中,当确定所述读请求的访问数据存在于所述内存中时,执行所述读请求针对所述访问数据的读操作。当确定所述读请求的访问数据不存在于所述内存中时,将从所述外部存储设备中读取的所述访问数据置换到所述内存中,并执行所述读请求针对所述访问数据的读操作。可选地,当确定所述读请求的访问数据不存在于所述内存中时,可直接根据读请求从所述外部存储设备中读取所述访问数据。其中,所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中的具体实施方式与上述将从所述外部存储设备中读取的所述访问数据置换到所述内存中的具体实施方式类似,所述从所述外部存储设备中读取所述访问数据的具体实施方式与上述所述外部存储设备中读取所述访问数据的具体实施方式类似,在此不再赘述。在本实施例中,所述内存中仅存储热数据,也即是用户经常访问的数据,而外部存储设备存储包括热数据和冷数据的全量数据,因此,在执行所述读请求针对所述访问数据的读操作之前,需要事先确定所述读请求的访问数据是否存在于所述内存中。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
通过本申请实施例提供的数据存储方法,在确定访问数据不存在于内存中时,将从外部存储设备中读取的访问数据置换到内存中,并执行写请求针对访问数据的操作,再将写请求针对访问数据的操作记录于增量日志文件中,再将增量日志文件应用于外部存储设备的存储引擎,使得存储引擎基于增量日志文件,将写请求针对访问数据操作后的数据持久化存储于外部存储设备中,与现有的其它方式相比,通过将记录有写请求针对访问数据的操作的增量日志文件应用于外部存储设备的存储引擎,使得存储引擎基于增量日志文件,将写请求针对访问数据操作后的数据持久化存储于外部存储设备中,极大地扩展了数据的存储容量,并且大幅度降低了数据的存储成本。
本实施例的数据存储方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:摄像头、终端、移动终端、PC机、服务器、车载设备、娱乐设备、广告设备、个人数码助理(PDA)、平板电脑、笔记本电脑、掌上游戏机、智能眼镜、智能手表、可穿戴设备、虚拟显示设备或显示增强设备(如Google Glass、Oculus Rift、Hololens、Gear VR)等。
参照图3A,示出了本申请实施例三中数据存储系统的结构示意图。
本实施例提供的数据存储系统包括:基于内存的数据库301,以及与所述数据库301交互的基于外部存储设备的存储引擎302,所述数据库301,用于在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作,并将所述写请求针对所述访问数据的操作记录于增量日志文件中,及将所述增量日志文件应用于所述存储引擎;所述存储引擎302,用于基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。其中,所述基于内存的数据库301可为Redis数据库,所述的基于外部存储设备的存储引擎302可为Rocks DB。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
在一个具体的例子中,如图3B所示,最上层的Redis协议层基于开源Redis实现,主要目的是命令兼容性处理,包含网络交互,请求的解析和执行等。中间的内存存储热数据,交换模块负责内存中的数据的换入和换出。最下层的增量日志生成模块负责增量日志异步应用,基于固态硬盘的存储引擎负责全量数据的持久化存储,所述存储引擎基于开源软件RockDB实现。其中,存储引擎负责持久化存储的全量数据不仅包括热数据和冷数据,而且还包括应用于存储引擎的增量日志文件。此外,可结合上述实施例提供的数据存储方法对数据存储系统进行如下的详细描述:1、全量数据存储于外部存储设备中。当用户的写请求被发送到Redis协议层时,会进行写请求的解析和执行。当完成写请求的执行后,增量日志生成模块把写请求对应的Redis命令以日志的形式写到AOF文件中,同时使用独立线程异步地把增量日志应用到存储引擎Rocks DB中。基于固态硬盘的存储引擎基于开源软件RocksDB实现,基于增量日志,把写请求针对访问数据操作后的数据持久化存储到外部存储设备中。2、热数据存储于内存中,当内存空间写满数据时,交换模块负责选取最近最不经常访问或访问频率最低的数据,从内存中淘汰,释放内存空间。当写请求要访问的数据不在内存中时,交换模块负责异步从存储引擎RocksDB中换入访问数据到内存中,待换入完成后,重新执行写请求。3、平滑的数据访问,实现了Redis数据库的所有数据结构到Rocks DB存储引擎的键值对的映射,如图2B所示。当写请求要访问的数据不在内存中,并且该数据的访问频率没有达到阈值,或着空闲时间超过阈值时,Redis协议层会直接从基于固态硬盘的存储引擎中读取数据,无需把访问数据换入到内存中。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
本实施例的数据存储系统用于实现前述多个方法实施例中相应的数据存储方法,并具有相应的方法实施例的有益效果,在此不再赘述。
参照图4,示出了本申请实施例四中数据存储装置的结构示意图。
本实施例的数据存储装置包括:第一执行模块401,用于在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;记录模块402,用于将所述写请求针对所述访问数据的操作记录于增量日志文件中;应用模块403,用于将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
本实施例的数据存储装置用于实现前述多个方法实施例中相应的数据存储方法,并具有相应的方法实施例的有益效果,在此不再赘述。
参照图5,示出了本申请实施例五中数据存储装置的结构示意图。
本实施例的数据存储装置包括:第一执行模块503,用于在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;记录模块504,用于将所述写请求针对所述访问数据的操作记录于增量日志文件中;应用模块505,用于将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
可选地,所述装置还包括:第二执行模块502,用于在确定所述访问数据不存在于所述内存中时,将从所述外部存储设备中读取的所述访问数据置换到所述内存中,并执行所述执行所述写请求针对所述访问数据的操作的步骤。
可选地,所述第二执行模块502之前,所述装置还包括:第三执行模块501,用于如果确定所述访问数据的访问频率超过预设的访问频率阈值,或者所述访问数据的空闲时间未超过预设的时间阈值,则执行所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中的步骤。
可选地,所述装置还包括:第四执行装置508,用于如果确定所述访问数据的访问频率未超过预设的访问频率阈值,并且所述访问数据的空闲时间超过预设的时间阈值,则从所述外部存储设备中读取所述访问数据,并执行所述执行所述写请求针对所述访问数据的操作的步骤。
可选地,所述第一执行模块503,包括:读取子模块5033,用于基于所述内存的数据库的数据结构与所述存储引擎的数据结构之间的映射关系,从所述外部存储设备中读取所述访问数据;置换子模块5034,用于将从所述外部存储设备中读取的所述访问数据置换到所述内存中。
可选地,所述读取子模块5033之前,所述第一执行模块503还包括:拆分子模块5031,用于对属于所述数据库的数据结构的数据进行拆分,以获得所述数据对应的多个键值对;建立子模块5032,用于建立所述数据对应的多个键值对分别与所述存储引擎的键值对之间的映射关系,以获得所述数据库的数据结构与所述存储引擎的数据结构之间的映射关系。
可选地,所述装置还包括:确定模块506,用于当所述内存的存储空间写满数据,或者定期对所述内存的存储空间进行清理时,确定存储于所述内存的存储空间的数据的访问频率或者空闲时间;清理模块507,用于基于所述访问频率或者所述空闲时间,清理存储于所述内存的存储空间的数据,以释放所述内存的存储空间。
本实施例的数据存储装置用于实现前述多个方法实施例中相应的数据存储方法,并具有相应的方法实施例的有益效果,在此不再赘述。
图6为本申请实施例六中电子设备的结构示意图;该电子设备可以包括:
一个或多个处理器601;
计算机可读介质602,可以配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例一或实施例二所述的数据存储方法。
图7为本申请实施例七中电子设备的硬件结构;如图7所示,该电子设备的硬件结构可以包括:处理器701,通信接口702,计算机可读介质703和通信总线704;
其中处理器701、通信接口702、计算机可读介质703通过通信总线704完成相互间的通信;
可选地,通信接口702可以为通信模块的接口,如GSM模块的接口;
其中,处理器701具体可以配置为:在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;将所述写请求针对所述访问数据的操作记录于增量日志文件中;将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
处理器701可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
计算机可读介质703可以是,但不限于,随机存取存储介质(Random AccessMemory,RAM),只读存储介质(Read Only Memory,ROM),可编程只读存储介质(Programmable Read-Only Memory,PROM),可擦除只读存储介质(Erasable ProgrammableRead-Only Memory,EPROM),电可擦除只读存储介质(Electric Erasable ProgrammableRead-Only Memory,EEPROM)等。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含配置为执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读介质例如可以但不限于是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储介质(RAM)、只读存储介质(ROM)、可擦式可编程只读存储介质(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储介质(CD-ROM)、光存储介质件、磁存储介质件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输配置为由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写配置为执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络:包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个配置为实现规定的逻辑功能的可执行指令。上述具体实施例中有特定先后关系,但这些先后关系只是示例性的,在具体实现的时候,这些步骤可能会更少、更多或执行顺序有调整。即在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一执行模块、记录模块和应用模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,第一执行模块还可以被描述为“在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作的模块”。
作为另一方面,本申请还提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一或实施例二所描述的数据存储方法。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;将所述写请求针对所述访问数据的操作记录于增量日志文件中;将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
在本公开的各种实施方式中所使用的表述“第一”、“第二”、“所述第一”或“所述第二”可修饰各种部件而与顺序和/或重要性无关,但是这些表述不限制相应部件。以上表述仅配置为将元件与其它元件区分开的目的。例如,第一用户设备和第二用户设备表示不同的用户设备,虽然两者均是用户设备。例如,在不背离本公开的范围的前提下,第一元件可称作第二元件,类似地,第二元件可称作第一元件。
当一个元件(例如,第一元件)称为与另一元件(例如,第二元件)“(可操作地或可通信地)联接”或“(可操作地或可通信地)联接至”另一元件(例如,第二元件)或“连接至”另一元件(例如,第二元件)时,应理解为该一个元件直接连接至该另一元件或者该一个元件经由又一个元件(例如,第三元件)间接连接至该另一个元件。相反,可理解,当元件(例如,第一元件)称为“直接连接”或“直接联接”至另一元件(第二元件)时,则没有元件(例如,第三元件)插入在这两者之间。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (17)

1.一种数据存储方法,其特征在于,所述方法包括:
在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;
将所述写请求针对所述访问数据的操作记录于增量日志文件中;
将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定所述访问数据不存在于所述内存中时,将从所述外部存储设备中读取的所述访问数据置换到所述内存中,并执行所述执行所述写请求针对所述访问数据的操作的步骤。
3.根据权利要求2所述的方法,其特征在于,所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中之前,所述方法还包括:
如果确定所述访问数据的访问频率超过预设的访问频率阈值,或者所述访问数据的空闲时间未超过预设的时间阈值,则执行所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中的步骤。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果确定所述访问数据的访问频率未超过预设的访问频率阈值,并且所述访问数据的空闲时间超过预设的时间阈值,则从所述外部存储设备中读取所述访问数据,并执行所述执行所述写请求针对所述访问数据的操作的步骤。
5.根据权利要求2或3所述的方法,其特征在于,所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中,包括:
基于所述内存的数据库的数据结构与所述存储引擎的数据结构之间的映射关系,从所述外部存储设备中读取所述访问数据;
将从所述外部存储设备中读取的所述访问数据置换到所述内存中。
6.根据权利要求5所述的方法,其特征在于,所述从所述外部存储设备中读取所述访问数据之前,所述方法还包括:
对属于所述数据库的数据结构的数据进行拆分,以获得所述数据对应的多个键值对;
建立所述数据对应的多个键值对分别与所述存储引擎的键值对之间的映射关系,以获得所述数据库的数据结构与所述存储引擎的数据结构之间的映射关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述内存的存储空间写满数据,或者定期对所述内存的存储空间进行清理时,确定存储于所述内存的存储空间的数据的访问频率或者空闲时间;
基于所述访问频率或者所述空闲时间,清理存储于所述内存的存储空间的数据,以释放所述内存的存储空间。
8.一种数据存储装置,其特征在于,所述装置包括:
第一执行模块,用于在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作;
记录模块,用于将所述写请求针对所述访问数据的操作记录于增量日志文件中;
应用模块,用于将所述增量日志文件应用于外部存储设备的存储引擎,使得所述存储引擎基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二执行模块,用于在确定所述访问数据不存在于所述内存中时,将从所述外部存储设备中读取的所述访问数据置换到所述内存中,并执行所述执行所述写请求针对所述访问数据的操作的步骤。
10.根据权利要求9所述的装置,其特征在于,所述第二执行模块之前,所述装置还包括:
第三执行模块,用于如果确定所述访问数据的访问频率超过预设的访问频率阈值,或者所述访问数据的空闲时间未超过预设的时间阈值,则执行所述将从所述外部存储设备中读取的所述访问数据置换到所述内存中的步骤。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第四执行装置,用于如果确定所述访问数据的访问频率未超过预设的访问频率阈值,并且所述访问数据的空闲时间超过预设的时间阈值,则从所述外部存储设备中读取所述访问数据,并执行所述执行所述写请求针对所述访问数据的操作的步骤。
12.根据权利要求9或10所述的装置,其特征在于,所述第一执行模块,包括:
读取子模块,用于基于所述内存的数据库的数据结构与所述存储引擎的数据结构之间的映射关系,从所述外部存储设备中读取所述访问数据;
置换子模块,用于将从所述外部存储设备中读取的所述访问数据置换到所述内存中。
13.根据权利要求12所述的装置,其特征在于,所述读取子模块之前,所述第一执行模块还包括:
拆分子模块,用于对属于所述数据库的数据结构的数据进行拆分,以获得所述数据对应的多个键值对;
建立子模块,用于建立所述数据对应的多个键值对分别与所述存储引擎的键值对之间的映射关系,以获得所述数据库的数据结构与所述存储引擎的数据结构之间的映射关系。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
确定模块,用于当所述内存的存储空间写满数据,或者定期对所述内存的存储空间进行清理时,确定存储于所述内存的存储空间的数据的访问频率或者空闲时间;
清理模块,用于基于所述访问频率或者所述空闲时间,清理存储于所述内存的存储空间的数据,以释放所述内存的存储空间。
15.一种数据存储系统,其特征在于,所述系统包括:
基于内存的数据库,以及与所述数据库交互的基于外部存储设备的存储引擎,
所述数据库,用于在确定接收到的写请求的访问数据存在于内存中时,执行所述写请求针对所述访问数据的操作,并将所述写请求针对所述访问数据的操作记录于增量日志文件中,及将所述增量日志文件应用于所述存储引擎;
所述存储引擎,用于基于所述增量日志文件,将所述写请求针对所述访问数据操作后的数据持久化存储于所述外部存储设备中。
16.一种电子设备,包括:
一个或多个处理器;
计算机可读介质,配置为存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任意一项权利要求所述的数据存储方法。
17.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任意一项权利要求所述的数据存储方法。
CN201911357062.7A 2019-12-25 2019-12-25 数据存储方法、装置、电子设备及计算机可读介质 Pending CN113032349A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911357062.7A CN113032349A (zh) 2019-12-25 2019-12-25 数据存储方法、装置、电子设备及计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911357062.7A CN113032349A (zh) 2019-12-25 2019-12-25 数据存储方法、装置、电子设备及计算机可读介质

Publications (1)

Publication Number Publication Date
CN113032349A true CN113032349A (zh) 2021-06-25

Family

ID=76458387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911357062.7A Pending CN113032349A (zh) 2019-12-25 2019-12-25 数据存储方法、装置、电子设备及计算机可读介质

Country Status (1)

Country Link
CN (1) CN113032349A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760855A (zh) * 2021-09-10 2021-12-07 北京金山云网络技术有限公司 数据的存储方法、装置、电子设备和存储介质
WO2024087736A1 (zh) * 2022-10-25 2024-05-02 华为云计算技术有限公司 数据处理方法、数据处理引擎、计算设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092920A (zh) * 2012-12-26 2013-05-08 新浪网技术(中国)有限公司 半结构化数据的存储方法及存储系统
CN105279213A (zh) * 2015-03-13 2016-01-27 中国移动通信集团广东有限公司 一种日志数据库检索装置及检索方法
CN105989160A (zh) * 2015-03-03 2016-10-05 大唐软件技术股份有限公司 一种针对Redis数据库的内存数据持久化方法和装置
CN106886375A (zh) * 2017-03-27 2017-06-23 百度在线网络技术(北京)有限公司 存储数据的方法和装置
CN107908367A (zh) * 2017-11-16 2018-04-13 郑州云海信息技术有限公司 存储系统中数据存储的方法、装置、设备及存储介质
CN108153488A (zh) * 2017-12-13 2018-06-12 北京小米移动软件有限公司 数据自增方法及装置
CN108427728A (zh) * 2018-02-13 2018-08-21 百度在线网络技术(北京)有限公司 元数据的管理方法、设备及计算机可读介质
CN108763099A (zh) * 2018-04-18 2018-11-06 华为技术有限公司 系统的启动方法、装置、电子设备和存储介质
CN108829344A (zh) * 2018-05-24 2018-11-16 北京百度网讯科技有限公司 数据存储方法、装置及存储介质
CN109426585A (zh) * 2017-08-22 2019-03-05 阿里巴巴集团控股有限公司 一种备份、恢复数据库数据的方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092920A (zh) * 2012-12-26 2013-05-08 新浪网技术(中国)有限公司 半结构化数据的存储方法及存储系统
CN105989160A (zh) * 2015-03-03 2016-10-05 大唐软件技术股份有限公司 一种针对Redis数据库的内存数据持久化方法和装置
CN105279213A (zh) * 2015-03-13 2016-01-27 中国移动通信集团广东有限公司 一种日志数据库检索装置及检索方法
CN106886375A (zh) * 2017-03-27 2017-06-23 百度在线网络技术(北京)有限公司 存储数据的方法和装置
CN109426585A (zh) * 2017-08-22 2019-03-05 阿里巴巴集团控股有限公司 一种备份、恢复数据库数据的方法和装置
CN107908367A (zh) * 2017-11-16 2018-04-13 郑州云海信息技术有限公司 存储系统中数据存储的方法、装置、设备及存储介质
CN108153488A (zh) * 2017-12-13 2018-06-12 北京小米移动软件有限公司 数据自增方法及装置
CN108427728A (zh) * 2018-02-13 2018-08-21 百度在线网络技术(北京)有限公司 元数据的管理方法、设备及计算机可读介质
CN108763099A (zh) * 2018-04-18 2018-11-06 华为技术有限公司 系统的启动方法、装置、电子设备和存储介质
CN108829344A (zh) * 2018-05-24 2018-11-16 北京百度网讯科技有限公司 数据存储方法、装置及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
马文龙;朱妤晴;蒋德钧;熊劲;张立新;孟潇;包云岗;: "Key-Value型NoSQL本地存储系统研究", 计算机学报, no. 08, 1 June 2017 (2017-06-01) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760855A (zh) * 2021-09-10 2021-12-07 北京金山云网络技术有限公司 数据的存储方法、装置、电子设备和存储介质
WO2024087736A1 (zh) * 2022-10-25 2024-05-02 华为云计算技术有限公司 数据处理方法、数据处理引擎、计算设备及存储介质

Similar Documents

Publication Publication Date Title
US10725976B2 (en) Fast recovery using self-describing replica files in a distributed storage system
US20210149865A1 (en) SEAMLESSLY MIGRATING DATA AND INDEX IN DISTRIBUTED NoSQL DATABASE SYSTEMS
US11977532B2 (en) Log record identification using aggregated log indexes
US11636072B2 (en) Parallel processing of a keyed index file system
CN112965945A (zh) 数据存储方法、装置、电子设备及计算机可读介质
CN113032349A (zh) 数据存储方法、装置、电子设备及计算机可读介质
US11636139B2 (en) Centralized database system with geographically partitioned data
CN105808451B (zh) 一种数据缓存方法以及相关装置
CN106156038B (zh) 数据存储方法和装置
CN114138558A (zh) 一种对象存储方法、装置、电子设备和存储介质
US20170004110A1 (en) Access frequency approximation for remote direct memory access
US10565202B2 (en) Data write/import performance in a database through distributed memory
CN113127438B (zh) 用于存储数据的方法、装置、服务器和介质
US20210326271A1 (en) Stale data recovery using virtual storage metadata
US10452305B1 (en) Tape drive data reclamation
US10740288B2 (en) Accessing objects in an erasure code supported object storage environment
CN115981559A (zh) 分布式数据存储方法、装置、电子设备和可读介质
AU2021268828B2 (en) Secure data replication in distributed data storage environments
US11416468B2 (en) Active-active system index management
CN113950145B (zh) 数据处理方法及装置
CN111782588A (zh) 一种文件读取方法、装置、设备和介质
KR101620782B1 (ko) 사전 데이터를 활용한 데이터 저장 방법 및 시스템
US11526490B1 (en) Database log performance
US20230222107A1 (en) Database record bit
US20240045852A1 (en) Performing an operation in a tree structure

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