掌桥专利:专业的专利平台
掌桥专利
首页

一种数据序列恢复方法、装置、设备及存储介质

文献发布时间:2023-06-19 12:13:22


一种数据序列恢复方法、装置、设备及存储介质

技术领域

本申请实施例涉及数据处理领域,尤其涉及一种数据序列恢复方法、装置、设备及存储介质。

背景技术

序列(Sequence,又名序列生成器)是数据库中的一类对象,通过使用序列,多个用户可以产生和使用一组不重复的有序整数值。序列通过提供一定顺序的唯一数值来简化程序设计工作,比如可以使用序列来自动地生成主键值。当前主流数据库都实现了序列,如Oracle、SQL Server等,通过配置序列的起始值、步长、最大值、最小值、是否循环等属性,可以控制序列的生成方式。在知道序列的当前值时,总是可以明确知道序列的下一个取值。比如,已知序列对象sequence_demo,配置起始值为0,步长为2,最大值为1000,不循环。已知sequence_demo当前值为100,可以明确知道后续序列值一定为102、104、106......998、1000。目前,维护序列的一种简单的方式是在内存中记录序列的当前值,每次获取新的序列值时,同时使用最新值更新当前值。然而数据库运行过程中,随时可能因为系统缺陷、外部故障等不可预期的问题导致数据库崩溃,使用该种序列维护方式,数据库故障后序列的当前值将丢失,无法保证序列值的唯一性。

发明内容

本申请实施例提供了一种数据序列恢复方法、装置、设备及存储介质,旨在通过将序列当前值的修改记录到物理日志中,可以保证数据库在发生故障之后,能够通过重演物理日志的方式自动恢复序列的当前值。

第一方面,本申请实施例提供了一种数据序列恢复方法,该方法包括:

按照预设时间将内存中的至少一项序列值周期性存储至磁盘中;

其中,每个序列值对应有物理日志;

在内存中的序列值丢失的情况下,根据物理日志恢复内存中的序列值。

第二方面,本申请实施例还提供了一种数据序列恢复装置,该装置包括:

存储模块,用于按照预设时间将内存中的至少一项序列值周期性存储至磁盘中;

其中,每个序列值对应有物理日志;

恢复模块,用于在内存中的序列值丢失的情况下,根据物理日志恢复内存中的序列值。

第三方面,本申请实施例还提供了一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,当处理器执行计算机程序时,实现如本申请任意实施例提供的数据序列恢复方法。

第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请任意实施例提供的数据序列恢复方法。

本申请实施例提供了一种数据序列恢复方法、装置、设备及存储介质,该方法包括:按照预设时间将内存中的至少一项序列值周期性存储至磁盘中;其中,每个序列值对应有物理日志;在内存中的序列值丢失的情况下,根据物理日志恢复内存中的序列值。这样通过将序列当前值的修改记录到物理日志中,可以保证数据库在发生故障之后,能够通过重演物理日志的方式自动恢复序列的当前值。

附图说明

图1为本申请实施例中的表空间、数据文件、段、簇、页关系示意图;

图2是本申请实施例中的一种数据序列恢复方法的流程图;

图3是本申请实施例中的确定内存中的序列值的方法流程图;

图4是本申请实施例中的加载数据页至内存中的示意图;

图5是本申请实施例中的根据物理日志恢复内存中的序列值的方法流程图;

图6是本申请实施例中的创建序列的方法流程图;

图7是本申请实施例中的一种数据序列恢复装置的结构示意图;

图8是本申请实施例中的另一种数据序列恢复装置的结构示意图;

图9是本申请实施例中的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。

另外,在本申请实施例中,“可选地”或者“示例性地”等词用于表示作例子、例证或说明。本申请实施例中被描述为“可选地”或者“示例性地”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“可选地”或者“示例性地”等词旨在以具体方式呈现相关概念。

为了便于更加清楚的理解本申请实施例所提供的方案,在此对本申请实施例中所涉及到的相关概念做进一步地说明,具体如下:

数据库中的所有数据存储在一组数据文件中,所有的数据文件构成数据库的存储空间。在达梦(DM)数据库中,为了便于管理数据,将存储空间划分为表空间、数据文件、段、簇、页五个层次。如图1所示,数据库由一个或多个表空间组成,每个表空间由一个或多个数据文件组成,通过表空间标识(Identity,ID)唯一标识数据库中的表空间。每个数据文件由磁盘上多个连续的数据页组成,通过文件ID唯一标识表空间中的数据文件,数据页是数据库中最小的分配单元,也是数据库中使用的最小的输入/输出(Input/Output,I/O)单元,通过页号唯一标识数据文件中的数据页。簇是数据页的上级逻辑单元,每个簇由同一个数据文件中16个或32个或64个连续的数据页组成。段是簇的上级逻辑单元,每个段由一个或多个簇组成,如图1所示,其中的簇可以是不同数据文件中的簇。

