CN110737547A - 使用非易失性存储器nvm恢复内存数据库的方法和设备 - Google Patents

使用非易失性存储器nvm恢复内存数据库的方法和设备 Download PDF

Info

Publication number
CN110737547A
CN110737547A CN201911006523.6A CN201911006523A CN110737547A CN 110737547 A CN110737547 A CN 110737547A CN 201911006523 A CN201911006523 A CN 201911006523A CN 110737547 A CN110737547 A CN 110737547A
Authority
CN
China
Prior art keywords
data
nvm
memory
sequences
basic
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
CN201911006523.6A
Other languages
English (en)
Other versions
CN110737547B (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.)
4Paradigm Beijing Technology Co Ltd
Original Assignee
4Paradigm Beijing 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 4Paradigm Beijing Technology Co Ltd filed Critical 4Paradigm Beijing Technology Co Ltd
Priority to CN201911006523.6A priority Critical patent/CN110737547B/zh
Publication of CN110737547A publication Critical patent/CN110737547A/zh
Application granted granted Critical
Publication of CN110737547B publication Critical patent/CN110737547B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/21Design, administration or maintenance of databases

Landscapes

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

Abstract

提供了一种使用非易失性存储器NVM恢复内存数据库的方法和设备,所述方法包括:在对动态随机存取存储器DRAM中的内存数据库执行基本操作的同时,将所述内存数据库中被执行了所述基本操作的数据插入到DRAM中的存储器操作队列;将NVM中的与所述存储器操作队列中的每一个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回滚区;并且将所述每一个序列写入到NVM中的与所述每一个序列中的地址偏移量对应的位置处并固化。

Description

