CN109144891A - 一种数据存储方法和装置 - Google Patents

一种数据存储方法和装置 Download PDF

Info

Publication number
CN109144891A
CN109144891A CN201810804363.9A CN201810804363A CN109144891A CN 109144891 A CN109144891 A CN 109144891A CN 201810804363 A CN201810804363 A CN 201810804363A CN 109144891 A CN109144891 A CN 109144891A
Authority
CN
China
Prior art keywords
page
free memory
reserved
recycling
memory page
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
CN201810804363.9A
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.)
New H3C Technologies Co Ltd
Original Assignee
New H3C Technologies 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 New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN201810804363.9A priority Critical patent/CN109144891A/zh
Publication of CN109144891A publication Critical patent/CN109144891A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据存储方法和装置,该方法包括:获取键值数据库释放的第一数量个可用内存页;将所述第一数量个可用内存页归类为回收内存页或预留内存页;将所述回收内存页的信息通知给操作系统,以使所述操作系统根据所述回收内存页的信息确定所述回收内存页已经被所述键值数据库释放;根据所述预留内存页,对待存入所述键值数据库的数据进行存储。通过本申请的技术方案,操作系统能够获知被释放的内存页,并使用这些回收内存页进行非LMDB业务的处理,减少内存消耗。可以使用预留内存页进行数据存储,不需要从操作系统申请内存页,减少与操作系统的交互次数,提高数据存储性能。

Description

