对SQLite中删除的数据进行恢复的方法及装置制造方法及图纸

技术编号:11079718 阅读:83 留言:0更新日期:2015-02-25 18:02
本发明专利技术提供了一种对SQLite中删除的数据进行恢复的方法和装置,方法包括:从SQLite中读取数据表对应的B+tree类型的主树及WAL文件;将WAL文件根据动作语句拆分成多个页面集合;读取第一个未读的页面集合并标记为已读,并将该页面集合记为第一页面集合;若第一页面集合不为空,从第一页面集合中提取与主树相关的第二页面集合;若第二页面集合不为空,则将第二页面集合及其相关页面组成B+tree类型的第二子树;若第二子树不为空,获取第二子树在主树中对应的第一子树并判断第二子树是否为数据删除类型;若是,则根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。该方法可提高数据恢复的准确率和全面性。

【技术实现步骤摘要】
对SQLite中删除的数据进行恢复的方法及装置
本专利技术涉及数据库领域,特别涉及一种对SQLite中删除的数据进行恢复的方法及装置。
技术介绍
目前,在取证等领域经常会遇到需要对删除的数据进行恢复的情况,市场也出现了对删除数据进行恢复的产品。 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。而且,它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tel、C#、PHP、Java等,此外,还具有相当快的处理速度。SQLite的第一个Alpha版本诞生于2000年5月,至今已经有14个年头,SQLite的新版本SQLite 3已经发布。 WAL (Write-Ahead Logging)是 SQLite 3 从 3.7.0 版本开始引入的一项可配置技术,对于配置WAL的SQLite,会在SQLite文件的同一级目录下生产同样文件名但后缀为“-wal”的文件(以下可称为WAL文件),对SQLite的所有操作,会先保留在WAL文件中,而不是直接写入到SQLite文件中。 对SQLite中删除的数据进行恢复,现有的方式是使用通用的数据恢复产品,通过测试发现,使用该通用的数据恢复产品对SQLite中删除的数据进行恢复的效果并不理想,特别是对于WAL文件中的删除数据的恢复存在很大的缺陷,会出现存在冗余解析且恢复记录不完整(比如rowid无法恢复等)的情况,这样就会影响对删除的数据进行重组的准确性。 总之,现有的对SQLite中删除的数据进行恢复的方案还不够理想。
技术实现思路
本专利技术提供了一种对SQLite中删除的数据进行恢复的方法及装置,通用性强,可解决使用现有通用的数据恢复产品进行数据恢复,存在WAL文件冗余解析及恢复记录不完整的问题,提高数据恢复准确率和全面性。 根据本专利技术的一方面,本专利技术提出了一种对SQLite中删除的数据进行恢复的方法,包括:步骤1,从SQLite中读取数据表对应的B+tree类型的主树及WAL文件;步骤2,将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合;步骤3,读取第一个未读的页面集合并标记为已读,且将该页面集合记为第一页面集合;步骤4,若所述第一页面集合不为空,从所述第一页面集合中提取与所述主树相关的第二页面集合; 步骤5,若所述第二页面集合不为空,则将第二页面集合及其相关页面组成B+tree类型的第二子树;步骤6,若所述第二子树不为空,获取在所述主树中与所述第二子树对应的第一子树,并根据所述第一子树判断所述第二子树的类型是否为数据删除的类型;步骤7,若是,则将第一子树中的数据与第二子树中的数据进行比较,根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。 进一步的,通过预置方式对第一原始数据对应的删除的数据进行数据恢复之后,还包括:在主树中以第二子树替换第一子树,以便将所有页面集合中包含的数据进行数据恢复。 进一步的,将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合,包括:步骤21,根据WAL文件的文件格式按顺序读取第一 Frame和第二 Frame,所述第一Frame和第二 Frame为连续的Frame ;步骤22,若第一 Frame为空,则当前动作的页面集合读取完成且并入预置集合中,跳转到步骤27 ;步骤23,第一 Frame的页面加入当前动作的页面集合中;步骤24,若第一Frame和第二 Frame的页码相同,则当前动作的页面集合读取完成且并入预置集合中,跳转到步骤21 ;步骤25,若第一 Frame的页码大于第二 Frame的页码,则当前动作的页面集合读取完成且并入预置集合中;步骤26,将第一 Frame赋值为第二 Frame,并从WAL文件中继续读取一个Frame给第二Frame,跳转到步骤22 ;步骤27,页面集合划分完成且退出。 进一步的,根据所述第一子树判断所述第二子树的类型是否为数据删除的类型,包括:判断第一子树中的数据条目是否小于第二子树中的数据条目;若是,则第二子树的类型为数据删除的类型。 根据本专利技术的另一方面,本专利技术还提出了一种对SQLite中删除的数据进行恢复的装置,包括:第一读取单元,用于从SQLite中读取数据表对应的B+tree类型的主树及WAL文件;拆分组合单元,用于将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合;第二读取单元,用于读取第一个未读的页面集合并标记为已读,且将该页面集合记为第一页面集合;提取单元,用于当所述第一页面集合不为空,从所述第一页面集合中提取与所述主树相关的第二页面集合;子树组成单元,用于当所述第二页面集合不为空,则将第二页面集合及其相关页面组成B+tree类型的第二子树;判断单元,用于当所述第二子树不为空,获取在所述主树中与所述第二子树对应的第一子树,并根据所述第一子树判断所述第二子树的类型是否为数据删除的类型;数据恢复单元,用于当判断单元的判断结果为是,则将第一子树中的数据与第二子树中的数据进行比较,根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。 进一步的,所述装置,还包括:替换单元,用于在主树中以第二子树替换第一子树,以便在替换之后重复执行步骤3至步骤7,以将所有页面集合中包含的数据进行数据恢复。 进一步的,所述拆分组合单元,具体用于:步骤21,根据WAL文件的文件格式按顺序读取第一 Frame和第二 Frame,所述第一Frame和第二 Frame为连续的Frame ;步骤22,若第一 Frame为空,则当前动作的页面集合读取完成且并入预置集合中,跳转到步骤27 ;步骤23,第一 Frame的页面加入当前动作的页面集合中;步骤24,若第一Frame和第二 Frame的页码相同,则当前动作的页面集合读取完成且并入预置集合中,跳转到步骤21 ;步骤25,若第一 Frame的页码大于第二Frame的页码,则当前动作的页面集合读取完成且并入预置集合中;步骤26,将第一 Frame赋值为第二 Frame,并从WAL文件中继续读取一个Frame给第二Frame,跳转到步骤22 ;步骤27,页面集合划分完成,退出。 进一步的,所述判断单元,具体用于:判断第一子树中的数据条目是否小于第二子树中的数据条目;若是,则第二子树的类型为数据删除的类型。 根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果:本专利技术实施例的对SQLite中删除的数据进行恢复的方法及装置,无需人工分析接入,可利用SQL动作前向分析方式来分析WAL文件删除的数据,不仅有效保证了恢复的无遗漏、无重复,而且能完全保证了数据恢复的无损性(也就是全字段恢复,具体来说是WAL文件中的删除记录会覆盖4个字节,很可能包括lOWid),可见,该方法不但解决了使用现本文档来自技高网
...
对SQLite中删除的数据进行恢复的方法及装置