使用非易失性存储器NVM恢复内存数据库的方法和设备
技术领域
本申请总体说来涉及内存数据库恢复的技术领域,更具体地讲,涉及使 用非易失性存储器NVM恢复内存数据库的方法和设备。
背景技术
现有的内存数据库恢复方法普遍依赖于(1)快照/检查点 (snapshot/checkpointing)、(2)日志(log)或者(3)前述两者。其中,方 法(1)会把一个时间点的数据库内的所有数据以某种预先定义好的格式存 入持久化设备,如磁盘(Hard disk)或者固态硬盘(Flash SSD)。为了保证数 据的一致性,在将内存数据库写入持久化设备的过程中,虽然内存数据库仍 然可以支持读取操作,但是该写入过程对读取性能(延迟及带宽)会有非常 大的影响,而且通常不允许同时进行数据更新操作(虽然某些技术可以支持 同时进行数据更新操作,但是会大幅影响性能并占用额外内存空间)。由于持 久化设备的性能远低于内存,因此在大数据时代的今天,往往一次 snapshot/checkpointing的时间会以10分钟甚至小时计。对于许多使用内存数 据库的低延迟高带宽场景而言,方法(1)带来的性能影响无法被接受。同时 为了保证数据恢复时的新鲜度,不得不频繁地进行snapshot/checkpointing,因 此会对性能造成更严重的影响。因此,为了减少snapshot/checkpointing的时 间及频率,可以使用方法(2)将部分数据的持久化设备写入进行均分,即,以 日志的形式记录数据的更新,并且在恢复数据时,通过日志重放(redo-log) 将最近的一次snapshot中的数据恢复到最新状态。为了保证数据的一致性, 必须在保证日志真正写入持久化设备之后才能返回写入成功。然而,此类被 称为“同步写”(synchronizedwrite)的操作在持久性设备上的代价非常高,大 幅延长了内存数据库数据写入的延迟。鉴于日志写入的代价不可忽略,随着 数据写入量和写入频率的日益增加,内存数据库的持久性策略往往在恢复数 据时的新鲜度(是不是最新的数据)及运行时的性能之间做取舍。
另外,即使用最先进的方法(3)(即方法(1)和方法(2)相结合的方 法),恢复内存数据库的时间仍然很长。根本原因在于方法(1)必须先从持 久化设备中读取最新snapshot的全部数据,并且这些数据的数据格式并非读 取到内存后即时可用,而是必须以内存数据库的格式对这些数据进行重构, 然而此过程非常耗时。此外,方法(2)接着进行的日志重放相当于重新执 行最新snapshot之后所有的数据库更新操作,如果snapshot间隔比较长,那么日志重放也将非常耗时。
发明内容
本申请的示例性实施例在于提供一种使用非易失性存储器NVM恢复内 存数据库的方法和设备,以至少解决现有技术存在的上述问题。
根据本申请的示例性实施例,提供一种使用非易失性存储器NVM恢复 内存数据库的方法,所述方法可包括:在对动态随机存取存储器DRAM中的 内存数据库执行基本操作的同时,将所述内存数据库中被执行了所述基本操 作的数据插入到DRAM中的存储器操作队列;将NVM中的与所述存储器操 作队列中的每一个基本组成单元中的每一个序列中的地址偏移量对应的位置 处的数据写入到NVM的回滚区;并且将所述每一个序列写入到NVM中的与 所述每一个序列中的地址偏移量对应的位置处并固化。
可选地,将所述内存数据库中被执行了所述基本操作的数据插入到 DRAM中的存储器操作队列的步骤可包括:将所述内存数据库中被执行了所 述基本操作的数据封装成基本组成单元,其中,基本组成单元包括用于标识 基本组成单元的开始的起始标识符、用于标识基本组成单元的结束的结束标 识符以及至少一个序列;并且将封装后的基本组成单元插入到DRAM中的存 储器操作队列。
可选地,所述至少一个序列中的每一个序列可具有由地址偏移量、数据 长度以及数据所定义的特定格式。
可选地,将NVM中的与所述存储器队列中的每一个基本组成单元中的 每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回滚区的步 骤可包括:按照预定顺序搜索所述存储器操作队列中的相继出现的一对起始 标识符和终止标识符;依次读取NVM中的与所述一对起始标识符和终止标 识符之间的每一个序列中的地址偏移量对应的位置处的数据;依次将读取的 数据写入到所述回滚区中的由所述回滚区的尾部指针所指向的位置处并固化; 并且将所述尾部指针指向所述回滚区的所有数据的末尾的地址并对所述尾部指针进行固化。
可选地,依次将读取的数据写入到所述回滚区中的由所述回滚区的尾部 指针所指向的位置处并固化的步骤可包括:按照所述特定格式将读取的数据 组成新序列;并且将组成的新序列写入到所述回滚区中的由所述尾部指针所 指向的位置处并固化。
可选地,将所述每一个序列写入到NVM中的与所述每一个序列中的地 址偏移量对应的位置处并固化的步骤可包括:将所述每一个序列中的数据写 入NVM中与所述每一个序列中的地址偏移量对应的位置处并固化;在一个 基本组成单元中的所有序列中的数据被写入NVM中并被固化之后,将所述 回滚区的头部指针设置为所述尾部指针的值并对所述头部指针进行固化,并 从所述存储器操作队列删除所述一个基本单元。
可选地,可直到从存储器操作队列中删除与内存数据库中被执行了所述 基本操作的数据对应的所有基本组成单元之后才使所述基本操作返回。
可选地,如果所述基本操作针对内存数据库中的特定数据,则可直到从 存储器操作队列中删除了与所述特定数据对应的所有基本组成单元之后才使 所述基本操作返回。
所述基本操作可不与将NVM中的与所述存储器操作队列中的每一个基 本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到 NVM的回滚区的步骤和将所述每一个序列写入到NVM中的与所述每一个序 列中的地址偏移量对应的位置处并固化的步骤中的任何一个同步。
可选地,所述方法还可包括:在所述内存数据库重新启动后,检查所述 回滚区的尾部指针和头部指针是否一致;如果所述尾部指针和所述头部指针 不一致,则从所述头部指针指向的位置开始逐一地获取所述回滚区中存储的 序列,将获取的序列中的数据写入到NVM中的与获取的序列中的地址偏移 量相应的位置处并固化,并将所述尾部指针设置为所述头部指针的值并固化 以使得所述尾部指针和所述头部指针一致。
可选地,所述方法还可包括:在所述尾部指针和所述头部指针一致之后: 在DRAM中重新分配用于存储关键数据基地址的第一存储空间以及用于存 储用户数据基地址的第二存储空间;并且使用NVM中存储的关键数据基地 址和用户数据基地址分别对第一存储空间和第二存储空间进行赋值。
可选地,所述方法还可包括:在DRAM中重新分配用于存储关键数据的 第三存储空间和用于存储用户数据的第四存储空间,并确定与第三存储空间 相应的基地址和与第四存储空间相应的基地址;根据NVM中存储的关键数 据基地址和用户数据基地址,按顺序将NVM中的关键数据和用户数据分别 复制到DRAM的第三存储空间和第四存储空间;并且使用与第三存储空间相 应的基地址和与第四存储空间相应的基地址分别对第一存储空间和第二存储 空间进行赋值。
根据本申请的示例性实施例,提供一种使用非易失性存储器NVM恢复 内存数据库的设备,所述设备可包括:NVM;动态随机存取存储器DRAM; 以及处理器,被配置为:在对DRAM中的内存数据库执行基本操作的同时, 将所述内存数据库中被执行了所述基本操作的数据插入到DRAM中的存储 器操作队列;将NVM中的与所述存储器操作队列中的每一个基本组成单元 中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回滚区;并且将所述每一个序列写入到NVM中的与所述每一个序列中的地址偏移量 对应的位置处并固化。
可选地,处理器可通过以下操作将所述内存数据库中被执行了所述基本 操作的数据插入到DRAM中的存储器操作队列:将所述内存数据库中被执行 了所述基本操作的数据封装成基本组成单元,其中,基本组成单元包括用于 标识基本组成单元的开始的起始标识符、用于标识基本组成单元的结束的结 束标识符以及至少一个序列;并且将封装后的基本组成单元插入到DRAM中 的存储器操作队列。
可选地,所述至少一个序列中的每一个序列可具有由地址偏移量、数据 长度以及数据所定义的特定格式。
可选地,处理器可通过以下操作将NVM中的与所述存储器队列中的每 一个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入 到NVM的回滚区:按照预定顺序搜索所述存储器操作队列中的相继出现的 一对起始标识符和终止标识符;依次读取NVM中的与所述一对起始标识符 和终止标识符之间的每一个序列中的地址偏移量对应的位置处的数据;依次 将读取的数据写入到所述回滚区中的由所述回滚区的尾部指针所指向的位置 处并固化;并且将所述尾部指针指向所述回滚区的所有数据的末尾的地址并对所述尾部指针进行固化。
可选地,处理器可通过以下操作依次将读取的数据写入到所述回滚区中 的由所述回滚区的尾部指针所指向的位置处并固化:按照所述特定格式将读 取的数据组成新序列;并且将组成的新序列写入到所述回滚区中的由所述尾 部指针所指向的位置处并固化。
可选地,处理器可通过以下操作将NVM中的与所述存储器队列中的每 一个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入 到NVM的回滚区:按照预定顺序搜索所述存储器操作队列中的相继出现的 一对起始标识符和终止标识符;依次读取NVM中的与所述一对起始标识符 和终止标识符之间的每一个序列中的地址偏移量对应的位置处的数据;依次 将读取的数据写入到所述回滚区中的由所述回滚区的尾部指针所指向的位置 处并固化;并且将所述尾部指针指向所述回滚区的所有数据的末尾的地址并对所述尾部指针进行固化。
可选地,处理器可通过以下操作依次将读取的数据写入到所述回滚区中 的由所述回滚区的尾部指针所指向的位置处并固化:按照所述特定格式将读 取的数据组成新序列;并且将组成的新序列写入到所述回滚区中的由所述尾 部指针所指向的位置处并固化。
可选地,处理器可通过以下操作将所述每一个序列写入到NVM中的与 所述每一个序列中的地址偏移量对应的位置处并固化:将所述每一个序列中 的数据写入NVM中与所述每一个序列中的地址偏移量对应的位置处并固化; 并且在一个基本组成单元中的所有序列中的数据被写入NVM中并被固化之 后,将所述回滚区的头部指针设置为所述尾部指针的值并对所述头部指针进 行固化,并从所述存储器操作队列删除所述一个基本单元。
可选地,直到从存储器操作队列中删除与内存数据库中被执行了所述基 本操作的数据对应的所有基本组成单元之后,处理器才可使所述基本操作返 回。
可选地,如果所述基本操作针对内存数据库中的特定数据,则直到从存 储器操作队列中删除了与所述特定数据对应的所有基本组成单元之后,处理 器才可使所述基本操作返回。
可选地,处理器可不保持所述基本操作与将NVM中的与所述存储器操 作队列中的每一个基本组成单元中的每一个序列中的地址偏移量对应的位置 处的数据写入到NVM的回滚区的操作和将所述每一个序列写入到NVM中的 与所述每一个序列中的地址偏移量对应的位置处并固化的操作中的任何一个 同步。
可选地,处理器还可被配置为:在所述内存数据库重新启动后,检查所 述回滚区的尾部指针和头部指针是否一致;如果所述尾部指针和所述头部指 针不一致,则从所述头部指针指向的位置开始逐一地获取所述回滚区中存储 的序列,将获取的序列中的数据写入到NVM中的与获取的序列中的地址偏 移量相应的位置处并固化,并将所述尾部指针设置为所述头部指针的值并固 化以使得所述尾部指针和所述头部指针一致。
可选地,处理器还可被配置为在所述尾部指针和所述头部指针一致之后 进行以下操作:在DRAM中重新分配用于存储关键数据基地址的第一存储空 间以及用于存储用户数据基地址的第二存储空间;并且使用NVM中存储的 关键数据基地址和用户数据基地址分别对第一存储空间和第二存储空间进行 赋值。
可选地,处理器还可被配置为:在DRAM中重新分配用于存储关键数据 的第三存储空间和用于存储用户数据的第四存储空间,并确定与第三存储空 间相应的基地址和与第四存储空间相应的基地址;根据NVM中存储的关键 数据基地址和用户数据基地址,按顺序将NVM中的关键数据和用户数据分 别复制到DRAM的第三存储空间和第四存储空间;并且使用与第三存储空间 相应的基地址和与第四存储空间相应的基地址分别对第一存储空间和第二存 储空间进行赋值。
由于本申请可以利用高性能NVM作为内存数据库的备份设备,采用新 的镜像法在不依赖于snapshot和log的情况下实现内存数据库的实时数据持 久化。同时,本申请也可以不进行内存数据库恢复时的重构过程,实现内存 数据库的即时快速恢复。此外,本申请还能够针对追求极限性能的情况允许 一定数据新鲜度的损失,并能够在完全不影响内存数据库性能的情况下实现 持久化功能。
将在接下来的描述中部分阐述本申请总体构思另外的方面和/或优点,还 有一部分通过描述将是清楚的,或者可以经过本申请总体构思的实施而得知。
附图说明
从下面结合附图对本申请实施例的详细描述中,本申请的这些和/或其他 方面和优点将变得更加清楚并更容易理解,其中:
图1是示出根据本申请的示例性实施例的DRAM和NVM的示意图;
图2是示出根据本申请的示例性实施例的使用非易失性存储器NVM恢 复内存数据库的设备的框图;
图3是示出根据本申请的示例性实施例的使用NVM恢复内存数据库的 方法的流程图;
图4是示出根据本申请的示例性实施例的将NVM中的原始数据写入到 NVM的回滚区的方法的流程图;
图5是示出根据本申请的示例性实施例的使用NVM提供内存数据库的 服务的方法的流程图;
图6是示出根据本申请的另一示例性实施例的使用NVM提供内存数据 库的服务的方法的流程图。
具体实施方式
现在将详细参照本申请的实施例,所述实施例的示例在附图中示出。以 下将通过参照附图来说明所述实施例,以便解释本申请。
这里,为了便于更好的理解本申请,首先参照图1对本申请中利用的 DRAM和NVM的数据存储方式和存储结构进行说明。
在现有技术中,内存数据库中的数据结构之间通常使用内存指针(pointer) 建立联系,由于内存数据库通常都是针对高性能的易失性存储器(如DRAM) 设计的,系统掉电或者重启后数据必然已经丢失,故所在地址已无意义,所 以此类指针都是使用虚拟存储地址来实现的(即程序每次执行时,所取得的 虚拟存储地址都会不同)。然而,本申请使用的NVM在系统掉电或重启后, 数据仍然存在,因此基于虚拟存储地址的指针将不再适用于本申请。为了正 确且有效地定位数据,本发明使用基于基地址+偏移量而实现的持久性指针来取代内存数据库中的所有指针。也就是说,在本发明中,DRAM和NVM中 的所有的“指针”都不是传统内存数据库使用的虚拟存储地址,而是该数据 相对其所在存储空间的基地址的偏移量。
此外,内存数据库在存储器中存储的数据通常可分为元数据(meta-data) 与用户数据(user-data)两部分,其中,元数据属于重要且不可丢失的关键数据 (criticaldata),用户数据可根据需要适当允许丢失部分数据(但是未丢失数据 不得损坏)。本发明针对用户数据和关键数据这两部分数据分别在DRAM和 NVM中各预先分配一块连续的存储空间。此后,对于各部分数据的存储空间 分配请求都将在各自预先分配好的那一块存储空间中分配,而用于指向在 DRAM和NVM中的存储地址处所存放的数据的指针则由基地址(即,预先 分配好的大块连续内存空间首地址)和偏移量(即,离基地址的距离)组合 而成。
如图1中所示,DRAM可被划分为用于存储关键数据基地址(Critical Baseaddress)的存储空间、用于存储用户数据基地址(User Base address)的 存储空间、用于存储关键数据(Critical Data)的存储空间、用于存储用户数 据(User Data)的存储空间、以及用于存储存储器操作队列(Mem-op Queue) 的存储空间。NVM可被划分为用于存储关键数据基地址(Critical Base address) 的存储空间、用于存储用户数据基地址(User Baseaddress)的存储空间、用 于存储关键数据(Critical Data)的存储空间、用于存储用户数据(User Data) 的存储空间、以及用于暂存NVM中的正被操作改变的关键数据和/或用户数据的原始数据的回滚区(roll-back ring-buffer)。在本发明中,DRAM中的关 键数据基地址与用户数据基地址在每次启动时才会确定,而NVM中的关键 数据基地址与用户数据基地址都是固定的,用于确保系统重启时仍然可以直 接定位NVM中存储的数据。在下面的描述中将参照图2至图6对图1中涉 及的DRAM和NVM中的各个存储空间进行说明。
图2是示出根据本申请示例性实施例的使用NVM 100恢复内存数据库 的设备10的框图。
如图2中所示,设备10包括DRAM 100、NVM 200和处理器300。
处理器300可被配置为在对DRAM 100中的内存数据库执行基本操作的 同时,将所述内存数据库中被执行了所述基本操作的数据插入到DRAM 100 中的存储器操作队列。
具体地讲,处理器300可通过以下操作将所述内存数据库中被执行了所 述基本操作的数据插入到DRAM中的存储器操作队列:将所述内存数据库中 被执行了所述基本操作的数据封装成基本组成单元,并将封装后的基本组成 单元插入到DRAM中的存储器操作队列。
具体地讲,在本申请中,任何用于修改内存数据库的基本操作(例如put 操作)在对DRAM 100中的内存数据库的数据进行修改的同时,还会将该基 本操作对内存数据库的数据进行的每个修改以预定形式封装成基本组成单元, 并将封装好的基本组成单元插入到DRAM 100中的存储器操作队列中,其中, 如图1中所示,基本组成单元包括用于标识基本组成单元的开始的起始标识 符op-start、用于标识基本组成单元的结束的结束标识符op-end以及至少一个 序列,其中,每个序列具有由地址偏移量offset、数据长度len以及数据data 所定义的特定格式(offset,len,data)。
此外,处理器300可将NVM 200中的与所述存储器操作队列中的每一 个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到 NVM 200的回滚区,在下文中,为了便于描述,从NVM 200中读取的被写 入到回滚区的数据可被称为原始数据。其中,处理器300可执行与以上描述 的将数据插入到DRAM 100中的存储器操作队列的进程相独立的独立进程来 完成该操作。
具体地讲,首先,处理器300需要检查存储器操作队列是否为空,如果 存储器操作队列为空,则处理器300继续进行检查操作,如果存储器操作队 列不为空,则处理器300可按照预定顺序(例如,按照存储器操作队列的先 进先出的顺序)搜索存储器操作队列中的相继出现的一对起始标识符op-start 和终止标识符op-end,进而获得完整的一个基本组成单元。
此后,处理器300可依次读取NVM 200中的与所述一对起始标识符 op-start和终止标识符op-end之间的每一个序列(offset,len,data)中的地址偏移 量offset对应的位置处的原始数据original-data。具体地讲,处理器300首先 确定所述一个基本组成单元中包括的序列(offset,len,data)中的数据data是关 键数据还是用户数据,然后根据确定的结果选择存储在NVM 200中的关键数 据基地址和用户数据基地址之一(例如,如果数据data是关键数据,则选择 存储在NVM 200中的关键数据基地址,反之则选择存储在NVM 200中的用 户数据基地址),然后从NVM 200中读取位于将选择的基地址和序列(offset, len,data)中的地址偏移量offset相加而确定的地址处的长度为len的原始数据 original-data。
此后,处理器300可依次将从NVM 200中读取的原始数据original-data 写入到NVM 200的回滚区中的由回滚区的尾部指针tail所指向的位置处并固 化。具体地讲,处理器300首先按照特定格式将读取的长度为len的原始数 据original-data组成新序列(offset,len,original-data),其中,特定格式与存储 器操作队列中的基本组成单元中包括的序列的存储格式(offset,len,data)相同, 新序列(offset,len,original-data)中的offset是原始数据original-data在NVM 200中所在的存储空间相对于该存储空间的基地址的地址偏移量,例如,如 果原始数据original-data是关键数据,则该offset是NVM 200中用于存储关 键数据的存储空间相对于关键数据基地址的地址偏移量。此后,处理器300可将组成的新序列写入到NVM 200的回滚区中的由尾部指针tail所指向的位 置处并将该序列固化在该位置处。例如,处理器300可使用clflush、clflushopt、 clwb等命令之一来确保将该序列固化到NVM 200中,进而即使在掉电后, 该序列仍然存在于NVM 200中。
此后,处理器300可将回滚区的尾部指针tail指向回滚区的所有数据的 末尾的地址并对尾部指针tail进行固化。具体地讲,在针对存储器操作队列 中的一个基本组成单元中的所有序列完成了NVM 200中的相应数据的读取 和固化之后,处理器300需要将回滚区的尾部指针tail移动到回滚区的所有 数据的末尾,并利用特定命令(例如clflush、clflushopt、clwb等命令之一) 将尾部指针tail固化到NVM 200的用于存储尾部指针tail的存储空间中。
此后,处理器300可将在存储器操作队列中的基本组成单元中包括的每 一个序列(offset,len,data)写入到NVM 200中的与所述每一个序列(offset,len, data)中的地址偏移量offset对应的位置处并固化。其中,处理器300可执行 与以上描述的将数据插入到DRAM 100中的存储器操作队列的进程相独立的 独立进程来完成该操作。
具体地讲,处理器300可将所述每一个序列(offset,len,data)中的数据data 写入NVM 200中与所述每一个序列(offset,len,data)中的地址偏移量offset对 应的位置处并固化,具体地讲,处理器300可首先确定所述每一个序列(offset, len,data)中的数据data是关键数据还是用户数据,然后根据确定的结果选择 存储在NVM 200中的关键数据基地址和用户数据基地址之一(例如,如果数 据data是关键数据,则选择存储在NVM 200中的关键数据基地址,反之则 选择存储在NVM 200中的用户数据基地址),然后将所述每一个序列(offset, len,data)中的长度为len的数据data写入到NVM 200中的将选择的基地址和序列(offset,len,data)中的地址偏移量offset相加而确定的位置处,并将该数据 data固化在NVM 200中的该位置处。
在一个基本组成单元中的所有序列中的数据data被写入NVM 200中并 被固化之后,处理器300可将NVM 200的回滚区的头部指针head设置为尾 部指针tail的值并对头部指针head进行固化,并且从存储器操作队列删除当 前的基本单元。具体地讲,在一个基本组成单元中的所有序列中的数据data 被写入NVM 200中并被固化之后,处理器300需要将回滚区的头部指针head 移动到尾部指针tail的位置,并利用特定命令(例如clflush、clflushopt、clwb 等命令之一)将头部指针head固化到NVM 200的用于存储头部指针head的 存储空间中,从而保证回滚区的头部指针head和尾部指针tail在一个基本组 成单元中的所有序列中的数据data被写入NVM 200中并被固化之后保持一 致。
在以上的描述中,对于追求内存数据库中的任何数据都不能丢失的情况, 处理器300可以等待直到从存储器操作队列中删除与内存数据库中被执行了 基本操作的数据对应的所有基本组成单元之后才使基本操作成功返回,也就 是说,为了保证内存数据库中的任何数据都不丢失,处理器300需要保证将 存储器操作队列中的与内存数据库中被执行了基本操作的数据对应的所有基 本组成单元中包括的序列(offset,len,data)中的数据data都写入到NVM 200中。
然而,对于允许数据丢失但追求极致性能的情况,处理器300可不保持 针对内存数据库的基本操作与以下操作中的任何一个同步:将NVM中的与 存储器操作队列中的每一个基本组成单元中的每一个序列中的地址偏移量对 应的位置处的数据写入到NVM的回滚区的操作、以及将所述每一个序列写 入到NVM中的与所述每一个序列中的地址偏移量对应的位置处并固化的操 作。
但是,为了折中处理,如果所述基本操作针对内存数据库中的特定数据, 则处理器300可以等待直到从存储器操作队列中删除了与所述特定数据对应 的所有基本组成单元之后才使所述基本操作返回。具体地讲,处理器300可 以根据基本操作是针对内存数据库中的关键数据还是针对用户数据而选择不 同的处理方式,例如,如果所述基本操作针对内存数据库中的关键数据,则 处理器300可以等待直到从存储器操作队列中删除了与所述关键数据对应的 所有基本组成单元之后才使所述基本操作成功返回。
通过以上操作,处理器300在对内存数据库执行基本操作时有效地利用 NVM 200来备份DRAM 100中的内存数据库,下面将详细描述如何在系统重 启时利用NVM 200中存储的数据提供内存数据库的服务。
在系统重启时,对于内存数据库而言,DRAM中没有任何数据,但是由 于处理器300根据以上描述的过程使得NVM 200中存储了在系统崩溃或正常 关机前在DRAM中的内存数据库的一份镜像,因此处理器300可以直接利用 NVM 200中存储的内存数据库的镜像来提供服务。
具体地讲,在内存数据库重新启动后,处理器300首先需要检查NVM 200 的回滚区的尾部指针tail和头部指针head是否一致。
如果尾部指针tail和头部指针head一致,则说明存储器操作队列中的所 有基本组成单元中的序列(offset,len,data)中的数据data都被写入到NVM 200 中的用于存储关键数据的存储空间和/或用于存储用户数据的存储空间中,因 此处理器300可直接利用NVM200中的存储在用于存储关键数据的存储空间 和/或用于存储用户数据的存储空间中的内存数据库提供服务。
如果尾部指针tail和头部指针head不一致,则说明并非在存储器操作队 列中的所有基本组成单元中的序列(offset,len,data)中的数据data都被写入到 NVM 200的用于存储关键数据的存储空间和/或用于存储用户数据的存储空 间中,而是在该写入过程中发生了例如系统崩溃的事件,进而导致尾部指针 tail和头部指针head不一致,因此处理器300可从头部指针tail指向的位置开 始逐一地获取在NVM 200的回滚区中存储的序列(offset,len,original-data), 将获取的序列(offset,len,original-data)中的数据original-data写入到NVM中的 与获取的序列(offset,len,original-data)中的地址偏移量offset相应的位置处并 固化,其中,处理器300首先需要确定获取的序列(offset,len,original-data)中 的数据original-data是关键数据还是用户数据,然后根据确定的结果选择存储 在NVM 200中的关键数据基地址和用户数据基地址之一(例如,如果数据original-data是关键数据,则选择存储在NVM 200中的关键数据基地址,反 之则选择存储在NVM 200中的用户数据基地址),然后将获取的序列(offset, len,original-data)中的长度为len的数据original-data写入到NVM 200中的将 选择的基地址和序列(offset,len,original-data)中的地址偏移量offset相加而确 定的位置处,并将该数据固化在该位置处。此后,处理器300可将尾部指针 tail设置为头部指针head的值并固化以使得尾部指针tail和头部指针head一 致。
至此,处理器300可确保NVM 200的尾部指针tail和头部指针head一 致,为了使得处理器300可利用NVM 200中存储的内存数据库的镜像来提供 服务,处理器300可在DRAM100中重新分配用于存储关键数据基地址的第 一存储空间以及用于存储用户数据基地址的第二存储空间,然后可使用NVM 200中存储的关键数据基地址和用户数据基地址分别对第一存储空间和第二 存储空间进行赋值,从而使得处理器300可通过将DRAM 100中的存储了关 于NVM 200的关键数据基地址和用户数据基地址的第一存储空间和第二存 储空间用作访问NVM 200中存储的内存数据库的镜像的接口以提供服务,但 仅限于读服务。
然而,由于NVM 200的性能(例如速度等)不如DRAM 100,因此为 了保证内存数据库的最佳性能,处理器300可将NVM 200中保存的内存数据 库的镜像迁移到DRAM 100中。
具体地讲,处理器300可在DRAM 100中重新分配用于存储关键数据的 第三存储空间和用于存储用户数据的第四存储空间,并确定与第三存储空间 相应的基地址和与第四存储空间相应的基地址,然后处理器300可根据NVM 200中存储的关键数据基地址和用户数据基地址,按顺序将NVM 200中的关 键数据和用户数据分别复制到DRAM 100的第三存储空间和第四存储空间, 并且使用与第三存储空间相应的基地址和与第四存储空间相应的基地址分别 对第一存储空间和第二存储空间进行赋值,至此,处理器300就将NVM 200 中的内存数据库的镜像重新恢复到DRAM 100中,使得在系统崩溃或正常关 机前在DRAM 100中存储的内存数据库重新恢复到DRAM 100中并以最优性 能提供服务,例如读写服务。
图3是示出根据本申请示例性实施例的使用NVM恢复内存数据库的方 法的流程图。
如图3中所示,在步骤S100,在对DRAM中的内存数据库执行基本操 作的同时,将所述内存数据库中被执行了所述基本操作的数据插入到DRAM 中的存储器操作队列。
具体地讲,将所述内存数据库中被执行了所述基本操作的数据插入到 DRAM中的存储器操作队列的步骤可包括:将所述内存数据库中被执行了所 述基本操作的数据封装成基本组成单元,并将封装后的基本组成单元插入到 DRAM中的存储器操作队列。其中,如图1中所示,基本组成单元可包括用 于标识基本组成单元的开始的起始标识符op-start、用于标识基本组成单元的 结束的结束标识符op-end以及至少一个序列,其中,每个序列具有由地址偏 移量offset、数据长度len以及数据data所定义的特定格式(offset,len,data)。
在步骤S200,将NVM中的与所述存储器操作队列中的每一个基本组成 单元中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回 滚区,在下文中,为了便于描述,从NVM中读取的被写入到回滚区的数据 可被称为原始数据。下面将参照图4对步骤S200进行详细的描述。
如图4中所示,首先在步骤S210,检查存储器操作队列是否为空,如果 存储器操作队列为空,则返回步骤S210继续进行检查操作,如果存储器操作 队列不为空,则在步骤S220按照预定顺序(例如,按照存储器操作队列的先 进先出的顺序)搜索存储器操作队列中的相继出现的一对起始标识符op-start 和终止标识符op-end,进而获得完整的一个基本组成单元。
在步骤S230,依次读取NVM中的与所述一对起始标识符op-start和终 止标识符op-end之间的每一个序列(offset,len,data)中的地址偏移量offset对 应的位置处的原始数据original-data。具体地讲,首先确定所述一个基本组成 单元中包括的序列(offset,len,data)中的数据data是关键数据还是用户数据, 然后根据确定的结果选择存储在NVM中的关键数据基地址和用户数据基地 址之一(例如,如果数据data是关键数据,则选择存储在NVM中的关键数 据基地址,反之则选择存储在NVM中的用户数据基地址),然后从NVM中 读取位于将选择的基地址和序列(offset,len,data)中的地址偏移量offset相加而确定的地址处的长度为len的原始数据original-data。
在步骤S240,依次将从NVM中读取的原始数据original-data写入到 NVM的回滚区中的由回滚区的尾部指针tail所指向的位置处并固化。具体地 讲,首先按照特定格式将读取的长度为len的原始数据original-data组成新序 列(offset,len,original-data),其中,所述特定格式与存储器操作队列中的基本 组成单元中包括的序列的存储格式(offset,len,data)相同,新序列(offset,len, original-data)中的offset是原始数据original-data在NVM中所在的存储空间相 对于该存储空间的基地址的地址偏移量,例如,如果原始数据original-data 是关键数据,则该offset是NVM中用于存储关键数据的存储空间相对于关键 数据基地址的地址偏移量。此后,可将组成的新序列写入到NVM的回滚区中的由尾部指针tail所指向的位置处并将该序列固化在该位置处。例如,可 使用clflush、clflushopt、clwb等命令之一来确保将该序列固化到NVM中, 进而即使在掉电后,该序列仍然存在于NVM中。
在步骤S250,将回滚区的尾部指针tail指向回滚区的所有数据的末尾的 地址并对尾部指针tail进行固化。具体地讲,在针对存储器操作队列中的一 个基本组成单元中的所有序列完成了NVM中的相应数据的读取和固化之后, 需要将回滚区的尾部指针tail移动到回滚区的所有数据的末尾,并利用特定 命令(例如clflush、clflushopt、clwb等命令之一)将尾部指针tail固化到NVM 的用于存储尾部指针tail的存储空间中。
至此,所述方法将NVM中的与所述存储器操作队列中的每一个基本组 成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的 回滚区。
返回参照图3,在步骤S300,将在存储器操作队列中的基本组成单元中 包括的每一个序列(offset,len,data)写入到NVM中的与所述每一个序列(offset, len,data)中的地址偏移量offset对应的位置处并固化。其中,本申请可利用与 步骤S100的进程独立的独立进程来完成步骤S200和步骤S300。
具体地讲,可将所述每一个序列(offset,len,data)中的数据data写入NVM 中与所述每一个序列(offset,len,data)中的地址偏移量offset对应的位置处并 固化,具体地讲,可首先确定所述每一个序列(offset,len,data)中的数据data 是关键数据还是用户数据,然后根据确定的结果选择存储在NVM中的关键 数据基地址和用户数据基地址之一(例如,如果数据data是关键数据,则选 择存储在NVM中的关键数据基地址,反之则选择存储在NVM中的用户数据 基地址),然后将所述每一个序列(offset,len,data)中的长度为len的数据data 写入到NVM中的将选择的基地址和序列(offset,len,data)中的地址偏移量offset相加而确定的位置处,并将该数据data固化在NVM中的该位置处。
在一个基本组成单元中的所有序列中的数据data被写入NVM中并被固 化之后,可将NVM的回滚区的头部指针head设置为尾部指针tail的值并对 头部指针head进行固化,并且从存储器操作队列删除当前的基本单元。具体 地讲,在一个基本组成单元中的所有序列中的数据data被写入NVM中并被 固化之后,需要将回滚区的头部指针head移动到尾部指针tail的位置,并利 用特定命令(例如clflush、clflushopt、clwb等命令之一)将头部指针head固 化到NVM的用于存储头部指针head的存储空间中,从而保证回滚区的头部 指针head和尾部指针tail在一个基本组成单元中的所有序列中的数据data被 写入NVM中并被固化之后保持一致。
在以上的描述中,对于追求内存数据库中的任何数据都不能丢失的情况, 可以等待直到从存储器操作队列中删除与内存数据库中被执行了基本操作的 数据对应的所有基本组成单元之后才使基本操作成功返回。
然而,对于允许数据丢失但追求极致性能的情况,可不保持针对内存数 据库的基本操作与步骤S200和S300中的任何一个同步。
但是,为了折中处理,如果所述基本操作针对内存数据库中的特定数据, 则所述方法可以直到从存储器操作队列中删除了与所述特定数据对应的所有 基本组成单元之后才使所述基本操作返回。具体地讲,可以根据基本操作是 针对内存数据库中的关键数据还是针对用户数据而选择不同的处理方式,例 如,如果所述基本操作针对内存数据库中的关键数据,则所述方法可以直到 从存储器操作队列中删除了与所述关键数据对应的所有基本组成单元之后才 使所述基本操作成功返回。
通过以上操作,所述方法在对内存数据库执行基本操作时有效地利用 NVM来备份DRAM中的内存数据库,下面将详细描述如何在系统重启时利 用NVM中存储的数据提供内存数据库的服务。
图5是示出根据本申请示例性实施例的使用NVM提供内存数据库的服 务的方法的流程图。
如图5中所示,在步骤S510,在所述内存数据库重新启动后,检查NVM 的回滚区的尾部指针tail和头部指针head是否一致。
如果尾部指针tail和头部指针head不一致,则在步骤S520从头部指针 tail指向的位置开始逐一地获取在NVM 200的回滚区中存储的序列(offset,len, original-data)。然后在步骤S530,将获取的序列(offset,len,original-data)中的 数据original-data写入到NVM中的与获取的序列(offset,len,original-data)中的 地址偏移量offset相应的位置处并固化,具体地讲,首先需要确定获取的序 列(offset,len,original-data)中的数据original-data是关键数据还是用户数据, 然后根据确定的结果选择存储在NVM中的关键数据基地址和用户数据基地 址之一,例如,如果数据original-data是关键数据,则选择存储在NVM中的 关键数据基地址,反之则选择存储在NVM 200中的用户数据基地址。然后,在步骤S540,将获取的序列(offset,len,original-data)中的长度为len的数据original-data写入到NVM中的将选择的基地址和序列(offset,len,original-data) 中的地址偏移量offset相加而确定的位置处,并将该数据固化在该位置处。 此后,在步骤S550,可将尾部指针tail设置为头部指针head的值并固化以使 得尾部指针tail和头部指针head一致。
如果尾部指针tail和头部指针head一致,则进行到步骤S560。
在步骤S560,在DRAM中重新分配用于存储关键数据基地址的第一存 储空间以及用于存储用户数据基地址的第二存储空间。
在步骤S570,使用NVM中存储的关键数据基地址和用户数据基地址分 别对第一存储空间和第二存储空间进行赋值,从而使得可通过将DRAM中的 存储了关于NVM的关键数据基地址和用户数据基地址的第一存储空间和第 二存储空间用作访问NVM中存储的内存数据库的镜像的接口以提供服务, 但仅限于读服务。
然而,由于NVM的性能(例如速度等)不如DRAM,因此为了保证内 存数据库的最佳性能,本申请可利用图6所描述的方法将NVM中保存的内 存数据库的镜像迁移到DRAM中。
图6是示出根据本申请的另一示例性实施例的使用NVM提供内存数据 库的服务的方法的流程图。
图6中示出的方法包括了图5中示出的方法的所有步骤,因此,此处不 再对步骤S510至步骤S570进行重复描述。
在步骤S610,可在DRAM 100中重新分配用于存储关键数据的第三存储 空间和用于存储用户数据的第四存储空间,并确定与第三存储空间相应的基 地址和与第四存储空间相应的基地址。
然后在步骤S620,可根据NVM中存储的关键数据基地址和用户数据基 地址,按顺序将NVM中的关键数据和用户数据分别复制到DRAM的第三存 储空间和第四存储空间。
此后,在步骤S630,可使用与第三存储空间相应的基地址和与第四存储 空间相应的基地址分别对第一存储空间和第二存储空间进行赋值。
至此,所述方法就将NVM中的内存数据库的镜像重新恢复到DRAM中, 使得在系统崩溃或正常关机前在DRAM中存储的内存数据库重新恢复到 DRAM中并以最优性能提供服务,例如读写服务。
由于本申请可以利用高性能NVM作为内存数据库的备份设备,采用新 的镜像法在不依赖于snapshot和log的情况下实现内存数据库的实时数据持 久化。同时,本申请也可以不进行内存数据库恢复时的重构过程,实现内存 数据库的即时快速恢复。此外,本申请还能够针对追求极限性能的情况允许 一定数据新鲜度的损失,并能够在完全不影响内存数据库性能的情况下实现 持久化功能。
以上描述了本申请的各示例性实施例,应理解,上述描述仅是示例性的, 并非穷尽性的,本申请不限于所披露的各示例性实施例。在不偏离本申请的 范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更 都是显而易见的。因此,本申请的保护范围应该以权利要求的范围为准。