图2为本申请实施例提供的一种数据序列恢复方法的流程图,该方法可以应用于数据库中,如图2所示,该方法可以包括但不限于以下步骤:

S201、按照预设时间将内存中的至少一项序列值周期性存储至磁盘中。

这里的预设时间可以为人为设定的时间长度,即周期性地将内存中的一项或多项序列值存储至磁盘中,这样可以避免频繁的在磁盘中进行数据读写,造成磁盘I/O的性能损耗。进一步地,在本申请实施例中,内存中存储的每个序列值均有其对应的物理日志,该物理日志用于记录对序列值的更新操作和操作修改后的序列当前值。

示例性地,物理日志的结构可以为:

DDWORD:(表空间ID,文件ID,页号,偏移,字节数,序列值)

其中“DDWORD”代表一条物理日志,“表空间ID”、“文件ID”、“页号”和“偏移”用来定位序列的存储空间位置,“字节数”表示“序列值”所占用的字节数,“序列值”表示本次更新操作所更新的序列当前值。

S202、在内存中的序列值丢失的情况下,根据物理日志恢复内存中的序列值。

由于计算机硬件、操作系统或软件内部发生故障等各种原因,可能会导致存储数据序列的内存中的序列值丢失,那么由于对内存中的序列每次进行操作之前,都会先生成物理日志以记录此次更新操作和对序列当前值的修改。因而,在数据库发生异常关闭,导致内存中的序列值丢失的情况下,可以通过重演物理日志的方式恢复内存中的序列值。

本申请实施例提供了一种数据序列恢复方法,该方法包括:按照预设时间将内存中的至少一项序列值周期性存储至磁盘中;其中,每个序列值对应有物理日志;在内存中的序列值丢失的情况下,根据物理日志恢复内存中的序列值。这样通过将序列当前值的修改记录到物理日志中,可以保证数据库在发生故障之后,能够通过重演物理日志的方式自动恢复序列的当前值。

如图3所示,在一种示例中,确定上述步骤S201中内存中的序列值的实现方式可以包括但不限于步骤:

S301、从系统字典中获取序列的元数据。

数据库中的每个序列包含两部分数据,一部分是序列的当前值,另一部分是序列的元数据,记为META,元数据保存在系统字典中,记录了序列的起始值、步长、最大值、最小值等属性配置信息。

S302、从内存中的数据页获取序列的序列当前值。

序列的各个序列值都保存于为序列分配的存储空间中,该存储空间记为BLOCK,该BLOCK通过表空间ID、文件ID、页号和页内偏移来定位,BLOCK所在的表空间ID、文件ID、页号和页内偏移即为存储空间位置信息,其可以记录于元数据中,即元数据用于记录属性配置信息和存储空间位置信息两部分内容。

进一步地,如图4所示,在从内存中的数据页获取序列的序列当前值之前,还可以根据元数据中的存储空间位置信息从磁盘的数据文件中获取存储空间所在的数据页,并将该数据页加载至内存中。

S303、根据元数据中的属性配置信息和序列当前序列值计算序列新的序列值。

由于属性配置信息中记录有序列的步长,那么可以根据该步长和序列的当前序列值计算序列新的序列值。

示例性地,上述实现过程可以包括:

SQL>SELECT SEQUENCE_DEMO.NEXTVAL;

行号 NEXTVAL

--------------------

1 102

S304、将新的序列值存储至内存的数据页中,并将新的序列值作为序列当前值。

基于属性配置信息中的步长计算得到新的序列值之后,将该新的序列值存储至内存的数据页BLOCK中,并将计算得到的新的序列值作为序列当前值,为下一次计算更新做准备。

在属性配置信息的序列值范围内,即元数据记录的最大值和最小值范围内,重复上述步骤S302至步骤S304。

进一步地,在计算序列新的序列值之后,本申请实施例还提供了一种实现方式为,根据新的序列值生成与新的序列值对应的物理日志,即在物理日志中记录此次更新修改后的序列值。生成与新的序列值对应的物理日志的这一过程也可以在将新的序列值存储至内存的数据页中之前进行,以保证每次对BLOCK中的序列更新时,相关更新操作都记录在物理日志中。在针对BLOCK的相应修改完成之后,可以立即将物理日志写入磁盘中进行记录。

如图5所示,在一种示例中,上述步骤S202中,根据物理日志恢复内存中的序列值的实现方式可以包括但不限于以下步骤:

S501、确定待恢复的物理日志。

由于内存中存储的序列值是周期性存储至磁盘中的,那么可以确定将内存中至少一项序列值存储至磁盘中的最近时间点,该最近时间点之后的时间段还未达到周期性存储的预设时间,说明内存中操作、更新的序列值还未存储至磁盘中,那么将该最近时间点后生成的所有物理日志确定为待恢复的物理日志。

S502、解析当前物理日志,获取当前物理日志记录中存储空间位置信息。

