一种闪存数据库数据恢复的方法技术

技术编号:16326995 阅读:49 留言:0更新日期:2017-09-29 18:57
本发明专利技术公开了一种闪存数据库数据恢复的方法,其中,包括:扫描日志文件,确认日志文件中是否有仍然有效的事务提交日志记录或事务回滚日志;依据日志文件当前的状态分别进行处理:若存在有效的事务提交日志记录,表明涉及该事务的所有更改尚未完全写入到数据文件中,需依据日志记录,完成数据文件的重写;若存在有效的回滚日志记录,则依据事务ID查找所有日志记录,并进行回滚操作;若不存在有效的事务提交日志记录,也不存在有效的回滚日志,但存在仍然有效的日志记录,表明该事务尚未完成,检查是否存在部分日志记录已写入数据文件,而部分未写入的情况,如存在,则进行回滚操作。

【技术实现步骤摘要】
一种闪存数据库数据恢复的方法
本专利技术涉及一种闪存的数据存储技术,特别涉及一种闪存数据库数据恢复的方法。
技术介绍
基于日志的恢复技术被广泛应用于传统的磁盘数据库管理系统中。在不同的协议之下,日志记录的设计、日志/数据缓冲区的管理、检查点机制、记录日志和恢复的过程都不一样。以undo日志为例,当事务T需要将数据库元素X(原始值为v)的值更改为v1时,undo日志就会形成如<T,X,v1>的日志记录并存储到磁盘上。当需要对事务T进行回滚操作时,则形成如<T,X,v>的日志记录,将元素X的值重置为v。闪存(FlashMemory)是一种长寿命的非易失性存储器。与磁盘相比,闪存具有读写速度快、抗震、省电、体积小等优点。在闪存中重现undo日志恢复过程:(1)数据表初始状态如表1(a)所示,表中包含A、B、C三个元素,初始值分别为va、vb、vc,此时标志位均设为1,表示三个元素取值均有效;(2)当事务T将数据表中的A值从va修改为va’,插入一条新记录,如表1(b)中的最后一行,此时第一行A值的标志位设为0,表示A的取值发生了变化,原值已不再有效;(3)如果事务T需要回滚,则再写入一条新记录,将A值恢复为va,如表1(c)所示。表1(a)取值标志位Ava1Bvb1Cvc1………表1(b)取值标志位Ava0Bvb1Cvc1Ava’1………表1(c)取值标志位Ava0Bvb1Cvc1Ava’0Ava1………从表1(c)中可以看出,最后一条记录和第一条记录完全相同,也就是说最后一行在这种情况下是冗余的。因此闪存中通常存在大量的数据的历史版本,而传统的数据恢复方法又不断地写入已经存在的数据记录,这样既浪费空间又浪费时间。
技术实现思路
本专利技术的目的在于提供一种闪存数据库数据恢复的方法,用于解决上述现有技术的问题。本专利技术一种闪存数据库数据恢复的方法,其中,包括:扫描日志文件,确认日志文件中是否有仍然有效的事务提交日志记录或事务回滚日志;依据日志文件当前的状态分别进行如下处理:若存在有效的事务提交日志记录,表明涉及该事务的所有更改尚未完全写入到数据文件中,需依据日志记录,完成数据文件的重写;若存在有效的回滚日志记录,则依据事务ID查找所有日志记录,并进行回滚操作;若不存在有效的事务提交日志记录,也不存在有效的回滚日志,但存在仍然有效的日志记录,表明该事务尚未完成,检查是否存在部分日志记录已写入数据文件,而部分未写入的情况,如存在,则进行回滚操作。根据本专利技术的闪存数据库数据恢复的方法的一实施例,其中,回滚操作包括:首先依据事务ID从日志文件中找出所有关于事务ID对应的该事务仍然有效的日志记录,然后依次判断日志记录操作类型,根据不同操作类型,完成如下操作:若是插入操作,则删除当前插入的数据元素;若是删除操作,则重新插入被删除的数据元素;若是更新操作,则将数据元素的值恢复到初始状态。根据本专利技术的闪存数据库数据恢复的方法的一实施例,其中,还包括:链式日志,包括一个链表和一个数据表,链表中顺序存储每一个事务产生的不同数据操作的日志记录,数据表中包含一个日志记录中每个数据成员的不同版本数据,链表的日志记录中包含指定数据表的地址;数据表中的日志记录包含事务ID、数据成员、前成员和数据地址表四个字段,其中事务ID为当前日志记录所属事务的ID号;数据成员为当前数据操作指向的数据成员的名称;前成员为当前事务中产生变化的前成员;数据地址表为数据成员所有版本数据的地址,每个版本数据按时间顺序用链表进行连接,当事务提交或回滚后,该数据地址字段设置为空。根据本专利技术的闪存数据库数据恢复的方法的一实施例,其中,日志记录构建日志文件的方法包括:当一个新事务开启,并产生第一个数据变化时,为第一个更新的数据成员插入一条日志记录;当事务中产生其他数据成员变化时,则插入一条新的日志记录,将其前成员设为上一变化的数据记录;对于插入和删除操作,在数据地址表中使用多个标示符来区别不同版本的数据;如果事务被提交或回滚,则插入一条提交或回滚日志记录,前成员设置为之前更新的成员;记录数据库中所有产生变化的数据成员及其具体的数据操作,并统一存储在日志文件中。根据本专利技术的闪存数据库数据恢复的方法的一实施例,其中,还包括:在日志文件中写入检查点,表明当前位置为检查点;以日志块为单位对日志进行逐条扫描,当遇到检查点时,确认在检查点之前所有日志记录的有效性,将仍然有效的日志记录写入新的空闲块;当完成对一个日志块的扫描后,对其进行擦除操作,并转入下一个未扫描的日志块;当空闲块已满,则申请新的空闲块,将新的有效记录写入新的空闲块。根据本专利技术的闪存数据库数据恢复的方法的一实施例,其中,还包括:将当前日志块中的有效记录转存到新的日志块的方法包括:将转存标志位设为1,并创建一个新的日志块;获取第一条日志记录,判断当前转存标志位是否为1,若不为1,则擦除旧的日志块并结束;若为1,则判断当前日志记录是否有效,若仍然有效则将当前日志记录拷贝至新的日志块,并获取下一条日志记录作为当前日志记录;若无效则直接获取下一条日志记录作为当前日志记录;若新的日志块已满,则获取下一个空闲块作为新的日志块;若获取的当前日志记录为空,则将转存标志位设为0,表明转存操作已结束。根据本专利技术的闪存数据库数据恢复的方法的一实施例,其中,检查点的时间间隔根据应用特点动态调整。根据本专利技术的闪存数据库数据恢复的方法的一实施例,其中,链式日志的数据存储方法:先将日志记录写入内存或缓存,将日志记录写入日志文件,将数据变化写入数据文件,无效化日志文件中相应日志记录。本专利技术基于闪存数据库提出一种既能够节约存储空间,又能够提升数据恢复效率的数据恢复方法。链式日志系统利用闪存数据库中存在的历史版本信息进行日志操作,采用链表结构替换顺序结构来存储日志记录以提高数据恢复效率。通过周期性检查点策略来移除失效的日志记录、节约闪存空间,同时有效缩减了日志文件的长度。附图说明图1所示为链式日志系统架构示意图;图2所示为日志记录格式图;图3所示为转存的步骤流程图;具体实施方式为使本专利技术的目的、内容、和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。图1所示为链式日志系统架构示意图,如图1所示,本专利技术设计了一种新的日志系统,命名为链式日志。在链式日志系统中,日志管理器1负责日志记录的生成和统一管理;日志文件2是日志记录的集合,由一条条日志记录组成;恢复管理器3负责系统崩溃或事务回滚时数据的恢复管理;DBMS4(Databasemanagementsystem)是数据库管理系统,负责事务管理、日志管理、数据文件5管理等;数据文件5是数据记录的物理存储地点。图2所示为日志记录格式图,如图2所示,链式日志采用链表结构存储日志记录,系统维护一个链表和一个数据表。其中链表中顺序存储每一个事务产生的不同数据操作的日志,数据表中包含一个日志记录中每个数据成员的不同版本数据,链表日志中包含指定数据表的地址。如图2所示,链式日志用于实现对闪存数据库快速恢复,主要是基于闪存的特点设计了一种新的日志记录格式,可通过日志记录快速获取用户对数据库的操作信息,快速对闪存数据库进行恢复。链式日志的日志记录包含事务ID、数据成员、本文档来自技高网
...
一种闪存数据库数据恢复的方法