Claims (10)

1.一种使用非易失性存储器NVM恢复内存数据库的方法,所述方法包括:
在对动态随机存取存储器DRAM中的内存数据库执行基本操作的同时,将所述内存数据库中被执行了所述基本操作的数据插入到DRAM中的存储器操作队列;
将NVM中的与所述存储器操作队列中的每一个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回滚区;并且
将所述每一个序列写入到NVM中的与所述每一个序列中的地址偏移量对应的位置处并固化。
2.如权利要求1所述的方法,其中,将所述内存数据库中被执行了所述基本操作的数据插入到DRAM中的存储器操作队列的步骤包括:
将所述内存数据库中被执行了所述基本操作的数据封装成基本组成单元,其中,基本组成单元包括用于标识基本组成单元的开始的起始标识符、用于标识基本组成单元的结束的结束标识符以及至少一个序列;并且
将封装后的基本组成单元插入到DRAM中的存储器操作队列。
3.如权利要求2所述的方法,其中,所述至少一个序列中的每一个序列具有由地址偏移量、数据长度以及数据所定义的特定格式。
4.如权利要求3所述的方法,其中,将NVM中的与所述存储器队列中的每一个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回滚区的步骤包括:
按照预定顺序搜索所述存储器操作队列中的相继出现的一对起始标识符和终止标识符;
依次读取NVM中的与所述一对起始标识符和终止标识符之间的每一个序列中的地址偏移量对应的位置处的数据;
依次将读取的数据写入到所述回滚区中的由所述回滚区的尾部指针所指向的位置处并固化;并且
将所述尾部指针指向所述回滚区的所有数据的末尾的地址并对所述尾部指针进行固化。
5.如权利要求4所述的方法,其中,依次将读取的数据写入到所述回滚区中的由所述回滚区的尾部指针所指向的位置处并固化的步骤包括:
按照所述特定格式将读取的数据组成新序列;并且
将组成的新序列写入到所述回滚区中的由所述尾部指针所指向的位置处并固化。
6.如权利要求1所述的方法,将所述每一个序列写入到NVM中的与所述每一个序列中的地址偏移量对应的位置处并固化的步骤包括:
将所述每一个序列中的数据写入NVM中与所述每一个序列中的地址偏移量对应的位置处并固化;
在一个基本组成单元中的所有序列中的数据被写入NVM中并被固化之后,将所述回滚区的头部指针设置为所述尾部指针的值并对所述头部指针进行固化,并从所述存储器操作队列删除所述一个基本单元。
7.如权利要求6所述的方法,其中,直到从存储器操作队列中删除与内存数据库中被执行了所述基本操作的数据对应的所有基本组成单元之后才使所述基本操作返回。
8.如权利要求6所述的方法,其中,如果所述基本操作针对内存数据库中的特定数据,则直到从存储器操作队列中删除了与所述特定数据对应的所有基本组成单元之后才使所述基本操作返回。
9.如权利要求1所述的方法,其中,所述基本操作不与将NVM中的与所述存储器操作队列中的每一个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回滚区的步骤和将所述每一个序列写入到NVM中的与所述每一个序列中的地址偏移量对应的位置处并固化的步骤中的任何一个同步。
10.一种使用非易失性存储器NVM恢复内存数据库的设备,所述设备包括:
NVM;
动态随机存取存储器DRAM;以及
处理器,被配置为:
在对DRAM中的内存数据库执行基本操作的同时,将所述内存数据库中被执行了所述基本操作的数据插入到DRAM中的存储器操作队列;
将NVM中的与所述存储器操作队列中的每一个基本组成单元中的每一个序列中的地址偏移量对应的位置处的数据写入到NVM的回滚区;并且
将所述每一个序列写入到NVM中的与所述每一个序列中的地址偏移量对应的位置处并固化。
CN201911006523.6A 2019-10-22 2019-10-22 使用非易失性存储器nvm恢复内存数据库的方法和设备 Active CN110737547B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911006523.6A CN110737547B (zh) 2019-10-22 2019-10-22 使用非易失性存储器nvm恢复内存数据库的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911006523.6A CN110737547B (zh) 2019-10-22 2019-10-22 使用非易失性存储器nvm恢复内存数据库的方法和设备