本步骤中的当前物理日志即为上述步骤S501中确定的待恢复的物理日志中的任意一条日志。

S503、根据存储空间位置信息从磁盘的数据文件中获取存储空间所在的数据页。

S504、将数据页加载至内存中。

S505、将当前物理日志中记录的序列值写入数据页的存储空间中,并将下一条物理日志确定为当前物理日志。

重复上述步骤S502至步骤S505,直至恢复所有待恢复的物理日志。

如图6所示,在一种示例中,本申请实施例还提供了一种创建序列的实现方式包括但不限于以下步骤:

S601、为序列分配存储空间。

S602、将存储空间所在的数据页加载至内存中。

S603、根据序列的起始值初始化存储空间,并生成对应的物理日志。

S604、将序列的元数据写入系统字典。

示例性地,创建序列的方式包括:

SQL>CREATE SEQUENCE SEQUENCE_DEMO START WITH 100INCREMENT BY2MAXVALUE 1000;

其中,100为序列的起始值,2为步长,1000为最大值。

图7为本申请实施例提供的一种数据序列恢复装置的结构示意图,如图7所示,该装置可以包括:存储模块701、恢复模块702;

其中,存储模块,用于按照预设时间将内存中的至少一项序列值周期性存储至磁盘中,每个序列值对应有物理日志;

恢复模块,用于在内存中的序列值丢失的情况下,根据物理日志恢复内存中的序列值。

在一种示例中,如图8所示,上述装置还可以包括确定模块703;

确定模块,用于执行以下过程,实现确定内存中的序列值,包括:

步骤一:从系统字典中获取序列的元数据;

步骤二:从内存中的数据页获取序列的序列当前值;

步骤三:根据元数据中的属性配置信息和序列当前序列值计算序列新的序列值;

步骤四:将新的序列值存储至内存的数据页中,并将新的序列值作为序列当前值;

在属性配置信息的序列值范围内,重复上述步骤二至步骤四。

进一步地,如图8所示,上述装置还可以包括加载模块704;

加载模块,用于根据元数据中的存储空间位置信息从磁盘的数据文件中获取存储空间所在的数据页,并将数据页加载至内存中。

可选地,如图8所示,上述装置还可以包括生成模块705;

生成模块,用于根据新的序列值生成与新的序列值对应的物理日志。

在一种示例中,上述恢复模块包括确定单元、解析单元、获取单元和存储单元;

确定单元,用于确定待恢复的物理日志;

解析单元,用于解析当前物理日志;

获取单元,用于获取当前物理日志记录中存储空间位置信息;以及,根据存储空间位置信息从磁盘的数据文件中获取存储空间所在的数据页;

存储单元,用于将数据页加载至内存中;以及将当前物理日志中记录的序列值写入数据页的存储空间中;

确定单元,还用于将下一条物理日志确定为当前物理日志。

进一步地,确定单元,用于确定将内存中至少一项序列值存储至磁盘中的最近时间点,并将最近时间点以后生成的所有物理日志确定为待恢复的物理日志。

如图8所示,在一种示例中,上述装置还可以包括初始化模块706,初始化模块包括分配单元、加载单元、生成单元和存储单元;

分配单元,用于为序列分配存储空间;

加载单元,用于将存储空间所在的数据页加载至内存中;

生成单元,用于根据序列的起始值初始化存储空间,并生成对应的物理日志;

存储单元,用于将序列的元数据写入系统字典。

上述数据序列恢复装置可以执行图1-图6所提供的数据序列恢复方法,具备该方法中相应的器件和有益效果。

图9为本发明实施例提供的一种计算机设备的结构示意图,如图9所示,该计算机设备包括控制器801、存储器802、输入装置803、输出装置804;计算机设备中控制器801的数量可以是一个或多个,图9中以一个控制器801为例;控制器801、存储器802、输入装置803和输出装置804可以通过总线或其他方式连接,图9中以通过总线连接为例。

存储器802作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如图1-图6实施例中的数据序列恢复方法对应的程序指令/模块(例如,数据序列恢复装置中的存储模块701、恢复模块702)。控制器801通过运行存储在存储器802中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的数据序列恢复方法。

存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器802可进一步包括相对于控制器801远程设置的存储器,这些远程存储器可以通过网络连接至终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置803可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置804可包括显示屏等显示装置。

本申请实施例还提供一种包含计算机可执行指令的存储介质,该计算机可执行指令在由计算机控制器执行时用于执行一种数据序列恢复方法,该方法包括图1-图6所示的步骤。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。

值得注意的是,上述数据序列恢复装置中所包括的模块只是按照功能逻辑进行划分,但并不局限于上述的划分方式,只要能够实现相应的功能即可,不用于限制本申请的保护范围。

注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

相关技术
  • 一种数据序列恢复方法、装置、设备及存储介质
  • 数据库删除数据的恢复方法、装置、设备和存储介质
技术分类

06120113212858