【技术保护点】
一种对SQLite中删除的数据进行恢复的方法,其特征在于,包括:步骤1,从SQLite中读取数据表对应的B+tree类型的主树及WAL文件;步骤2,将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合;步骤3,读取第一个未读的页面集合并标记为已读,且将该页面集合记为第一页面集合;步骤4,若所述第一页面集合不为空,从所述第一页面集合中提取与所述主树相关的第二页面集合;步骤5,若所述第二页面集合不为空,则将第二页面集合及其相关页面组成B+tree类型的第二子树;步骤6,若所述第二子树不为空,获取在所述主树中与所述第二子树对应的第一子树,并根据所述第一子树判断所述第二子树的类型是否为数据删除的类型;步骤7,若是,则将第一子树中的数据与第二子树中的数据进行比较,根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。

【技术特征摘要】
1.一种对SQLite中删除的数据进行恢复的方法,其特征在于,包括: 步骤1,从SQLite中读取数据表对应的B+tree类型的主树及WAL文件; 步骤2,将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合; 步骤3,读取第一个未读的页面集合并标记为已读,且将该页面集合记为第一页面集合; 步骤4,若所述第一页面集合不为空,从所述第一页面集合中提取与所述主树相关的第二页面集合; 步骤5,若所述第二页面集合不为空,则将第二页面集合及其相关页面组成B+tree类型的第二子树; 步骤6,若所述第二子树不为空,获取在所述主树中与所述第二子树对应的第一子树,并根据所述第一子树判断所述第二子树的类型是否为数据删除的类型; 步骤7,若是,则将第一子树中的数据与第二子树中的数据进行比较,根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。2.如权利要求1所述的方法,其特征在于,通过预置方式对第一原始数据对应的删除的数据进行数据恢复之后,还包括: 在主树中以第二子树替换第一子树,以便将所有页面集合中包含的数据进行数据恢复。3.如权利要求2所述的方法,其特征在于,将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合,包括: 步骤21,根据WAL文件的文件格式按顺序读取第一 Frame和第二 Frame,所述第一Frame和第二 Frame为连续的Frame ; 步骤22,若第一 Frame为空,则当前动作的页面集合读取完成且并入预置集合中,跳转到步骤27 ; 步骤23,第一 Frame的页面加入当前动作的页面集合中; 步骤24,若第一Frame和第二 Frame的页码相同,则当前动作的页面集合读取完成且并入预置集合中,跳转到步骤21 ; 步骤25,若第一Frame的页码大于第二 Frame的页码,则当前动作的页面集合读取完成且并入预置集合中; 步骤26,将第一 Frame赋值为第二 Frame,并从WAL文件中继续读取一个Frame给第二Frame,跳转到步骤22 ; 步骤27,页面集合划分完成且退出。4.如权利要求2所述的方法,其特征在于,根据所述第一子树判断所述第二子树的类型是否为数据删除的类型,包括: 判断第一子树中的数据条目是否小于第二子树中的数据条目; 若是,则第二子树的...

【专利技术属性】
技术研发人员:陈明辉方均滩吴世雄
申请(专利权)人:厦门市美亚柏科信息股份有限公司
类型:发明
国别省市:福建;35

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

1