Publications (2)

Publication Number Publication Date
CN110737547A true CN110737547A (zh) 2020-01-31
CN110737547B CN110737547B (zh) 2022-08-19

Family

ID=69270771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911006523.6A Active CN110737547B (zh) 2019-10-22 2019-10-22 使用非易失性存储器nvm恢复内存数据库的方法和设备

Country Status (1)

Country Link
CN (1) CN110737547B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150248443A1 (en) * 2014-03-02 2015-09-03 Plexistor Ltd. Hierarchical host-based storage
CN105830040A (zh) * 2013-12-20 2016-08-03 拉姆伯斯公司 用于访问存储器的存储器装置
CN105930280A (zh) * 2016-05-27 2016-09-07 诸葛晴凤 一种面向非易失性内存的高效的页面组织和管理方法
CN105975587A (zh) * 2016-05-05 2016-09-28 诸葛晴凤 一种高性能的内存数据库索引组织与访问方法
CN107728937A (zh) * 2017-09-15 2018-02-23 上海交通大学 一种使用非易失性内存介质的键值对持久存储方法及系统
CN109542356A (zh) * 2018-11-30 2019-03-29 中国人民解放军国防科技大学 面向容错的nvm持久化过程冗余信息的压缩方法和装置
CN109976947A (zh) * 2019-03-11 2019-07-05 北京大学 一种面向混合内存的掉电恢复的方法和系统
US10394472B1 (en) * 2016-03-31 2019-08-27 EMC IP Holding Company LLC Classification and identification from raw data within a memory domain

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105830040A (zh) * 2013-12-20 2016-08-03 拉姆伯斯公司 用于访问存储器的存储器装置
US20150248443A1 (en) * 2014-03-02 2015-09-03 Plexistor Ltd. Hierarchical host-based storage
US10394472B1 (en) * 2016-03-31 2019-08-27 EMC IP Holding Company LLC Classification and identification from raw data within a memory domain
CN105975587A (zh) * 2016-05-05 2016-09-28 诸葛晴凤 一种高性能的内存数据库索引组织与访问方法
CN105930280A (zh) * 2016-05-27 2016-09-07 诸葛晴凤 一种面向非易失性内存的高效的页面组织和管理方法
CN107728937A (zh) * 2017-09-15 2018-02-23 上海交通大学 一种使用非易失性内存介质的键值对持久存储方法及系统
CN109542356A (zh) * 2018-11-30 2019-03-29 中国人民解放军国防科技大学 面向容错的nvm持久化过程冗余信息的压缩方法和装置
CN109976947A (zh) * 2019-03-11 2019-07-05 北京大学 一种面向混合内存的掉电恢复的方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PENG WANG等: "RC-NVM: Enabling Symmetric Row and Column Memory Access for In-Memory Database", 《2018 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA)》 *
游理通等: "一个基于日志结构的非易失性内存键值存储系统", 《计算机研究与发展》 *