【技术保护点】
一种闪存数据库数据恢复的方法,其特征在于,包括:扫描日志文件,确认日志文件中是否有仍然有效的事务提交日志记录或事务回滚日志;依据日志文件当前的状态分别进行如下处理:若存在有效的事务提交日志记录,表明涉及该事务的所有更改尚未完全写入到数据文件中,需依据日志记录,完成数据文件的重写;若存在有效的回滚日志记录,则依据事务ID查找所有日志记录,并进行回滚操作;若不存在有效的事务提交日志记录,也不存在有效的回滚日志,但存在仍然有效的日志记录,表明该事务尚未完成,检查是否存在部分日志记录已写入数据文件,而部分未写入的情况,如存在,则进行回滚操作。

【技术特征摘要】
1.一种闪存数据库数据恢复的方法,其特征在于,包括:扫描日志文件,确认日志文件中是否有仍然有效的事务提交日志记录或事务回滚日志;依据日志文件当前的状态分别进行如下处理:若存在有效的事务提交日志记录,表明涉及该事务的所有更改尚未完全写入到数据文件中,需依据日志记录,完成数据文件的重写;若存在有效的回滚日志记录,则依据事务ID查找所有日志记录,并进行回滚操作;若不存在有效的事务提交日志记录,也不存在有效的回滚日志,但存在仍然有效的日志记录,表明该事务尚未完成,检查是否存在部分日志记录已写入数据文件,而部分未写入的情况,如存在,则进行回滚操作。2.如权利要求1所述的闪存数据库数据恢复的方法,其特征在于,回滚操作包括:首先依据事务ID从日志文件中找出所有关于事务ID对应的该事务仍然有效的日志记录,然后依次判断日志记录操作类型,根据不同操作类型,完成如下操作:若是插入操作,则删除当前插入的数据元素;若是删除操作,则重新插入被删除的数据元素;若是更新操作,则将数据元素的值恢复到初始状态。3.如权利要求1所述的闪存数据库数据恢复的方法,其特征在于,还包括:链式日志,包括一个链表和一个数据表,链表中顺序存储每一个事务产生的不同数据操作的日志记录,数据表中包含一个日志记录中每个数据成员的不同版本数据,链表的日志记录中包含指定数据表的地址;数据表中的日志记录包含事务ID、数据成员、前成员和数据地址表四个字段,其中事务ID为当前日志记录所属事务的ID号;数据成员为当前数据操作指向的数据成员的名称;前成员为当前事务中产生变化的前成员;数据地址表为数据成员所有版本数据的地址,每个版本数据按时间顺序用链表进行连接,当事务提交或回滚后,该数据地址字段设置为空。4.如权利要求3所述的闪存数据库数据恢复的方法,其特征在于,日志记录构建日志文件的方法包括:当一个新事务开启,并产生...

【专利技术属性】
技术研发人员:王仁韩世杰张记强冯帆陈树峰
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1