一种数据恢复的方法、装置及Android设备制造方法及图纸

技术编号:14061268 阅读:129 留言:0更新日期:2016-11-27 18:12
本发明专利技术适用于数据处理技术领域,提供了一种数据恢复的方法、装置及Android设备,所述方法包括:判断是否满足预设的检查点条件,所述的检查点条件在预写日志WAL文件满足清空条件之前;如果预设的检查点条件成立,则判断第一数据库是否有删除记录;如果是,则根据所述WAL文件恢复已删除的记录至第二数据库的表中;在确定需要数据恢复时候,根据所述的第二数据库恢复数据至第一数据库中。本发明专利技术,可以先于WAL日志文件清空前将WAL文件中关于删除记录的数据恢复,从而避免因WAL文件已清空且有数据删除的情况下,无法恢复该删除数据的问题。

【技术实现步骤摘要】

本专利技术属于数据处理
,尤其涉及一种数据恢复的方法、装置及Android设备
技术介绍
自2011年以来,国内外手机市场以安卓Android手机占有率最高。Android系统中,数据存储都是采用SQLite数据库。大多数的传统方法采用直接调用Android框架层的应用程序编程接口(Application Programming Interface,API)来提取Android设备中存储的信息,该方法简便易操作,但不能恢复Android设备中已删除的数据。而现有方法,可以恢复误操作或故意删除的数据信息,但各有其优缺点。例如,芯片拆除恢复法,恢复率最高,但要求技术高、实现难度大;暴力估算法,可很好地恢复已删除的数据,但只可对整个存储单元整体解析后恢复提取,当删除数据之前所在页面部分或者完全被新写入的数据覆盖时,无法恢复已删除的数据。
技术实现思路
本专利技术实施例提供了一种数据恢复的方法、装置及Android设备,旨在解决现有技术提供的数据恢复的方法,实现难度大,或者当删除数据之前所在页面部分或者完全被新写入的数据覆盖时,无法恢复已删除的数据的问题。一方面,提供一种数据恢复的方法,所述方法包括:判断是否满足预设的检查点条件,所述的检查点条件在预写日志WAL文件满足清空条件之前;如果预设的检查点条件成立,则判断第一数据库是否有删除记录,如果是,
则根据所述WAL文件恢复已删除的记录至第二数据库的表中;在确定需要数据恢复时候,根据所述的第二数据库恢复数据至第一数据库中。进一步地,在所述的步骤在确定需要数据恢复时候,根据所述的第二数据库恢复数据至第一数据库的表中之前还包括:如果预设的检查点条件成立,则判断第一数据库是否有修改记录,如果是,则根据所述WAL文件恢复已修改的记录至第二数据库的表中。进一步地,所述判断第一数据库是否有删除记录,包括:获取第一数据库变化前的B+tree叶子页键值对列表大小;监听第一数据库中的数据是否发生变化;当监听到第一数据库中的数据发生变化时,获取第一数据库变化后的B+tree叶子页键值对列表大小;将第一数据库变化前后获取到的B+tree叶子页键值对列表大小进行比较,如果第一数据库变化后的B+tree叶子页键值对列表大小小于第一数据库变化前的B+tree叶子页键值对列表大小,则判定第一数据库有删除记录。进一步地,所述监听第一数据库中的数据是否发生变化,包括:通过函数ContentResolver.registerContentObserver()注册需要监听的第一数据库;当监听到回调函数onChange()被执行时,判定所监听的第一数据库中的数据发生变化。进一步地,所述获取第一数据库变化前后的B+tree叶子页键值对列表大小,包括:获取第一数据库文件,所述第一数据库文件是所述第一数据库的表对应的数据库文件;获取所述第一数据库文件中的系统表;根据第一数据库表的表名在所述系统表中查询,得到第一数据库表的根页
编号;根据所述根页编号定位到相应的根页后,分析Btree中所有的页节点,根据页头中的页类型标志查找到第一数据库表的B+tree叶子页;获取所述B+tree叶子页的键值对列表大小。进一步地,所述获取所述B+tree叶子页的键值对列表大小,包括:创建一个指向所述B+tree叶子页的游标;获取所述游标从第一条记录移动到最后一条记录所迭代的次数,将所述迭代的次数作为所述B+tree叶子页的键值对列表大小。进一步地,所述系统表中包括第一数据库表的表名和建立所述第一数据库表的语句,所述根据所述WAL文件恢复已删除的记录至第二数据库的表中,包括:根据所述第一数据库表的表名、所述建立所述第一数据库表的语句以及所述WAL日志文件,构建第二数据库文件,所述第二数据库文件是所述第二数据库的表对应的数据库文件;对比第一数据库文件和所述第二数据库文件,根据所述第二数据库文件找到第一数据库文件中已删除的记录,并将所述第二数据库的表中在第一数据库文件中存储在记录删除。另一方面,提供一种数据恢复的装置,所述装置包括:第一判断单元,用于判断是否满足预设的检查点条件,所述的检查点条件在预写日志WAL文件满足清空条件之前;第二判断单元,用于如果预设的检查点条件成立,则判断第一数据库是否有删除记录;第一恢复单元,用于如果第一数据库有删除记录,则根据所述WAL文件恢复已删除的记录至第二数据库的表中;第二恢复单元,用于在确定需要数据恢复时候,根据所述的第二数据库恢复数据至第一数据库中。进一步地,所述装置,还包括:第三恢复单元,用于如果预设的检查点条件成立,则判断第一数据库是否有修改记录,如果是,则根据所述WAL文件恢复已修改的记录至第二数据库的表中。进一步地,所述第二判断单元,包括:第一获取模块,用于获取第一数据库变化前的B+tree叶子页键值对列表大小;监听模块,用于监听第一数据库中的数据是否发生变化;第二获取模块,用于当监听到第一数据库中的数据发生变化时,获取第一数据库变化后的B+tree叶子页键值对列表大小;判断模块,用于将第一数据库变化前后获取到的B+tree叶子页键值对列表大小进行比较,如果第一数据库变化后的B+tree叶子页键值对列表大小小于第一数据库变化前的B+tree叶子页键值对列表大小,则判定第一数据库有删除记录。进一步地,所述监听模块,包括:注册子模块,用于通过函数ContentResolver.registerContentObserver()注册需要监听的第一数据库;判断子模块,用于当监听到回调函数onChange()被执行时,判定所监听的第一数据库中的数据发生变化。进一步地,所述获取模块,包括:第一获取子模块,用于获取第一数据库文件,所述第一数据库文件是所述第一数据库的表对应的数据库文件;第二获取子模块,用于获取所述第一数据库文件中的系统表;第三获取子模块,用于根据第一数据库表的表名在所述系统表中查询,得到第一数据库表的根页编号;第四获取子模块,用于根据所述根页编号定位到相应的根页后,分析Btree
中所有的页节点,根据页头中的页类型标志查找到第一数据库表的B+tree叶子页;第五获取子模块,用于获取所述B+tree叶子页的键值对列表大小。进一步地,所述第五获取子模块,包括:创建微模块,用于创建一个指向所述B+tree叶子页的游标;获取微模块,用于获取所述游标从第一条记录移动到最后一条记录所迭代的次数,将所述迭代的次数作为所述B+tree叶子页的键值对列表大小。进一步地,所述系统表中包括第一数据库表的表名和建立所述第一数据库表的语句,所述第一恢复单元,包括:构建模块,用于根据所述第一数据库表的表名、所述建立所述第一数据库表的语句以及所述WAL日志文件,构建第二数据库文件,所述第二数据库文件是所述第二数据库的表对应的数据库文件;恢复模块,用于对比第一数据库文件和所述第二数据库文件,根据所述第二数据库文件找到第一数据库文件中已删除的记录,并将所述第二数据库的表中在第一数据库文件中存储在记录删除。再一方面,提供一种Android设备,所述Android设备包括如上所述的数据恢复的装置。在本专利技术实施例,在预写日志WAL文件满足预设的检查点条件之前,也就是在WAL文件清本文档来自技高网
...
一种数据恢复的方法、装置及Android设备

