CN113051241A - 数据库持久化的方法、装置及设备 - Google Patents
数据库持久化的方法、装置及设备 Download PDFInfo
- Publication number
- CN113051241A CN113051241A CN201911374728.XA CN201911374728A CN113051241A CN 113051241 A CN113051241 A CN 113051241A CN 201911374728 A CN201911374728 A CN 201911374728A CN 113051241 A CN113051241 A CN 113051241A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- memory
- log
- memory table
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库持久化的方法、装置及设备,该方法包括:在基于非易失性内存的数据库中的指定位置创建管理文件;所述管理文件至少包括:指向内存表在所述非易失性内存中的起始位置的第一指针和指向数据索引在所述非易失性内存中的起始位置的第二指针;当接收到针对所述数据库的数据更改指令时,在所述内存表中进行数据更改,并将所述数据更改对应的日志条目记录在所述数据库的日志文件中。本发明实施例可以记录与管理数据库在非易失性内存中占用的内存区域,对数据库的数据、数据索引和日志文件在非易失性内存的持久化,提高了数据库启停和访问性能。
Description
技术领域
本发明涉及通信领域,尤其涉及一种数据库持久化的方法、装置及设备。
背景技术
由于电信***架构的复杂性,必须具备高可用性以及实时性,所以对于数据库性能的要求非常的高。传统数据库的性能受到慢速I/O(Input/Output,输入/输出)的约束,提升性能的一个重要方法是使用内存数据库,尽量在内存中完成数据的存储和处理。
内存数据库并非持久化数据库,持久化数据库保存在外存中,在打开和关闭时内存数据库需要在内存和外存之间传输大量数据,造成大量性能开销;为了保证数据的持久性和一致性,内存数据库还需要在运行过程中不断把数据备份到持久化数据库,也造成大量性能开销。
发明内容
本发明实施例提供一种数据库持久化的方法、装置及设备,以解决现有内存数据库需要量数据备份到持久化数据库导致的大量性能开销问题。
为解决上述技术问题,本发明实施例是这样实现的:
第一方面,本发明实施例提供了一种数据库持久化的方法,包括:在基于非易失性内存的数据库中的指定位置创建管理文件;所述管理文件至少包括:指向内存表在所述非易失性内存中的起始位置的第一指针和指向数据索引在所述非易失性内存中的起始位置的第二指针;当接收到针对所述数据库的数据更改指令时,在所述内存表中进行数据更改,并将所述数据更改对应的日志条目记录在所述数据库的日志文件中;所述日志条目记录有所述数据更改的更改类型及指向数据更改位置的数据指针。
第二方面,本发明实施例提供了一种数据库持久化的装置,包括:管理文件创建模块,用于在基于非易失性内存的数据库中的指定位置创建管理文件;所述管理文件至少包括:指向内存表在所述非易失性内存中的起始位置的第一指针和指向数据索引在所述非易失性内存中的起始位置的第二指针;日志记录模块,用于当接收到针对所述数据库的数据更改指令时,在所述内存表中进行数据更改,并将所述数据更改对应的日志条目记录在所述数据库的日志文件中;所述日志条目记录有所述数据更改的更改类型及指向数据更改位置的数据指针。
第三方面,本发明实施例还提供了一种数据库持久化的设备,包括:存储器,存储有计算机程序指令;处理器,当所述计算机程序指令被所述处理器执行时实现如上述任一项所述的数据库持久化的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得所述计算机执行如上述任一项所述的数据库持久化的方法。
在本发明实施例中,通过在基于非易失性内存的数据库中的指定位置创建管理文件,该管理文件至少包括:指向内存表在非易失性内存中的起始位置的第一指针和指向数据索引在非易失性内存中的起始位置的第二指针,可以记录与管理数据库在非易失性内存中占用的内存区域,在重启时可以从该指定位置处的管理文件获取恢复数据库的整体信息;当接收到针对数据库的数据更改指令时,在内存表中进行数据更改,并将数据更改对应的日志条目记录在数据库的日志文件中,在日志条目中记录有数据更改的更改类型及指向数据更改位置的数据指针,从而实现基于非易失性内存的数据库的快速持久化;通过对数据库的数据、数据索引和日志文件在非易失性内存的持久化,避免向外存中写入日志,可以更快进行数据加载,提高数据库启停和访问性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的一个实施例中一种数据库持久化的方法的流程图。
图2是本发明的一个实施例中NVM管理元数据结构的示意图。
图3是本发明的一个实施例中原始日志结构引擎的流程示意图。
图4是本发明的一个实施例中基于NVM的日志结构引擎的流程示意图。
图5是本发明的一个实施例中原始存储结构引擎的结构示意图。
图6是本发明的一个实施例中基于NVM的存储结构引擎的结构示意图。
图7是本发明的一个实施例中LevelDB数据库的启动时间的对比示意图。
图8是本发明的一个实施例中LevelDB数据库的关闭时间的对比示意图。
图9是本发明的一个实施例中LevelDB数据库的删除操作时间的对比示意图。
图10是本发明的一个实施例中一种数据库持久化的装置的结构示意图。
图11是本发明的一个实施例中一种数据库持久化的设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明的一个实施例中一种数据库持久化的方法的流程图。图1的方法可包括:
S102,在基于非易失性内存的数据库中的指定位置创建管理文件。
其中,非易失性内存(Non-Volatile Memory,NVM)是指当电流关掉后,所存储的数据不会消失的存储器,例如只读存储器(Read Only Memory,ROM)和闪存(Flash memory)。在本实施例中数据库存储于NVM中,并且在NVM的指定位置创建管理文件,该管理文件至少包括:指向内存表在非易失性内存中的起始位置的第一指针和指向数据索引在非易失性内存中的起始位置的第二指针。可以理解的是,数据库的内存表和数据索引均存储于该NVM中,管理文件可以记录和管理数据库所占用的NVM的内存区域。
现有的使用传统内存的数据库,其内存区域的分配和回收都由操作***的内存管理***负责。在***重启后,内存管理***会收回所有内存区域,导致数据库占用的物理内存被***回收及再分配。在本实施例中,基于非易失性内存的数据库可以通过单独的***模块记录与管理NVM内存区域,从而持久化数据库占用内存区域的信息。具体地,可以在NVM的起始位置划分出一段区域,用来记录数据库在NVM中占用内存区域的管理结构。在***重启后,可以从该起始位置得到数据库的整体信息,不需要重新创建基于内存的数据库。
下面以数据库为LevelDB数据库为例进行说明,参见图2所示的NVM管理元数据结构的示意图,在LevelDB数据库原架构的基础上,新增了针对NVM的管理结构。
在图2中示出了NVM管理架构包括NVM的元数据(NVM metadata)、LevelDB的元数据(LevelDB metadata)和LevelDB的数据(Data of LevelDB)。NVM的元数据包括第一指针和第二指针,该第一指针为内存表Memtable指针(MtPa)和非可变内存表Immutable Memtable指针(Imtpa),第二指针为索引表Index table指针(Idxpa)。其中,MtPa用于NVM中用户寻址的指针,指向内存表在NVM中的起始位置,其后包含使用量data字段,通过起始位置的指针地址和使用量可得出在NVM中内存表的存储情况;Imtpa指向非可变的内存表在NVM中的起始位置;Idxpa指向数据索引在NVM中的起始位置。
S104,当接收到针对数据库的数据更改指令时,在内存表中进行数据更改,并将数据更改对应的日志条目记录在数据库的日志文件中。
由于NVM在电流关掉后存储的数据不会消失,因此数据可以持久化保存在NVM内的内存表中,包括内存表、数据索引和日志文件,不需要定时向磁盘或者硬盘等外存设备写入镜像或者日志。当接收到针对数据库的数据更改指令时,在内存表中进行数据更改,数据持久化保存在NVM中。当接收到针对数据库的数据更改指令时,将数据更改对应的日志条目记录在数据库的日志文件中,不需要预先向外存中写入日志。日志和数据索引均持久化保存在NVM中,从而可以更快进行数据加载,提高数据库启停速度,加快数据库访问性能。
本发明实施例提供了一种数据库持久化的方法,通过在基于非易失性内存的数据库中的指定位置创建管理文件,该管理文件至少包括:指向内存表在非易失性内存中的起始位置的第一指针和指向数据索引在非易失性内存中的起始位置的第二指针,可以记录与管理数据库在非易失性内存中占用的内存区域,在重启时可以从该指定位置处的管理文件获取恢复数据库的整体信息;当接收到针对数据库的数据更改指令时,在内存表中进行数据更改,并将数据更改对应的日志条目记录在数据库的日志文件中,在日志条目中记录有数据更改的更改类型及指向数据更改位置的数据指针,从而实现基于非易失性内存的数据库的快速持久化;通过对数据库的数据、数据索引和日志文件在非易失性内存的持久化,避免向外存中写入日志,可以更快进行数据加载,提高数据库启停和访问性能。
在NVM中的指定位置创建管理文件以及在NVM中的日志文件中保存日志条目的基础上,可以对数据库的数据进行有效恢复,上述方法还可包括步骤:
(1)当触发数据库的指定类事件时,读取管理文件和日志文件。该指定类事件包括使数据库中的数据丢失的事件,例如***重启、NVM断电等事件。通过读取上述管理文件和日志文件,得到数据库的存放位置和组织结构。
(2)根据管理文件和日志文件,恢复数据库中的数据,以使恢复后的数据与指定类事件发生之前的数据相同。具体地,可以根据管理文件中的第一指针,确定内存表在非易失性内存中的位置信息,并通过该位置信息定位内存表,然后根据日志文件中记录的日志条目,在数据指针指向的位置处执行与该日志条目记录的更改类型相同的数据更改操作。上述更改类型可包括数据添加、数据更新、数据删除中的至少一项类型。
现有的基于内存的LevelDB-log引擎的原始日志结构引擎,参见图3所示的原始日志结构引擎的流程示意图,当执行数据写入操作时,LevelDB会先向位于磁盘的Log文件中写入日志条目及数据,成功后再将数据***内存的MemTable中,从而完成写入操作。然后周期性地将MemTable异步同步到磁盘并压缩SSTable(Sorted String Table,排序的字符串表)以限制读取放大会带来显著的开销。Log文件用于***崩溃恢复而不丢失数据,假如没有磁盘中的Log文件,写入的数据刚开始是保存在内存中的,此时如果***崩溃,内存中的数据还没有来得及备份到磁盘,造成数据丢失。
在图3中还示出了磁盘中的SSTable的分层的结构,即:level 0:最多存储4个SSTable,level 1:存储不超过10MB大小的SSTable,level 2:存储不超过100MB大小的SSTable。图3中,Manifest文件记录了所有SST的元信息,包含文件名称、层级、最大最小键值等。同时Manifest也记录了未处理的日志文件号,重启后从Manifest文件中获取日志文件名进行数据恢复。Current文件用来记录最新的Manifest文件名称,在运行的过程中SST信息和日志文件均在改变,而Manifest文件本身是不可变的,因此会不断生成新的Manifest文件,而Current文件则用来追踪最新的Manifest文件名。
本实施例提供的基于NVM-Log引擎,参见图4所示的基于NVM的日志结构引擎的流程示意图,当执行数据写入操作时,LevelDB可以将操作执行的所有更改存储在NVM内的Log文件上。基于内存的LevelDB-log引擎需要将数据和日志均写入磁盘的Log文件中,而NVM-Log引擎仅在NVM中的Log文件中记录数据的非易失性指针,数据记录在MemTable中,避免了MemTable和Log中的数据重复。
当MemTable不断存储数据大小达到配置的限制时,可以进行非可变标记及合并,上述方法还可包括以下步骤:若内存表中存储的数据量达到预设阈值,则将内存表标记为非可变的内存表,并创建新的内存表;当存在待写入的新的数据时,将新的数据存储至新的内存表。当非可变的内存表包括多个时,基于预设规则合并多个非可变的内存表,得到合并后的内存表。在实施时,NVM-Log引擎不会将MemTable作为SSTable刷新到磁盘,而只是将MemTable标记为非可变MemTable,并启动一个新的MemTable。上述非可变的MemTable与MemTable是相同的数据结构,两者在物理上以相同的方式存储在NVM上。对于非可变的MemTable,NVM-Log引擎不会再写入数据,并通过压缩过程(compaction)合并一组MemTable并生成一个新的更大的MemTable。NVM-Log引擎使用NVM-aware恢复协议,其恢复延迟低于传统恢复协议。
参见图5所示的原始存储结构引擎的结构示意图,使用分级的日志结构合并树(Log-StructuredMerge-Tree,LSM)。如图5中所示,分配器(ALLOCATOR)中的B+Trees树中的每个级别包含单次数据的更改。数据从存储在最顶层的MemTable开始,随着时间的推移传播到存储在树下部的SSTables中,每个节点包括可变大小块池(Variable-Size BlocksPool)。存储在给定级别中的数据的大小比存储在其父级中的数据大k倍,其中k是树的增长因子。
日志引擎允许控制MemTable的大小和树的增长因子,可以使用MemTable中的接口将元数据的修改存储在内存优化的格式中,MemTable包含索引以有效地处理点和范围查询。当MemTable的大小超过阈值时,引擎将其刷新到文件***(FILESYSTEM),作为存储在单独文件中的不可变SSTable。在文件***中还示出了布隆过滤器(BloomFilter)和预写式日志(Write Ahead Log,WAL)。
参见图6所示的基于NVM的存储结构引擎的结构示意图,同样使用LSM来存储数据库。LSM树的每个级别都包含一个有序的数据。与原始日志引擎相似,此引擎首先将所有由事务执行的更改存储在作为LSM树最高级别的MemTable中,随着时间的推移传播到存储在树下部的MemTable中。更改包括***操作的元数据内容,更新操作的更新字段和删除操作的逻辑删除标记。当MemTable的大小超过阈值时,NVM-Log引擎将其标记为不可变(immutable),NVM-Log引擎可以合并一组不可变的MemTable并创建一个新的MemTable。
NVM-Log引擎维护一个Log文件,但该Log文件的目的不是重建MemTable,而是从MemTable中撤销未提交事务的影响,恢复已确认但未写入数据库的数据。上述NVM-Log引擎还是将WAL作为非易失性链表条目存储。上述方法还可包括以下步骤:在内存表中进行数据更改后,根据日志文件中记录的第二指针定位数据索引,更新数据索引中数据更改对应的索引条目。当事务***元数据时,引擎首先将数据记录刷新到NVM,并将非易失性元组指针记录在日志条目中。然后持久化日志条目并将该元组标记为持久化状态。最后,在数据索引中添加一个索引条目。
操作提交后,NVM-Log引擎会截断相关日志条目,因为记录在MemTable中的更改已经是持久化的。上述方法还可包括以下步骤:在内存表中进行数据更改后,截断日志文件中数据更改对应的日志条目。NVM-Log引擎的日志记录开销比原有的Log引擎低,因为它记录的数据较少并使用接口维护Log。引擎使用非易失性B+树作为数据索引,因此重新启动时不需要重建数据索引。
本实施提供的数据库持久化的方法,在NVM中使用单独的***模块记录与管理NVM内存区域,可以更加合理地进行NVM的分配与寻址;基于NVM的日志引擎,将日志记录与NVM中,可以避免磁盘日志写入;基于NVM的数据库日志和索引的持久化,可以提高数据库访问效率。
下面,将提供实验对本发明实施例的方法作进一步的描述。在实验中采用的实验平台的硬件环境是3.30GHz4核处理器,内存为32GB DDR3DRAM(Dynamic RandomAccess Memory,动态随机存取存储器),外存为7200rpm SATA3.0接口的磁盘,操作***为Ubuntu 14.04。实验用DRAM模拟NVM,设置***内存的大小为8GB,NVM内存区的大小为24GB.
实验中选取基本的LevelDB数据库操作对比性能,包括数据库的启动时间、关闭时间和删除操作时间。在实验中为了测试启动时间和关闭时间,设置不同规模大小的数据库。在测试删除操作时,分别提交不同数量的相关操作。为了记录各种操作在***中的真实性能,在各个版本的数据库源码中添加了时间戳。
参见图7所示的LevelDB数据库的启动时间的对比示意图,横坐标为数据库记录数量(number of records in the database),纵坐标为启动时间(start time,单位μs),菱形点构成的曲线表示现有LevelDB数据库的启动时间,矩形点构成的曲线表示应用本实施例提供方法的LevelDB数据库的启动时间。由于现有LevelDB数据库要扫描外存中的Log文件,将外存中数据库的镜像加载到内存才能恢复内存数据库,而应用本实施例提供方法的LevelDB数据库只需在NVM中固定位置读取数据库的元数据、扫描日志就可以恢复数据。
参见图8所示的LevelDB数据库的关闭时间的对比示意图,与图7类似,应用本实施例提供方法的LevelDB数据库的关闭时间优于现有LevelDB数据库。
由于删除操作是从数据库中删除对象,需要重新设置相关数据结构,涉及到数据库存储空间的回收和上层数据索引的修改,也需要保证更新操作的持久化和数据的一致性,参见图9所示的LevelDB数据库的删除操作时间的对比示意图,横坐标为删除操作数量(number of delete operations),纵坐标为启动时间(time of cost,单位μs),菱形点构成的曲线表示现有LevelDB数据库的删除操作时间,矩形点构成的曲线表示应用本实施例提供方法的LevelDB数据库的删除操作时间,可见应用本实施例提供方法的LevelDB数据库的删除操作时间优于现有LevelDB数据库。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图10是本发明的一个实施例中一种数据库持久化的装置的结构示意图,请参考图10,该数据库持久化的装置可包括:
管理文件创建模块1002,用于在基于非易失性内存的数据库中的指定位置创建管理文件;管理文件至少包括:指向内存表在非易失性内存中的起始位置的第一指针和指向数据索引在非易失性内存中的起始位置的第二指针;
日志记录模块1004,用于当接收到针对数据库的数据更改指令时,在内存表中进行数据更改,并将数据更改对应的日志条目记录在数据库的日志文件中;日志条目记录有数据更改的更改类型及指向数据更改位置的数据指针。
本发明实施例提供了一种数据库持久化的装置,通过在基于非易失性内存的数据库中的指定位置创建管理文件,该管理文件至少包括:指向内存表在非易失性内存中的起始位置的第一指针和指向数据索引在非易失性内存中的起始位置的第二指针,可以记录与管理数据库在非易失性内存中占用的内存区域,在重启时可以从该指定位置处的管理文件获取恢复数据库的整体信息;当接收到针对数据库的数据更改指令时,在内存表中进行数据更改,并将数据更改对应的日志条目记录在数据库的日志文件中,在日志条目中记录有数据更改的更改类型及指向数据更改位置的数据指针,从而实现基于非易失性内存的数据库的快速持久化;通过对数据库的数据、数据索引和日志文件在非易失性内存的持久化,避免向外存中写入日志,可以更快进行数据加载,提高数据库启停和访问性能。
可选地,作为一个实施例,所述装置还包括数据恢复模块,用于:当触发数据库的指定类事件时,读取管理文件和日志文件;指定类事件包括使数据库中的数据丢失的事件;根据管理文件和日志文件,恢复数据库中的数据,以使恢复后的数据与指定类事件发生之前的数据相同。
可选地,作为另一个实施例,所述数据恢复模块,具体用于:根据管理文件中的第一指针,确定内存表在非易失性内存中的位置信息;根据位置信息定位内存表;根据日志文件中记录的日志条目,在数据指针指向的位置处执行与更改类型相同的数据更改操作;更改类型包括数据添加、数据更新、数据删除中的至少一项类型。
可选地,作为一个实施例,所述装置还包括内存表写入模块,用于:若内存表中存储的数据量达到预设阈值,则将内存表标记为非可变的内存表,并创建新的内存表;当存在待写入的新的数据时,将新的数据存储至新的内存表。
可选地,作为一个实施例,所述装置还包括内存表合并模块,用于:当非可变的内存表包括多个时,基于预设规则合并多个非可变的内存表,得到合并后的内存表。
可选地,作为一个实施例,所述装置还包括索引更新模块,用于:在内存表中进行数据更改后,根据日志文件中记录的第二指针定位数据索引;更新数据索引中数据更改对应的索引条目。
可选地,作为一个实施例,所述装置还包括日志截断模块,用于:在内存表中进行数据更改后,截断日志文件中数据更改对应的日志条目。
本发明实施例提供的数据库持久化的装置能够实现图1的方法实施例中的各个过程,为避免重复,这里不再赘述。
请参阅图11,图11是本发明实施例应用的数据库持久化的设备的结构图,能够实现上述实施例中由数据库持久化的设备执行的数据库持久化的方法的细节,并达到相同的效果。如图11所示,数据库持久化的设备1100包括:处理器1101、收发机1102、存储器1103、用户接口1104和总线接口,其中:
在本发明实施例中,数据库持久化的设备1100还包括:存储在存储器上1103并可在处理器1101上运行的计算机程序,计算机程序被处理器1101执行时实现如下步骤:
在基于非易失性内存的数据库中的指定位置创建管理文件;所述管理文件至少包括:指向内存表在所述非易失性内存中的起始位置的第一指针和指向数据索引在所述非易失性内存中的起始位置的第二指针;
当接收到针对所述数据库的数据更改指令时,在所述内存表中进行数据更改,并将所述数据更改对应的日志条目记录在所述数据库的日志文件中;所述日志条目记录有所述数据更改的更改类型及指向数据更改位置的数据指针。
在图11中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器1101代表的一个或多个处理器和存储器1103代表的存储器的各种电路链接在一起。总线架构还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机1102可以是多个元件,即包括发送机和接收机,提供用于在传输介质上与各种其他装置通信的单元。针对不同的用户设备,用户接口1104还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。
处理器1101负责管理总线架构和通常的处理,存储器1103可以存储处理器1101在执行操作时所使用的数据。
可选的,计算机程序被处理器1101执行时还可实现如下步骤:当触发所述数据库的指定类事件时,读取所述管理文件和所述日志文件;所述指定类事件包括使所述数据库中的数据丢失的事件;根据所述管理文件和所述日志文件,恢复所述数据库中的数据,以使恢复后的所述数据与所述指定类事件发生之前的数据相同。
可选的,计算机程序被处理器1101执行时还可实现如下步骤:根据所述管理文件中的所述第一指针,确定所述内存表在所述非易失性内存中的位置信息;根据所述位置信息定位所述内存表;根据所述日志文件中记录的所述日志条目,在所述数据指针指向的位置处执行与所述更改类型相同的数据更改操作;所述更改类型包括数据添加、数据更新、数据删除中的至少一项类型。
可选的,计算机程序被处理器1101执行时还可实现如下步骤:若所述内存表中存储的数据量达到预设阈值,则将所述内存表标记为非可变的内存表,并创建新的内存表;当存在待写入的新的数据时,将所述新的数据存储至所述新的内存表。
可选的,计算机程序被处理器1101执行时还可实现如下步骤:当所述非可变的内存表包括多个时,基于预设规则合并多个所述非可变的内存表,得到合并后的内存表。
可选的,计算机程序被处理器1101执行时还可实现如下步骤:在所述内存表中进行所述数据更改后,根据所述日志文件中记录的所述第二指针定位所述数据索引;更新所述数据索引中所述数据更改对应的索引条目。
可选的,计算机程序被处理器1101执行时还可实现如下步骤:在所述内存表中进行所述数据更改后,截断所述日志文件中所述数据更改对应的所述日志条目。
本发明实施例提供了一种数据库持久化的设备,通过在基于非易失性内存的数据库中的指定位置创建管理文件,该管理文件至少包括:指向内存表在非易失性内存中的起始位置的第一指针和指向数据索引在非易失性内存中的起始位置的第二指针,可以记录与管理数据库在非易失性内存中占用的内存区域,在重启时可以从该指定位置处的管理文件获取恢复数据库的整体信息;当接收到针对数据库的数据更改指令时,在内存表中进行数据更改,并将数据更改对应的日志条目记录在数据库的日志文件中,在日志条目中记录有数据更改的更改类型及指向数据更改位置的数据指针,从而实现基于非易失性内存的数据库的快速持久化;通过对数据库的数据、数据索引和日志文件在非易失性内存的持久化,避免向外存中写入日志,可以更快进行数据加载,提高数据库启停和访问性能。
优选的,本发明实施例还提供一种数据库持久化的设备,包括处理器1101,存储器1103,存储在存储器1103上并可在所述处理器1101上运行的计算机程序,该计算机程序被处理器1101执行时实现上述数据库持久化的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据库持久化的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁碟或者光盘等。
本发明实施例提供一种计算机可读存储介质,在重启时可以从该指定位置处的管理文件获取恢复数据库的整体信息,在日志条目中记录有数据更改的更改类型及指向数据更改位置的数据指针,从而实现基于非易失性内存的数据库的快速持久化;通过对数据库的数据、数据索引和日志文件在非易失性内存的持久化,避免向外存中写入日志,可以更快进行数据加载,提高数据库启停和访问性能。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (10)
1.一种数据库持久化的方法,其特征在于,包括:
在基于非易失性内存的数据库中的指定位置创建管理文件;所述管理文件至少包括:指向内存表在所述非易失性内存中的起始位置的第一指针和指向数据索引在所述非易失性内存中的起始位置的第二指针;
当接收到针对所述数据库的数据更改指令时,在所述内存表中进行数据更改,并将所述数据更改对应的日志条目记录在所述数据库的日志文件中;所述日志条目记录有所述数据更改的更改类型及指向数据更改位置的数据指针。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当触发所述数据库的指定类事件时,读取所述管理文件和所述日志文件;所述指定类事件包括使所述数据库中的数据丢失的事件;
根据所述管理文件和所述日志文件,恢复所述数据库中的数据,以使恢复后的所述数据与所述指定类事件发生之前的数据相同。
3.根据权利要求2所述的方法,其特征在于,所述根据所述管理文件和所述日志文件,恢复所述数据库的数据,包括:
根据所述管理文件中的所述第一指针,确定所述内存表在所述非易失性内存中的位置信息;
根据所述位置信息定位所述内存表;
根据所述日志文件中记录的所述日志条目,在所述数据指针指向的位置处执行与所述更改类型相同的数据更改操作;所述更改类型包括数据添加、数据更新、数据删除中的至少一项类型。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述内存表中存储的数据量达到预设阈值,则将所述内存表标记为非可变的内存表,并创建新的内存表;
当存在待写入的新的数据时,将所述新的数据存储至所述新的内存表。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述非可变的内存表包括多个时,基于预设规则合并多个所述非可变的内存表,得到合并后的内存表。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述内存表中进行所述数据更改后,根据所述日志文件中记录的所述第二指针定位所述数据索引;
更新所述数据索引中所述数据更改对应的索引条目。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述内存表中进行所述数据更改后,截断所述日志文件中所述数据更改对应的所述日志条目。
8.一种数据库持久化的装置,其特征在于,包括:
管理文件创建模块,用于在基于非易失性内存的数据库中的指定位置创建管理文件;所述管理文件至少包括:指向内存表在所述非易失性内存中的起始位置的第一指针和指向数据索引在所述非易失性内存中的起始位置的第二指针;
日志记录模块,用于当接收到针对所述数据库的数据更改指令时,在所述内存表中进行数据更改,并将所述数据更改对应的日志条目记录在所述数据库的日志文件中;所述日志条目记录有所述数据更改的更改类型及指向数据更改位置的数据指针。
9.一种数据库持久化的设备,其特征在于,包括:
存储器,存储有计算机程序指令;
处理器,当所述计算机程序指令被所述处理器执行时实现如权利要求1至7中任一项所述的数据库持久化的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1至7中任一项所述的数据库持久化的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911374728.XA CN113051241B (zh) | 2019-12-27 | 2019-12-27 | 数据库持久化的方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911374728.XA CN113051241B (zh) | 2019-12-27 | 2019-12-27 | 数据库持久化的方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113051241A true CN113051241A (zh) | 2021-06-29 |
CN113051241B CN113051241B (zh) | 2023-08-15 |
Family
ID=76506597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911374728.XA Active CN113051241B (zh) | 2019-12-27 | 2019-12-27 | 数据库持久化的方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113051241B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827660A (zh) * | 2023-02-14 | 2023-03-21 | 本原数据(北京)信息技术有限公司 | 数据更新方法、装置、电子设备及非易失性存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677879A (zh) * | 2016-01-12 | 2016-06-15 | 诸葛晴凤 | 内存关系数据库的数据组织及访问方法 |
CN105930356A (zh) * | 2016-04-08 | 2016-09-07 | 上海交通大学 | 日志型异构混合内存文件***的实现方法 |
CN105975587A (zh) * | 2016-05-05 | 2016-09-28 | 诸葛晴凤 | 一种高性能的内存数据库索引组织与访问方法 |
US20170017411A1 (en) * | 2015-07-13 | 2017-01-19 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
CN107016100A (zh) * | 2017-04-10 | 2017-08-04 | 重庆大学 | 一种基于非易失性内存文件***的元数据管理方法 |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件*** |
CN108319602A (zh) * | 2017-01-17 | 2018-07-24 | 广州市动景计算机科技有限公司 | 数据库管理方法及数据库*** |
US20190034922A1 (en) * | 2017-07-25 | 2019-01-31 | Bank Of America Corporation | Real-time processing distributed ledger system |
CN110347852A (zh) * | 2019-06-06 | 2019-10-18 | 华中科技大学 | 嵌入横向扩展键值存储***的文件***及文件管理方法 |
CN110347336A (zh) * | 2019-06-10 | 2019-10-18 | 华中科技大学 | 一种基于nvm与ssd混合存储结构的键值存储*** |
-
2019
- 2019-12-27 CN CN201911374728.XA patent/CN113051241B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170017411A1 (en) * | 2015-07-13 | 2017-01-19 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
CN105677879A (zh) * | 2016-01-12 | 2016-06-15 | 诸葛晴凤 | 内存关系数据库的数据组织及访问方法 |
CN105930356A (zh) * | 2016-04-08 | 2016-09-07 | 上海交通大学 | 日志型异构混合内存文件***的实现方法 |
CN105975587A (zh) * | 2016-05-05 | 2016-09-28 | 诸葛晴凤 | 一种高性能的内存数据库索引组织与访问方法 |
CN108319602A (zh) * | 2017-01-17 | 2018-07-24 | 广州市动景计算机科技有限公司 | 数据库管理方法及数据库*** |
CN107016100A (zh) * | 2017-04-10 | 2017-08-04 | 重庆大学 | 一种基于非易失性内存文件***的元数据管理方法 |
US20190034922A1 (en) * | 2017-07-25 | 2019-01-31 | Bank Of America Corporation | Real-time processing distributed ledger system |
CN107862064A (zh) * | 2017-11-16 | 2018-03-30 | 北京航空航天大学 | 一个基于nvm的高性能、可扩展的轻量级文件*** |
CN110347852A (zh) * | 2019-06-06 | 2019-10-18 | 华中科技大学 | 嵌入横向扩展键值存储***的文件***及文件管理方法 |
CN110347336A (zh) * | 2019-06-10 | 2019-10-18 | 华中科技大学 | 一种基于nvm与ssd混合存储结构的键值存储*** |
Non-Patent Citations (7)
Title |
---|
JOY ARULRAJ: ""Let’s Talk About Storage & Recovery Methods for"", 《ACM》 * |
JOY ARULRAJ: ""Let’s Talk About Storage & Recovery Methods for"", 《ACM》, 4 June 2015 (2015-06-04), pages 1 - 16 * |
游理通等: "一个基于日志结构的非易失性内存键值存储***", 《计算机研究与发展》 * |
游理通等: "一个基于日志结构的非易失性内存键值存储***", 《计算机研究与发展》, no. 09, 15 September 2018 (2018-09-15) * |
马文龙;朱妤晴;蒋德钧;熊劲;张立新;孟潇;包云岗;: "Key-Value型NoSQL本地存储***研究", 计算机学报, no. 08 * |
马文龙等: "Key-Value型NoSQL本地存储***研究", 《计算机学报》 * |
马文龙等: "Key-Value型NoSQL本地存储***研究", 《计算机学报》, no. 08, 1 June 2017 (2017-06-01) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827660A (zh) * | 2023-02-14 | 2023-03-21 | 本原数据(北京)信息技术有限公司 | 数据更新方法、装置、电子设备及非易失性存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113051241B (zh) | 2023-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7220234B2 (ja) | Lsmデータ構造内の効率的なレコードルックアップのためのキャッシュ | |
US9183129B2 (en) | Method and system for managing large write-once tables in shadow page databases | |
US10564850B1 (en) | Managing known data patterns for deduplication | |
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
EP2780796B1 (en) | Method of and system for merging, storing and retrieving incremental backup data | |
US8549051B2 (en) | Unlimited file system snapshots and clones | |
US8738850B2 (en) | Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory | |
US9678966B2 (en) | Swat command and API for atomic swap and trim of LBAs | |
US20040030951A1 (en) | Instantaneous restoration of a production copy from a snapshot copy in a data storage system | |
JP2011513853A (ja) | 連想ストレージのシステムと方法 | |
CN102696010A (zh) | 用于将数据高速缓存在固态存储设备上的装置、***和方法 | |
EP2590078A2 (en) | Shadow paging based log segment directory | |
US20040158566A1 (en) | Snapshot by deferred propagation | |
WO2020041950A1 (zh) | 一种基于b+树索引的数据更新方法、装置及存储装置 | |
US9684658B2 (en) | SWAT command and API for atomic swap and trim of logical pages | |
KR20110046118A (ko) | 적응적 로깅 장치 및 방법 | |
CN113051241B (zh) | 数据库持久化的方法、装置及设备 | |
US11860840B2 (en) | Update of deduplication fingerprint index in a cache memory | |
US20100228787A1 (en) | Online data volume deletion | |
CN115794819A (zh) | 一种数据写入方法及电子设备 | |
TWI750116B (zh) | 用於邏輯頁面的基元交換與修整(swat)之swat命令及應用程式介面(api) | |
KR20210156682A (ko) | 데이터베이스 관리 시스템을 이용하여 파일시스템의 메타데이터를 관리하는 방법 | |
JPH0438536A (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 |