一种数据存储方法和装置
技术领域
本申请涉及存储技术领域,尤其是涉及一种数据存储方法和装置。
背景技术
Key-Value(键值)数据库是目前使用最广泛的数据库,可以通过唯一标识来对数据进行存储、读取和管理。Key-Value数据库的存储结构可以为树结构或者哈希结构,且可以包括LMDB(Lighting Memory-mapped DataBase,内存映射数据库)。
Key-Value数据库可以使用COW(Copy-On-Write,写时拷贝)机制来提供并发保护,由于COW机制的读写性能较高,从而提高数据存储的并发性,并且可以达到减少空间占用的目的。
Key-Value数据库通常设置在内存中,若通过Key-Value数据库存储数据文件A,则数据文件A会占用大量内存页,这些内存页在数据文件A被删除时才会被释放,由于内存资源有限,因此上述方式会导致大量的内存消耗。
发明内容
本申请提供一种数据存储方法和装置,用于使操作系统尽快获知被释放的内存资源,从而减少内存消耗,并且可以减少交互过程,提高数据存储性能。
第一方面,本申请提供一种数据存储方法,所述方法包括:
获取键值数据库释放的第一数量个可用内存页;
将所述第一数量个可用内存页归类为回收内存页或预留内存页;
将所述回收内存页的信息通知给操作系统,以使所述操作系统根据所述回收内存页的信息确定所述回收内存页已经被所述键值数据库释放;
根据所述预留内存页,对待存入所述键值数据库的数据进行存储。
结合第一方面,在第一种可能的实现方式中,所述将所述第一数量个可用内存页归类为回收内存页或预留内存页,包括:
根据每个可用内存页的释放时间顺序,将所述第一数量个可用内存页中的第二数量个可用内存页确定为预留内存页;
将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
结合第一方面和第一种可能的实现方式,在第二种可能的实现方式中,网络设备包括的内存中配置预留队列和回收队列,所述预留队列用于存储预留内存页,所述回收队列用于存储回收内存页;所述将所述第一数量个可用内存页归类为回收内存页或预留内存页,包括:
在所述键值数据库释放第一数量个可用内存页时,将释放的所述第一数量个可用内存页添加到所述预留队列的尾部;
判断所述预留队列中可用内存页总数量是否大于第二数量;如果是,则从所述预留队列的顶部为起始,选取所述可用内存页总数量减第二数量个可用内存页,并将选取的可用内存页添加到所述回收队列;
将选取后所述预留队列中的第二数量个可用内存页确定为预留内存页;
将所述回收队列中的可用内存页确定为回收内存页;
其中,所述第二数量为预先配置的存储经验值。
结合第一方面和第一种可能的实现方式,在第三种可能的实现方式中,所述将所述第一数量个可用内存页归类为回收内存页或预留内存页,包括:
根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间晚于排序靠后的可用内存页的释放时间;将排序靠前的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
或者,根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间早于排序靠后的可用内存页的释放时间;将排序靠后的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
结合第一方面,在第四种可能的实现方式中,所述根据所述预留内存页,对待存入所述键值数据库的数据进行存储,包括:
若接收到待存入所述键值数据库的数据,则确定所述数据需要使用的内存页数量;
根据每个预留内存页的释放时间顺序,从释放时间最晚的预留内存页为起始,选择与所述内存页数量相等个数的预留内存页;
通过选择的所述预留内存页存储所述数据。
第二方面,本申请提供一种数据存储装置,所述装置包括:
获取模块,用于获取键值数据库释放的第一数量个可用内存页;归类模块,用于将所述第一数量个可用内存页归类为回收内存页或预留内存页;
发送模块,用于将所述回收内存页的信息通知给操作系统,以使操作系统根据所述回收内存页的信息确定所述回收内存页已经被所述键值数据库释放;
存储模块,用于根据所述预留内存页,对待存入所述键值数据库的数据进行存储。
结合第二方面,在第一种可能的实现方式中,所述归类模块将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:
根据每个可用内存页的释放时间顺序,将所述第一数量个可用内存页中的第二数量个可用内存页确定为预留内存页;
将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
结合第二方面和第一种可能的实现方式,在第二种可能的实现方式中,网络设备包括的内存中配置预留队列和回收队列,所述预留队列用于存储预留内存页,所述回收队列用于存储回收内存页;
所述归类模块将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:
在所述键值数据库释放第一数量个可用内存页时,将释放的所述第一数量个可用内存页添加到所述预留队列的尾部;
判断所述预留队列中可用内存页总数量是否大于第二数量;
如果是,则从所述预留队列的顶部为起始,选取所述可用内存页总数量减第二数量个可用内存页,并将选取的可用内存页添加到所述回收队列;
将选取后所述预留队列中的第二数量个可用内存页确定为预留内存页;
将所述回收队列中的可用内存页确定为回收内存页;
其中,所述第二数量为预先配置的存储经验值。
结合第二方面和第一种可能的实现方式,在第三种可能的实现方式中,所述归类模块将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间晚于排序靠后的可用内存页的释放时间;将排序靠前的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
或者,根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间早于排序靠后的可用内存页的释放时间;将排序靠后的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
结合第二方面,在第四种可能的实现方式中,所述存储模块根据所述预留内存页,对待存入所述键值数据库的数据进行存储时具体用于:
若接收到待存入所述键值数据库的数据,则确定所述数据需要使用的内存页数量;
根据每个预留内存页的释放时间顺序,从释放时间最晚的预留内存页为起始,选择与所述内存页数量相等个数的预留内存页;
通过选择的所述预留内存页存储所述数据。
第三方面,本申请提供一种网络设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述的数据存储方法步骤。
第四方面,本申请提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令可以促使所述处理器实现上述的数据存储方法步骤。
基于上述技术方案,本申请实施例中,可以将可用内存页归类为回收内存页和预留内存页,通过将回收内存页的信息通知给操作系统,使操作系统确定回收内存页已经被键值数据库释放,操作系统能够获知被释放的内存页,并使用这些回收内存页进行非LMDB业务的处理,减少内存消耗。在将可用内存页归类为回收内存页和预留内存页后,可以根据预留内存页对待存入键值数据库的数据进行存储,即数据存储过程中,使用预留内存页进行数据存储,不需要从操作系统申请内存页,减少与操作系统的交互次数,提高数据存储性能。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。
图1A-图1H是本申请一种实施方式中的LMDB存储数据的示意图;
图2是本申请一种实施方式中的数据存储方法的流程图;
图3A-图3C是本申请一种实施方式中的LMDB存储数据的示意图;
图4是本申请一种实施方式中的数据存储装置的结构图;
图5是本申请一种实施方式中的网络设备的硬件结构图。
具体实施方式
在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例中提出一种数据存储方法,可以应用于采用Key-Value数据库存储数据的网络设备,Key-Value数据库可以包括但不限于LMDB等,后续以LMDB为例进行说明。LMDB的存储结构可以为树结构或者哈希结构,可以使用COW技术实现数据存储。参见图1A所示,为LMDB的示例,假设该LMDB用于存储数据文件A,并将图1A所示的数据文件A称为版本1的数据文件A。
参见图1A所示,数据文件A包括:Key5的数据、Key8的数据、…、Key83的数据。最后一行的内存页,存储Key与数据的对应关系,如Key5的数据存储在内存页5,Key8的数据存储在内存页5,以此类推,Key83的数据存储在内存页12。第二行的内存页,存储Key与页指针的对应关系,如Key5与内存页5的页指针存储在内存页2,Key10与内存页6的页指针存储在内存页2,以此类推,Key80与内存页12的页指针存储在内存页4。第一行的内存页,存储Key与页指针的对应关系,如Key5与内存页2的页指针存储在内存页1,Key28与内存页3的页指针存储在内存页1,Key65与内存页4的页指针存储在内存页1。
其中,基于图1A的数据查询流程包括:假设查询Key15的数据,基于图1A所示的LMDB,可以先查询根结点的内存页1,由于Key15位于Key5与Key28之间,因此,Key15处于Key5的页指针指向的内存页2,并查询内存页2。由于Key15位于Key10与Key20之间,因此,Key15处于Key10的页指针指向的内存页6,并查询内存页6。然后,可以从内存页6中查询到Key15的数据。
其中,基于图1A的数据更新流程可以包括:假设需要删除Key83的数据,则可以采用COW技术实现数据的删除。具体的,为了删除Key83的数据,可以对内存页12进行拷贝操作,得到一个新的内存页13,在得到内存页13之后,还可以删除Key83的数据,即内存页13只包括Key80的数据,参见图1B所示。
然后,由于内存页4的页指针指向内存页11和内存页12,因此,在对内存页12进行拷贝操作之后,还可以对内存页11进行拷贝操作,将拷贝操作后的内容与内存页13进行平分,得到内存页13和内存页14,参见图1C所示。
然后,可以对内存页4进行拷贝操作,得到内存页15,并对内存页15进行修改,得到修改后的内存页15,参见图1D所示,该内存页15可以包括Key65与内存页14的页指针的对应关系,Key77与内存页13的页指针的对应关系。
然后,可以对内存页1进行拷贝操作,得到内存页16,并对内存页16进行修改,得到修改后的内存页16,参见图1E所示,该内存页16可以包括:Key5与内存页2的页指针的对应关系,Key28与内存页3的页指针的对应关系,Key65与内存页15的页指针(内存页16与上述内存页1进行相比,针对内存页16,这里是内存页15的页指针,而不是内存页4的页指针)的对应关系。
经过上述处理,参见图1E所示,可以得到版本2的数据文件A,且版本2的数据文件A可以包括如下数据:内存页5的数据、内存页6的数据、内存页7的数据、内存页8的数据、内存页9的数据、内存页10的数据、内存页14的数据、内存页13的数据,但是不包括内存11的数据和内存页12的数据。
基于图1E的数据查询流程可以包括:假设查询Key68的数据,基于图1E所示的LMDB,可以查询根结点的内存页16(不是内存页1),由于Key68大于Key65,因此Key68处于Key65的页指针指向的内存页15,并查询内存页15。由于Key68位于Key65与Key77之间,因此Key68处于Key65的页指针指向的内存页14,并查询内存页14。然后,可以从内存页14中查询到Key68的数据。
综上所述,通过对比图1E与图1A可以看出,与版本1的数据文件A相比,在版本2的数据文件A中,已经不再使用内存页11、内存页12、内存页4和内存页1等,并且新增加了内存页13、内存页14、内存页15和内存页16等。
为了记录已经不再使用的内存页,则还可以维护空闲数据库(也可以称为FreeDB),空闲数据库用于记录已经不再使用的内存页。如表1所示,为空闲数据库的示例,在版本2的数据文件A中,假设不再使用内存页11、内存页12、内存页4和内存页1,则将内存页11、内存页12、内存页4和内存页1记录到空闲数据库中;在版本3的数据文件A中,假设不再使用内存页5、内存页6、内存页7、内存页2和内存页16,则将内存页5、内存页6、内存页7、内存页2和内存页16记录到空闲数据库中;以此类推,每次得到新版本的数据文件A后,就可以释放一些不再使用的内存页,并在空闲数据库中记录这些内存页。
表1
由于空闲数据库中的内存页是已经释放的内存页,因此,在后续版本的数据文件A中,可以使用这些内存页。例如,在版本4的数据文件A中,可以使用内存页11、内存页12、内存页4和内存页1,并从空闲数据库中删除这些内存页。在版本5的数据文件A中,可以使用内存页5、内存页6、内存页7,并从空闲数据库中删除这些内存页,以此类推。上述方式可以重复使用已经释放的内存页,从而实现内存页复用,提高内存资源使用率,节省内存空间。
其中,在后续版本的数据文件A中,在真正使用空闲数据库中的内存页之前,可以判断是否有读请求正在访问这些内存页。如果是,则不能使用这些内存页;如果否,则可以使用这些内存页。为了获知是否有读请求正在访问这些内存页,则可以根据读事务的标识和写事务的标识进行判断,以下进行说明。
写事务是指一次完整的数据库操作,一次写事务从开始到结束,可以包含多个针对数据库的操作(如增加、删除、修改等操作),每个写事务具有唯一的事务标识,且事务标识是递增的。例如,第一次写事务的事务标识为1,经过第一次写事务的操作后,得到版本1的数据文件A。第二次写事务的事务标识为2,经过第二次写事务的操作后,得到版本2的数据文件A,以此类推。
读事务是指一次完整的数据库操作,一次读事务从开始到结束,可以包含多个针对数据库的读操作,每个读事务的事务标识是最后一次写事务的事务标识。例如,在第一次写事务之后,在第二次写事务之前产生的所有读事务,则事务标识为第一次写事务的事务标识1;在第二次写事务之后,在第三次写事务之前产生的所有读事务,则事务标识为第二次写事务的事务标识2,以此类推。
基于写事务的事务标识,在维护空闲数据库时,是在空闲数据库中记录写事务的事务标识与内存页的对应关系。如表2所示,为空闲数据库的示例,在第二次写事务的处理过程中,可以得到版本2的数据文件A,且不再使用内存页11、内存页12、内存页4和内存页1,因此将这些内存页与事务标识2的对应关系记录到空闲数据库。在第三次写事务的处理过程中,可以得到版本3的数据文件A,且不再使用内存页5、内存页6、内存页7、内存页2和内存页16,因此将这些内存页与事务标识3的对应关系记录到空闲数据库,以此类推。
表2
写事务的事务标识 内存页
事务标识2 内存页11、内存页12、内存页4、内存页1
事务标识3 内存页5、内存页6、内存页7、内存页2和内存页16
基于读事务的事务标识,还可以维护一个读事务表,每次有读事务产生时,就在读事务表中记录该读事务的事务标识,参见表3所示,为读事务表的一个示例,读事务A的事务标识为事务标识1,表示读事务A正在读取事务标识1对应的写事务产生的数据文件A,即版本1的数据文件A;读事务B的事务标识为事务标识2,表示读事务B正在读取事务标识2对应的写事务产生的数据文件A,即版本2的数据文件A;读事务C的事务标识为事务标识3,表示读事务C正在读取事务标识3对应的写事务产生的数据文件A,即版本3的数据文件A。
表3
读事务 读事务的事务标识
读事务A 事务标识1
读事务B 事务标识2
读事务C 事务标识3
参见表2和表3所示,基于读事务的事务标识和写事务的事务标识,就可以获知读请求正在访问的内存页。例如,若存在读事务A、读事务B和读事务C,由于读事务A正在读取事务标识1对应的写事务产生的数据文件A,而内存页11、内存页12、内存页4、内存页1是该写事务产生的内存页,因此,确定读事务A正在访问内存页11、内存页12、内存页4、内存页1,后续版本的数据文件A中,还不能使用内存页11、内存页12、内存页4、内存页1。又例如,若存在读事务B和读事务C,由于读事务B和读事务C没有读取事务标识1对应的写事务产生的数据文件A,因此,当前没有访问内存页11、内存页12、内存页4、内存页1的读事务,后续版本的数据文件A中,可以使用这些内存页。
以下结合图1F对上述过程进行详细说明。参见图1F所示,在事务标识N-5对应的写事务中,释放了内存页18、内存页19和内存页20,以此类推,在事务标识N-1对应的写事务中,释放了内存页15,在事务标识N对应的写事务中,释放了内存页1、内存页2和内存页3,在事务标识N+1对应的写事务中,释放了内存页7、内存页8和内存页9,事务标识N+2对应的写事务中,释放了内存页4、内存页5和内存页6。假设读事务A和读事务B正在访问事务标识N对应的写事务产生的数据文件A,读事务C正在访问事务标识N+2对应的写事务产生的数据文件A,则事务标识小于等于N-1的所有内存页均可以使用。
也就是说,在后续版本的数据文件A中,可以使用内存页18、内存页19、内存页20、内存页15,并从空闲数据库中删除内存页18、内存页19、内存页20、内存页15,参见图1G所示,从而实现内存页复用,提高内存资源使用率。
以此类推,参见图1H所示,当有新的写事务提交时,又会释放出新的内存页,并更新该空闲数据库,当有新的读事务提交时,也会更新读事务表,即增加新的读事务,当已有的读事务完成时,也会从读事务表中删除该读事务。
在上述实施例中,LMDB可以采用B树或者B+树的结构存储数据文件A,且空闲数据库可以采用B树或者B+树的结构存储事务标识与内存页的对应关系,且读事务表可以采用B树或者B+树的结构存储事务标识与读事务的对应关系,当然,B树或者B+树的结构只是一个示例,对此存储结构不做限制。
在一个例子中,参见图1F所示,针对内存页18、内存页19、内存页20和内存页15等,虽然LMDB已经释放这些内存页,但不会将这些内存页通知给操作系统,而是LMDB自己使用这些内存页,即在后续版本的数据文件A中,可以使用内存页18、内存页19、内存页20、内存页15。也就是说,操作系统不知道内存页18、内存页19、内存页20和内存页15已经被释放,导致无法使用这些内存页进行非LMDB业务的处理。这样,LMDB会占用大量内存页,这些内存页被占用后,操作系统就无法再使用这些内存页,这些内存页在数据文件A被删除时才会被释放,即操作系统在数据文件A被删除时才会使用这些内存页。
在另一个例子中,参见图1F所示,在内存页18、内存页19、内存页20、内存页15被释放后,LMDB可以将内存页18、内存页19、内存页20、内存页15通知给操作系统,使得操作系统能够获知内存页18、内存页19、内存页20和内存页15已经被释放,并使用这些内存页进行非LMDB业务的处理。虽然上述方式可以使操作系统充分利用已经被释放的内存页,但在后续版本的数据文件A中,由于已经没有可用的内存页,因此,LMDB需要重新从操作系统申请内存页,导致LMDB与操作系统的交互过多,处理性能很低,数据存储性能差。
针对上述发现,本申请实施例中,可以将可用内存页(如内存页18、内存页19、内存页20和内存页15等)归类为回收内存页和预留内存页。通过将回收内存页的信息通知给操作系统,使操作系统确定回收内存页已经被键值数据库释放,这样,操作系统能够获知被释放的内存页,并使用这些回收内存页进行非LMDB业务的处理,减少内存消耗。可以根据预留内存页对待存入键值数据库的数据进行存储,即数据存储过程中,使用预留内存页进行数据存储,不需要从操作系统申请内存页,减少与操作系统的交互次数,提高数据存储性能。
参见图2所示,为数据存储方法的流程示意图,该方法可以包括:
步骤201,获取键值数据库释放的第一数量个可用内存页。
参见上述实施例,键值数据库可以释放一些不再使用的内存页,这些释放的内存页就是可用内存页,后续以键值数据库释放第一数量个可用内存页为例。
步骤202,将第一数量个可用内存页归类为回收内存页或预留内存页。
具体的,在得到第一数量个可用内存页后,可以将第一数量个可用内存页归类为回收内存页或预留内存页。
例如,可以将第一数量个可用内存页中的部分可用内存页归类为预留内存页,并将归类为预留内存页之外的其它可用内存页归类为回收内存页。
进一步的,还可以根据经验预先配置第二数量的值,并将第一数量个可用内存页中的第二数量个可用内存页归类为预留内存页,并将归类为预留内存页之外的其它可用内存页归类为回收内存页。
步骤203,将该回收内存页的信息通知给操作系统,以使操作系统根据该回收内存页的信息确定所述回收内存页已经被键值数据库释放。
其中,将该回收内存页的信息通知给操作系统,可以包括:利用操作系统提供的页回收机制(Fallocate),将该回收内存页的信息通知给操作系统。当然,也可以采用其它方式将该回收内存页的信息通知给操作系统,对此不做限制。
步骤204,根据该预留内存页,对待存入键值数据库的数据进行存储。
具体地,在本发明实施例中,可以将数据存储到预留内存页中,而不用从操作系统重新申请内存页。
基于上述技术方案,本申请实施例中,可以将可用内存页归类为回收内存页和预留内存页,通过将回收内存页的信息通知给操作系统,使操作系统确定回收内存页已经被键值数据库释放,这样,操作系统能够获知被释放的内存页,并使用这些回收内存页进行非LMDB业务的处理,减少内存消耗。在将可用内存页划分为回收内存页和预留内存页后,可以根据预留内存页对待存入键值数据库的数据进行存储,即数据存储过程中,可以使用预留内存页进行数据存储,不需要从操作系统申请内存页,减少与操作系统的交互次数,提高数据存储性能。上述方式可以避免反复申请内存导致的性能下降,并节约内存资源。
可选地,在一个例子中,将第一数量个可用内存页归类为回收内存页或预留内存页,可以包括下述步骤:
根据每个可用内存页的释放时间顺序,将第一数量个可用内存页中的第二数量个可用内存页确定为预留内存页;将第一数量个可用内存页中除第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页;其中,第二数量与第三数量之和为第一数量,第二数量为预先配置的存储经验值。
具体地,根据每个可用内存页的释放时间顺序,将第一数量个可用内存页中的第二数量个可用内存页确定为预留内存页;将第一数量个可用内存页中除第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页,可以包括:
方式一、网络设备包括的内存中配置预留队列和回收队列,预留队列用于存储预留内存页,回收队列用于存储回收内存页。
基于此,在键值数据库释放第一数量个可用内存页时,可以将释放的第一数量个可用内存页添加到预留队列的尾部;判断预留队列中可用内存页总数量是否大于第二数量;如果是,则从预留队列的顶部为起始,选取所述可用内存页总数量减第二数量个可用内存页,并将选取的可用内存页添加到回收队列;如果否,则不再将预留队列中的可用内存页添加到回收队列。进一步的,可以将选取后预留队列中的第二数量个可用内存页确定为预留内存页;将回收队列中的可用内存页确定为回收内存页。
方式二、根据每个可用内存页的释放时间顺序,对第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间晚于排序靠后的可用内存页的释放时间,即释放时间晚的可用内存页排序在前面;然后,将排序靠前的第二数量个可用内存页确定为预留内存页,并将第一数量个可用内存页中除第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页。
方式三、根据每个可用内存页的释放时间顺序,对第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间早于排序靠后的可用内存页的释放时间,即释放时间晚的可用内存页排序在后面;然后,将排序靠后的第二数量个可用内存页确定为预留内存页,并将第一数量个可用内存页中除第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页。
以下结合图3A-图3C,对方式一、方式二和方式三进行说明。本应用场景下,以第二数量为3为例,第二数量还可以为其它数值,可以根据经验配置。
参见图3A所示,内存页18和内存页19被释放后,参见上述实施例,若存在访问内存页18和内存页19的读事务,则内存页18和内存页19是不可用内存页,内存页1、内存页3、内存页8等也是不可用内存页,对此不再赘述。在内存页18和内存页19从不可用内存页转换为可用内存页(如不存在访问事务标识1的读事务后,转换为可用内存页)后,参见图3B所示。在内存页1和内存页3从不可用内存页转换为可用内存页后,参见图3C所示,以此类推。
在上述应用场景下,针对方式一,参见图3B所示,在内存页18和内存页19转换为可用内存页后,将内存页18和内存页19添加到预留队列的尾部(内存页19在内存页18的后面),由于预留队列的可用内存页数量为2,可用内存页数量2小于第二数量,因此,不再将预留队列的内存页添加到回收队列。
参见图3C所示,在内存页1和内存页3转换为可用内存页后,将内存页1和内存页3添加到预留队列的尾部(内存页3在内存页1的后面),预留队列中的内存页从前到后依次为内存页18、内存页19、内存页1和内存页3,由于预留队列的可用内存页数量为4,可用内存页数量4大于第二数量,因此,可以将预留队列顶部的内存页18添加到回收队列,预留队列中只剩余3个内存页。
基于图3C所示,则可以将预留队列中的内存页19、内存页1和内存页3确定为预留内存页,并将回收队列中的内存页18确定为回收内存页。
针对方式二,参见图3C所示,由于内存页18和内存页19先释放,内存页1和内存页3后释放,因此,根据每个可用内存页的释放时间顺序对所有可用内存页进行排序时,为了使排序靠前的可用内存页的释放时间晚于排序靠后的可用内存页的释放时间,则排序结果是:内存页3、内存页1、内存页19和内存页18,在对这些内存页进行排序后,将排序靠前的3个内存页(即内存页3、内存页1和内存页19)确定为预留内存页,将除预留内存页之外的内存页18确定为回收内存页。当然,排序结果也可以是内存页3、内存页1、内存页18和内存页19,或者,内存页1、内存页3、内存页19和内存页18,对此不做限制。
针对方式三,参见图3C所示,内存页18和内存页19先释放,内存页1和内存页3后释放,根据每个可用内存页的释放时间顺序对所有可用内存页进行排序时,为了使排序靠前的可用内存页的释放时间早于排序靠后的可用内存页的释放时间,则排序结果是内存页18、内存页19、内存页1和内存页3,在对这些内存页进行排序后,将排序靠后的3个内存页(内存页3、内存页1和内存页19)确定为预留内存页,将除预留内存页之外的内存页18确定为回收内存页。
在确定内存页3、内存页1和内存页19是预留内存页,内存页18是回收内存页后,可以将内存页18的信息通知给操作系统,以使操作系统根据该信息确定内存页18已经被键值数据库释放,这样,操作系统能够使用内存页18进行非LMDB业务的处理。可以根据内存页3、内存页1和内存页19对待存入键值数据库的数据进行存储,而不将内存页3、内存页1和内存页19的信息通知给操作系统,这样,可以使用内存页3、内存页1和内存页19进行数据存储,不需要从操作系统申请内存页,减少与操作系统的交互,提高数据存储性能。
可选地,在一个例子中,根据预留内存页,对待存入所述键值数据库的数据进行存储,可以包括但不限于:若接收到待存入键值数据库的数据,则确定该数据需要使用的内存页数量,对此确定方式不做限制;然后,可以根据每个预留内存页的释放时间顺序,从释放时间最晚的预留内存页为起始,选择与所述内存页数量相等个数的预留内存页;通过选择的预留内存页存储该数据。
例如,假设需要使用2个内存页存储数据,则数据需要使用的内存页数量是2,假设预留内存页包括内存页3、内存页1和内存页19,且每个预留内存页的释放时间顺序依次是:内存页3、内存页1和内存页19,内存页3是释放时间最晚的预留内存页,因此,从内存页3为起始,选择2个预留内存页,即选择排序靠前的内存页3和内存页1,并使用内存页3和内存页1存储数据。
当然,也可以采用其它方式选择预留内存页,例如,可以选择内存页3和内存页19,或者,选择内存页1和内存页19,对此选择方式不做限制。
在使用内存页3和内存页1存储数据之后,还可以从空闲数据库中删除内存页3和内存页1,这样,预留内存页只剩下内存页19。然后,在内存页8、内存页9、内存页6和内存页7等从不可用内存页转换为可用内存页后,基于上述方式一、方式二或方式三,重新确定预留内存页和回收内存页,以此类推。
在上述实施例中,步骤201-步骤204的处理流程,可以是用于管理LMDB的软件进程实现的,即处理器执行的软件进程,通过执行该软件进行,实现上述步骤201-步骤204,也可以是其它功能模块或者硬件实现的,对此不做限制。
基于与上述方法同样的申请构思,本申请实施例中还提出一种数据存储装置,如图4所示,为本申请提出的数据存储装置的结构图,所述装置包括:
获取模块401,用于获取键值数据库释放的第一数量个可用内存页;
归类模块402,用于将所述第一数量个可用内存页归类为回收内存页或预留内存页;
发送模块403,用于将所述回收内存页的信息通知给操作系统,以使操作系统根据所述回收内存页的信息确定所述回收内存页已经被所述键值数据库释放;
存储模块404,用于根据所述预留内存页,对待存入所述键值数据库的数据进行存储。
所述归类模块402将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:根据每个可用内存页的释放时间顺序,将所述第一数量个可用内存页中的第二数量个可用内存页确定为预留内存页;
将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页;其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
网络设备包括的内存中配置预留队列和回收队列,所述预留队列用于存储预留内存页,所述回收队列用于存储回收内存页;所述归类模块402将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:
在所述键值数据库释放第一数量个可用内存页时,将释放的所述第一数量个可用内存页添加到所述预留队列的尾部;
判断所述预留队列中可用内存页总数量是否大于第二数量;如果是,则从所述预留队列的顶部为起始,选取所述可用内存页总数量减第二数量个可用内存页,并将选取的可用内存页添加到所述回收队列;
将选取后所述预留队列中的第二数量个可用内存页确定为预留内存页;
将所述回收队列中的可用内存页确定为回收内存页;
其中,所述第二数量为预先配置的存储经验值。
所述归类模块402将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间晚于排序靠后的可用内存页的释放时间;将排序靠前的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
或者,根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间早于排序靠后的可用内存页的释放时间;将排序靠后的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
所述存储模块404根据所述预留内存页,对待存入所述键值数据库的数据进行存储时具体用于:若接收到待存入所述键值数据库的数据,则确定所述数据需要使用的内存页数量;
根据每个预留内存页的释放时间顺序,从释放时间最晚的预留内存页为起始,选择与所述内存页数量相等个数的预留内存页;
通过选择的所述预留内存页存储所述数据。
基于上述技术方案,本申请实施例中,可以将可用内存页归类为回收内存页和预留内存页,通过将回收内存页的信息通知给操作系统,使操作系统确定回收内存页已经被键值数据库释放,这样,操作系统能够获知被释放的内存页,并使用这些回收内存页进行非LMDB业务的处理,减少内存消耗。在将可用内存页划分为回收内存页和预留内存页后,可以根据预留内存页对待存入键值数据库的数据进行存储,即数据存储过程中,可以使用预留内存页进行数据存储,不需要从操作系统申请内存页,减少与操作系统的交互次数,提高数据存储性能。上述方式可以避免反复申请内存导致的性能下降,并节约内存资源。
本申请实施例提供的网络设备,从硬件层面而言,硬件架构示意图具体可以参见图5所示,可以包括:机器可读存储介质和处理器,其中:
机器可读存储介质:存储指令代码。
处理器:与机器可读存储介质通信,读取和执行机器可读存储介质中存储的所述指令代码,实现本申请上述示例公开的数据存储操作。
这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种数据存储方法,其特征在于,所述方法包括:
获取键值数据库释放的第一数量个可用内存页;
将所述第一数量个可用内存页归类为回收内存页或预留内存页;
将所述回收内存页的信息通知给操作系统,以使所述操作系统根据所述回收内存页的信息确定所述回收内存页已经被所述键值数据库释放;
根据所述预留内存页,对待存入所述键值数据库的数据进行存储。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一数量个可用内存页归类为回收内存页或预留内存页,包括:
根据每个可用内存页的释放时间顺序,将所述第一数量个可用内存页中的第二数量个可用内存页确定为预留内存页;
将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
3.根据权利要求1或2所述的方法,其特征在于,网络设备包括的内存中配置预留队列和回收队列,所述预留队列用于存储预留内存页,所述回收队列用于存储回收内存页;
所述将所述第一数量个可用内存页归类为回收内存页或预留内存页,包括:
在所述键值数据库释放第一数量个可用内存页时,将释放的所述第一数量个可用内存页添加到所述预留队列的尾部;
判断所述预留队列中可用内存页总数量是否大于第二数量;如果是,则从所述预留队列的顶部为起始,选取所述可用内存页总数量减第二数量个可用内存页,并将选取的可用内存页添加到所述回收队列;
将选取后所述预留队列中的第二数量个可用内存页确定为预留内存页;
将所述回收队列中的可用内存页确定为回收内存页;
其中,所述第二数量为预先配置的存储经验值。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述第一数量个可用内存页归类为回收内存页或预留内存页,包括:
根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间晚于排序靠后的可用内存页的释放时间;将排序靠前的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
或者,
根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间早于排序靠后的可用内存页的释放时间;将排序靠后的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
5.根据权利要求1所述的方法,其特征在于,所述根据所述预留内存页,对待存入所述键值数据库的数据进行存储,包括:
若接收到待存入所述键值数据库的数据,则确定所述数据需要使用的内存页数量;
根据每个预留内存页的释放时间顺序,从释放时间最晚的预留内存页为起始,选择与所述内存页数量相等个数的预留内存页;
通过选择的所述预留内存页存储所述数据。
6.一种数据存储装置,其特征在于,所述装置包括:
获取模块,用于获取键值数据库释放的第一数量个可用内存页;
归类模块,用于将所述第一数量个可用内存页归类为回收内存页或预留内存页;
发送模块,用于将所述回收内存页的信息通知给操作系统,以使操作系统根据所述回收内存页的信息确定所述回收内存页已经被所述键值数据库释放;
存储模块,用于根据所述预留内存页,对待存入所述键值数据库的数据进行存储。
7.根据权利要求6所述的装置,其特征在于,所述归类模块将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:
根据每个可用内存页的释放时间顺序,将所述第一数量个可用内存页中的第二数量个可用内存页确定为预留内存页;
将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
8.根据权利要求6或7所述的装置,其特征在于,网络设备包括的内存中配置预留队列和回收队列,所述预留队列用于存储预留内存页,所述回收队列用于存储回收内存页;所述归类模块将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:
在所述键值数据库释放第一数量个可用内存页时,将释放的所述第一数量个可用内存页添加到所述预留队列的尾部;
判断所述预留队列中可用内存页总数量是否大于第二数量;如果是,则从所述预留队列的顶部为起始,选取所述可用内存页总数量减第二数量个可用内存页,并将选取的可用内存页添加到所述回收队列;
将选取后所述预留队列中的第二数量个可用内存页确定为预留内存页;
将所述回收队列中的可用内存页确定为回收内存页;
其中,所述第二数量为预先配置的存储经验值。
9.根据权利要求6或7所述的装置,其特征在于,所述归类模块将所述第一数量个可用内存页归类为回收内存页或预留内存页时具体用于:
根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间晚于排序靠后的可用内存页的释放时间;将排序靠前的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
或者,
根据每个可用内存页的释放时间顺序,对所述第一数量个可用内存页进行排序,排序靠前的可用内存页的释放时间早于排序靠后的可用内存页的释放时间;将排序靠后的第二数量个可用内存页确定为所述预留内存页,并将所述第一数量个可用内存页中除所述第二数量个预留内存页之外的第三数量个可用内存页确定为所述回收内存页;
其中,所述第二数量与第三数量之和为所述第一数量,所述第二数量为预先配置的存储经验值。
10.根据权利要求6所述的装置,其特征在于,所述存储模块根据所述预留内存页,对待存入所述键值数据库的数据进行存储时具体用于:
若接收到待存入所述键值数据库的数据,则确定所述数据需要使用的内存页数量;
根据每个预留内存页的释放时间顺序,从释放时间最晚的预留内存页为起始,选择与所述内存页数量相等个数的预留内存页;
通过选择的所述预留内存页存储所述数据。
CN201810804363.9A 2018-07-20 2018-07-20 一种数据存储方法和装置 Pending CN109144891A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810804363.9A CN109144891A (zh) 2018-07-20 2018-07-20 一种数据存储方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810804363.9A CN109144891A (zh) 2018-07-20 2018-07-20 一种数据存储方法和装置