【技术保护点】
一种数据恢复的方法,其特征在于,所述方法包括:判断是否满足预设的检查点条件,所述的检查点条件包括在预写日志WAL文件满足清空条件之前;如果预设的检查点条件成立,则判断第一数据库是否有删除记录,如果是,则根据所述WAL文件恢复已删除的记录至第二数据库的表中;在确定需要数据恢复时候,根据所述的第二数据库恢复数据至第一数据库中。

【技术特征摘要】
1.一种数据恢复的方法,其特征在于,所述方法包括:判断是否满足预设的检查点条件,所述的检查点条件包括在预写日志WAL文件满足清空条件之前;如果预设的检查点条件成立,则判断第一数据库是否有删除记录,如果是,则根据所述WAL文件恢复已删除的记录至第二数据库的表中;在确定需要数据恢复时候,根据所述的第二数据库恢复数据至第一数据库中。2.如权利要求1所述的数据恢复方法,其特征在于,所述方法还包括:在所述的步骤在确定需要数据恢复时候,根据所述的第二数据库恢复数据至第一数据库的表中之前还包括:如果预设的检查点条件成立,则判断第一数据库是否有修改记录,如果是,则根据所述WAL文件恢复已修改的记录至第二数据库的表中。3.如权利要求1所述的方法,其特征在于,所述判断第一数据库是否有删除记录,包括:获取第一数据库变化前的B+tree叶子页键值对列表大小;监听第一数据库中的数据是否发生变化;当监听到第一数据库中的数据发生变化时,获取第一数据库变化后的B+tree叶子页键值对列表大小;将第一数据库变化前后获取到的B+tree叶子页键值对列表大小进行比较,如果第一数据库变化后的B+tree叶子页键值对列表大小小于第一数据库变化前的B+tree叶子页键值对列表大小,则判定第一数据库有删除记录。4.如权利要求3所述的方法,其特征在于,所述监听第一数据库中的数据是否发生变化,包括:通过函数ContentResolver.registerContentObserver()注册需要监听的第一数
\t据库;当监听到回调函数onChange()被执行时,判定所监听的第一数据库中的数据发生变化。5.如权利要求3所述的方法,其特征在于,所述获取第一数据库变化前后的B+tree叶子页键值对列表大小,包括:获取第一数据库文件,所述第一数据库文件是所述第一数据库的表对应的数据库文件;获取所述第一数据库文件中的系统表;根据第一数据库表的表名在所述系统表中查询,得到第一数据库表的根页编号;根据所述根页编号定位到相应的根页后,分析Btree中所有的页节点,根据页头中的页类型标志查找到第一数据库表的B+tree叶子页;获取所述B+tree叶子页的键值对列表大小。6.如权利要求5所述的方法,其特征在于,所述获取所述B+tree叶子页的键值对列表大小,包括:创建一个指向所述B+tree叶子页的游标;获取所述游标从第一条记录移动到最后一条记录所迭代的次数,将所述迭代的次数作为所述B+tree叶子页的键值对列表大小。7.如权利要求5所述的方法,其特征在于,所述系统表中包括第一数据库表的表名和建立所述第一数据库表的语句,所述根据所述WAL文件恢复已删除的记录至第二数据库的表中,包括:根据所述第一数据库表的表名、所述建立所述第一数据库表的语句以及所述WAL日志文件,构建第二数据库文件,所述第二数据库文件是所述第二数据库的表对应的数据库文件;对比第一数据库文件和所述第二数据库文件,根据所述第二数据库文件找到第一数据库文件中已删除的记录,并将所述第二数据库表中在第一数据库文
\t件中存储在记录删除。8.一种数据恢复的装置,其特征在于,所述装置包括:第一判断单元,用于判断是否满足预设的检查点条件,所述的检查点条件在预...

【专利技术属性】
技术研发人员:孙向作
申请(专利权)人:TCL集团股份有限公司
类型:发明
国别省市:广东;44

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

1