[发明专利]对SQLite中删除的数据进行恢复的方法及装置有效
申请号: | 201410673364.6 | 申请日: | 2014-11-20 |
公开(公告)号: | CN104376091B | 公开(公告)日: | 2017-08-01 |
发明(设计)人: | 陈明辉;方均滩;吴世雄 | 申请(专利权)人: | 厦门市美亚柏科信息股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京恒都律师事务所11395 | 代理人: | 李向东 |
地址: | 361008 福建省厦门*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sqlite 删除 数据 进行 恢复 方法 装置 | ||
技术领域
本发明涉及数据库领域,特别涉及一种对SQLite中删除的数据进行恢复的方法及装置。
背景技术
目前,在取证等领域经常会遇到需要对删除的数据进行恢复的情况,市场也出现了对删除数据进行恢复的产品。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。而且,它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、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的页码相同,则当前动作的页面集合读取完成且并入预置集合中;从WAL文件中继续读取二个Frame,顺序给第一Frame和第二Frame,跳转到步骤22;
步骤25,若第一Frame的页码大于第二Frame的页码,则当前动作的页面集合读取完成且并入预置集合中;
步骤26,将第一Frame赋值为第二Frame,并从WAL文件中继续读取一个Frame给第二Frame,跳转到步骤22;
步骤27,页面集合划分完成且退出。
进一步的,根据所述第一子树判断所述第二子树的类型是否为数据删除的类型,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门市美亚柏科信息股份有限公司,未经厦门市美亚柏科信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410673364.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种有向无圈图的层次化显示方法
- 下一篇:一种轻冰区用紧凑型三联V型悬垂串
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置