Also Published As

Publication number Publication date
CN110737547B (zh) 2022-08-19

Similar Documents

Publication Publication Date Title
US8051044B1 (en) Method and system for continuous data protection
EP3724764B1 (en) Write-ahead style logging in a persistent memory device
US8255371B2 (en) Methods and apparatuses for data protection
US7035881B2 (en) Organization of read-write snapshot copies in a data storage system
US8856469B2 (en) Apparatus and method for logging optimization using non-volatile memory
US6957362B2 (en) Instantaneous restoration of a production copy from a snapshot copy in a data storage system
US7412578B2 (en) Snapshot creating method and apparatus
JP4363676B2 (ja) コンピュータシステム
US7680996B2 (en) Method and system for shrinking a set of data using a differential snapshot, a watch-list structure along with identifying and retaining updated blocks
US6792518B2 (en) Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US6934822B2 (en) Organization of multiple snapshot copies in a data storage system
US8280858B2 (en) Storage pool scrubbing with concurrent snapshots
US10678653B2 (en) Recovery of in-memory state in a log-structured filesystem using fuzzy checkpoints
JP5012628B2 (ja) メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法
JP2006268139A (ja) データ複製装置、方法及びプログラム並びに記憶システム
KR101738965B1 (ko) 가비지 컬렉션 저널링 장치 및 방법
CN110134551B (zh) 一种持续数据保护方法及装置
CN115705152A (zh) 使用存储器内日志在非易失性存储器装置中的元数据管理
WO2006130768A2 (en) Transactional file system with client partitioning
CN115640238A (zh) 针对持久化内存的可靠内存映射i/o实现方法及系统
CN110737547B (zh) 使用非易失性存储器nvm恢复内存数据库的方法和设备
JP2008123104A (ja) データアクセス装置
CN114880277B (zh) 块设备快照方法、系统和存储介质
KR101404129B1 (ko) 데이터 저장 시스템 및 데이터 관리 방법
JP2008293108A (ja) ダンプデータ管理システム

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