Publications (1)

Publication Number Publication Date
CN109144891A true CN109144891A (zh) 2019-01-04

Family

ID=64801322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810804363.9A Pending CN109144891A (zh) 2018-07-20 2018-07-20 一种数据存储方法和装置

Country Status (1)

Country Link
CN (1) CN109144891A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102455974A (zh) * 2010-10-21 2012-05-16 上海宝信软件股份有限公司 一种内存消耗可控的高速内存申请释放管理系统及方法
US8499121B2 (en) * 2011-08-31 2013-07-30 Hewlett-Packard Development Company, L.P. Methods and apparatus to access data in non-volatile memory
CN106598736A (zh) * 2016-12-13 2017-04-26 深圳中科讯联科技股份有限公司 一种内存池的内存块调用方法和释放方法及服务器
CN106708427A (zh) * 2016-11-17 2017-05-24 华中科技大学 一种适用于键值对数据的存储方法
CN107133103A (zh) * 2017-05-05 2017-09-05 第四范式(北京)技术有限公司 用于数据流式计算的内存管理系统及其方法
CN107682424A (zh) * 2017-09-23 2018-02-09 湖南胜云光电科技有限公司 一种针对海量数据高效缓存及管理的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102455974A (zh) * 2010-10-21 2012-05-16 上海宝信软件股份有限公司 一种内存消耗可控的高速内存申请释放管理系统及方法
US8499121B2 (en) * 2011-08-31 2013-07-30 Hewlett-Packard Development Company, L.P. Methods and apparatus to access data in non-volatile memory
CN106708427A (zh) * 2016-11-17 2017-05-24 华中科技大学 一种适用于键值对数据的存储方法
CN106598736A (zh) * 2016-12-13 2017-04-26 深圳中科讯联科技股份有限公司 一种内存池的内存块调用方法和释放方法及服务器
CN107133103A (zh) * 2017-05-05 2017-09-05 第四范式(北京)技术有限公司 用于数据流式计算的内存管理系统及其方法
CN107682424A (zh) * 2017-09-23 2018-02-09 湖南胜云光电科技有限公司 一种针对海量数据高效缓存及管理的方法

Similar Documents

Publication Publication Date Title
US11474972B2 (en) Metadata query method and apparatus
CN103064639B (zh) 数据存储方法及装置
WO2017185579A1 (zh) 一种数据存储方法及装置
CN102750317B (zh) 数据持久化处理方法、装置及数据库系统
CN109271343A (zh) 一种应用于键值存储系统中的数据合并方法和装置
CN107391544B (zh) 列式存储数据的处理方法、装置、设备及计算机储存介质
CN103544153A (zh) 一种基于数据库的数据更新方法和系统
CN103019887A (zh) 数据备份方法及装置
CN109240607B (zh) 一种文件读取方法和装置
CN112181902B (zh) 数据库的存储方法、装置及电子设备
WO2018171296A1 (zh) 一种文件合并方法及控制器
US11625187B2 (en) Method and system for intercepting a discarded page for a memory swap
CN109407985B (zh) 一种数据管理的方法以及相关装置
CN101063976B (zh) 用于快速删除物理群集数据的方法和设备
CN109684271A (zh) 快照数据管理方法、装置、电子设备及机器可读存储介质
CN109408416B (zh) 一种地址映射表项页管理方法及装置
US20140320498A1 (en) Terminal device, information processing method, and computer program product
KR20120082176A (ko) 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템
CN105117168A (zh) 一种信息处理方法和电子设备
CN110780814B (zh) 一种存储数据整理方法与装置
US20230409235A1 (en) File system improvements for zoned storage device operations
CN112800057B (zh) 一种指纹表管理方法及装置
JP2017156931A (ja) データ記憶装置、データ記憶装置制御プログラム、及びデータ記憶装置制御方法
CN114297196B (zh) 元数据存储方法、装置、电子设备及存储介质
CN109144891A (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190104