CN104376091B - 对SQLite中删除的数据进行恢复的方法及装置 - Google Patents
对SQLite中删除的数据进行恢复的方法及装置 Download PDFInfo
- Publication number
- CN104376091B CN104376091B CN201410673364.6A CN201410673364A CN104376091B CN 104376091 B CN104376091 B CN 104376091B CN 201410673364 A CN201410673364 A CN 201410673364A CN 104376091 B CN104376091 B CN 104376091B
- Authority
- CN
- China
- Prior art keywords
- subtree
- frame
- data
- page
- page set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种对SQLite中删除的数据进行恢复的方法和装置,方法包括:从SQLite中读取数据表对应的B+tree类型的主树及WAL文件;将WAL文件根据动作语句拆分成多个页面集合;读取第一个未读的页面集合并标记为已读,并将该页面集合记为第一页面集合;若第一页面集合不为空,从第一页面集合中提取与主树相关的第二页面集合;若第二页面集合不为空,则将第二页面集合及其相关页面组成B+tree类型的第二子树;若第二子树不为空,获取第二子树在主树中对应的第一子树并判断第二子树是否为数据删除类型;若是,则根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。该方法可提高数据恢复的准确率和全面性。
Description
技术领域
本发明涉及数据库领域,特别涉及一种对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,页面集合划分完成且退出。
进一步的,根据所述第一子树判断所述第二子树的类型是否为数据删除的类型,包括:
判断第一子树中的数据条目是否小于第二子树中的数据条目;
若是,则第二子树的类型为数据删除的类型。
根据本发明的另一方面,本发明还提出了一种对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的页码相同,则当前动作的页面集合读取完成且并入预置集合中;从WAL文件中继续读取二个Frame,顺序给第一Frame和第二Frame,跳转到步骤22;
步骤25,若第一Frame的页码大于第二Frame的页码,则当前动作的页面集合读取完成且并入预置集合中;
步骤26,将第一Frame赋值为第二Frame,并从WAL文件中继续读取一个Frame给第二Frame,跳转到步骤22;
步骤27,页面集合划分完成,退出。
进一步的,所述判断单元,具体用于:
判断第一子树中的数据条目是否小于第二子树中的数据条目;
若是,则第二子树的类型为数据删除的类型。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明实施例的对SQLite中删除的数据进行恢复的方法及装置,无需人工分析接入,可利用SQL动作前向分析方式来分析WAL文件删除的数据,不仅有效保证了恢复的无遗漏、无重复,而且能完全保证了数据恢复的无损性(也就是全字段恢复,具体来说是WAL文件中的删除记录会覆盖4个字节,很可能包括rowid),可见,该方法不但解决了使用现有通用的数据恢复产品进行数据恢复而存在WAL文件冗余解析及恢复记录不完整的问题,而且适用性强,不局限于某个数据类型,可适用于所有类型的数据库,可整体上提高数据恢复的准确率和全面性。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明对SQLite中删除的数据进行恢复的方法实施例的流程示意图;
图2为B+Tree的结构示意图;
图3为WAL文件的结构示意图;
图4是本发明对SQLite中删除的数据进行恢复的装置实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
以下说明中的“第一”、“第二”等仅仅是为了更清楚的对本发明实施例中的步骤进行描述并非起到限制作用(比如并非限制为排序意义上的第一、第二等等)。
参看图1,为本发明对SQLite中删除的数据进行恢复的方法实施例的流程示意图。
在该实施例中的对SQLite中删除的数据进行恢复的方法,包括如下步骤:
步骤1,从SQLite中读取数据表对应的B+tree类型的主树及WAL文件。
从逻辑上来说,一个SQLite文件是由多个多重Btree构成,每个Btree存储一个表的数据或一个表的索引,索引采用B-tree类型,而表数据采用B+tree类型,每个B+tree节点对应一个SQLite页面,其中存放数据的叶子节点称为叶子页,而存放索引的内部节点称为内部页。
B+tree是一种平衡的多路查找树,特点是叶子节点包含了所有的关键码信息,主要应用于文件系统和数据库中,其结构可参看图2所示,具有如下特点:第一,节点中的各个值从左往右递增;第二,对于根节点中的P的节点值,其左侧所有的节点值均小于P的节点值,其右侧的所有的节点值均大于等于P的节点值;第三,对于P对应的左右子树,均符合上述第一、第二中的特点。
参看图3所示,WAL文件由WAL Header和WAL Body两部分组成,其中WAL Body包含一系列的Frame,每个Frame包含Frame Header和Frame Body,而一个Frame Body就是SQLite文件的一页。
WAL文件中的一个Frame表示了SQLite的一个动作所对应的页面,这些页面是基本有序的,当将这些有序的页面一一替换或添加到SQLite文件中后,该动作也就完成了。
步骤2,将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合。其中根据预置规则拆分可为根据WAL文件中Frame写入的线性增长特性来拆分。
该步骤具体可包括如下步骤:
步骤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,页面集合划分完成并退出。
步骤3,在预置集合中读取第一个未读的页面集合并标记为已读,并将该页面集合记为第一页面集合。
步骤4,通过步骤3的读取结果,来判断第一页面集合是否为空,若所述第一页面集合不为空,则从所述第一页面集合中提取与所述主树相关的第二页面集合。
其中,在该第一页面集合中,包括与主树相关的页面集合及与主树不相关的页面集合,在步骤4中,只需提取与主树相关的页面集合,并记为第二页面集合。
步骤5,通过读取第二页面集合,来判断第二页面集合是否为空,若所述第二页面集合不为空,则将第二页面集合中的页面组成新的子树,可记为第二子树,该第二子树也为B+tree类型且第二子树的根节点是第二页面集合中最靠近主树的根节点的节点。
步骤6,通过读取第二子树,来判断第二子树是否为空,若所述第二子树不为空,则获取在所述主树中与所述第二子树对应的第一子树,并根据所述第一子树判断所述第二子树的类型是否为数据删除的类型。
具体判断方法可为,判断第一子树中的数据条目是否小于第二子树中的数据条目,若判断结果为第一子树中的数据条目小于第二子树中的数据条目,则第二子树的类型为数据删除的类型,否则,第二子树的类型则不为数据删除的类型。
步骤7,步骤6的判断结果为第二子树为数据删除的类型,则将第一子树中的数据与第二子树中的数据进行比较,根据第二子树找到第一子树中缺少的原始记录,可记为第一原始数据,该第一原始数据即为删除的数据,以便通过预置数据恢复方式对第一原始数据对应的删除的数据进行数据恢复,至此完成了对一个动作的页面集合中的删除数据的恢复。
进一步的,还可在主树中以第二子树替换第一子树,然后重复执行上述步骤3至步骤7,以将SQL中所有页面集合中包含的数据都进行数据恢复。
本发明实施例的对SQLite中删除的数据进行恢复的方法,无需人工分析接入,可利用SQL动作前向分析方式来分析WAL文件删除的数据,不仅有效保证了恢复的无遗漏、无重复,而且能完全保证了数据恢复的无损性(也就是全字段恢复,具体来说是WAL文件中的删除记录会覆盖4个字节,很可能包括rowid),可见,该方法不但解决了使用现有通用的数据恢复产品进行数据恢复而存在WAL文件冗余解析及恢复记录不完整的问题,而且适用性强,不局限于某个数据类型,可适用于所有类型的数据库,可整体上提高数据恢复的准确率和全面性。
对应上述本发明对SQLite中删除的数据进行恢复的方法实施例,还提供了对SQLite中删除的数据进行恢复的装置实施例,下面结合附图进行具体说明。
图4示出了本发明对SQLite中删除的数据进行恢复的装置实施例的结构示意图。
在该实施例中,该装置包括:
第一读取单元41,用于从SQLite中读取数据表对应的B+tree类型的主树及WAL文件。
拆分组合单元42,用于将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合。
第二读取单元43,用于读取第一个未读的页面集合并标记为已读,且将该页面集合记为第一页面集合。
提取单元44,用于当所述第一页面集合不为空,从所述第一页面集合中提取与所述主树相关的第二页面集合。
子树组成单元45,用于当所述第二页面集合不为空,则将第二页面集合中的页面组成B+tree类型的第二子树。
判断单元46,用于当所述第二子树不为空,获取在所述主树中与所述第二子树对应的第一子树,并根据所述第一子树判断所述第二子树的类型是否为数据删除的类型。
数据恢复单元47,用于当判断单元的判断结果为是,则将第一子树中的数据与第二子树中的数据进行比较,根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。
进一步的,该装置还可包括:
替换单元,用于在主树中以第二子树替换第一子树,以将所有页面集合中包含的数据进行数据恢复。
其中,拆分组合单元42,可具体用于:
步骤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,页面集合划分完成且退出。
进一步的,判断单元46,可具体用于:
判断第一子树中的数据条目是否小于第二子树中的数据条目;
若是,则第二子树的类型为数据删除的类型。
本发明实施例的对SQLite中删除的数据进行恢复的装置,无需人工分析接入,可利用SQL动作前向分析方式来分析WAL文件删除的数据,不仅有效保证了恢复的无遗漏、无重复,而且能完全保证了数据恢复的无损性(也就是全字段恢复,具体来说是WAL文件中的删除记录会覆盖4个字节,很可能包括rowid),可见,该方法不但解决了使用现有通用的数据恢复产品进行数据恢复而存在WAL文件冗余解析及恢复记录不完整的问题,而且适用性强,不局限于某个数据类型,可适用于所有类型的数据库,可整体上提高数据恢复的准确率和全面性。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明所提供的对SQLite中删除的数据进行恢复的方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
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的页码相同,则当前动作的页面集合读取完成且并入预置集合中;从WAL文件中继续读取二个Frame,顺序给第一Frame和第二Frame,跳转到步骤22;
步骤25,若第一Frame的页码大于第二Frame的页码,则当前动作的页面集合读取完成且并入预置集合中;
步骤26,将第一Frame赋值为第二Frame,并从WAL文件中继续读取一个Frame给第二Frame,跳转到步骤22;
步骤27,页面集合划分完成且退出。
4.如权利要求2所述的方法,其特征在于,根据所述第一子树判断所述第二子树的类型是否为数据删除的类型,包括:
判断第一子树中的数据条目是否小于第二子树中的数据条目;
若是,则第二子树的类型为数据删除的类型。
5.一种对SQLite中删除的数据进行恢复的装置,其特征在于,包括:
第一读取单元,用于从SQLite中读取数据表对应的B+tree类型的主树及WAL文件;
拆分组合单元,用于将所述WAL文件根据预置规则拆分为多个页面,并将所述多个页面根据动作语句的类型组成多个页面集合;
第二读取单元,用于读取第一个未读的页面集合并标记为已读,且将该页面集合记为第一页面集合;
提取单元,用于当所述第一页面集合不为空,从所述第一页面集合中提取与所述主树相关的第二页面集合;
子树组成单元,用于当所述第二页面集合不为空,则将第二页面集合中的页面组成B+tree类型的第二子树;
判断单元,用于当所述第二子树不为空,获取在所述主树中与所述第二子树对应的第一子树,并根据所述第一子树判断所述第二子树的类型是否为数据删除的类型;
数据恢复单元,用于当判断单元的判断结果为是,则将第一子树中的数据与第二子树中的数据进行比较,根据第二子树找到第一子树中缺少的第一原始数据,以便通过预置方式对第一原始数据对应的删除的数据进行数据恢复。
6.如权利要求5所述的装置,其特征在于,还包括:
替换单元,用于在主树中以第二子树替换第一子树,以便在替换之后重复执行步骤3至步骤7,以将所有页面集合中包含的数据进行数据恢复。
7.如权利要求6所述的装置,其特征在于,所述拆分组合单元,具体用于:
步骤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,页面集合划分完成,退出。
8.如权利要求6所述的装置,其特征在于,所述判断单元,具体用于:
判断第一子树中的数据条目是否小于第二子树中的数据条目;
若是,则第二子树的类型为数据删除的类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410673364.6A CN104376091B (zh) | 2014-11-20 | 2014-11-20 | 对SQLite中删除的数据进行恢复的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410673364.6A CN104376091B (zh) | 2014-11-20 | 2014-11-20 | 对SQLite中删除的数据进行恢复的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104376091A CN104376091A (zh) | 2015-02-25 |
CN104376091B true CN104376091B (zh) | 2017-08-01 |
Family
ID=52554998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410673364.6A Active CN104376091B (zh) | 2014-11-20 | 2014-11-20 | 对SQLite中删除的数据进行恢复的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104376091B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106155832B (zh) * | 2015-03-30 | 2019-03-22 | Tcl集团股份有限公司 | 一种数据恢复的方法、装置及Android设备 |
EP3091451A1 (en) * | 2015-04-28 | 2016-11-09 | Micro Systemation AB | Database rollback using wal |
CN104866610B (zh) * | 2015-06-04 | 2018-05-08 | 东南大学 | 一种基于相似类型匹配估算的SQLite删除数据恢复方法 |
CN105045676B (zh) * | 2015-07-02 | 2018-05-04 | 四川效率源信息安全技术股份有限公司 | 一种基于SQLite数据库的丢失数据的恢复方法 |
CN105426542B (zh) * | 2015-12-24 | 2019-02-22 | 厦门市美亚柏科信息股份有限公司 | 一种SQLite空闲页上被删数据表的记录分析方法和装置 |
CN106844607B (zh) * | 2017-01-16 | 2020-05-12 | 重庆邮电大学 | 一种适用于非整型主键与空闲块合并的SQLite数据恢复方法 |
CN107193871B (zh) * | 2017-04-12 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 数据库修复方法及装置 |
CN108182127B (zh) * | 2017-12-27 | 2021-11-19 | 厦门市美亚柏科信息股份有限公司 | 一种提取已删除文件碎片的方法、终端设备及存储介质 |
CN108563714B (zh) * | 2018-03-29 | 2021-08-03 | 苏州开心盒子软件有限公司 | 一种SQLite3数据库已删除数据块的提取方法 |
CN108563535B (zh) * | 2018-04-27 | 2021-12-24 | 四川巧夺天工信息安全智能设备有限公司 | 一种对MySQL数据库全库的恢复方法 |
CN109582504A (zh) * | 2018-12-05 | 2019-04-05 | 深圳软牛科技有限公司 | 一种用于苹果设备的数据恢复方法和装置 |
CN110704412A (zh) * | 2019-09-29 | 2020-01-17 | 苏州浪潮智能科技有限公司 | 一种元数据修复方法、装置、设备及存储介质 |
CN112579336B (zh) * | 2020-12-31 | 2022-04-22 | 厦门市美亚柏科信息股份有限公司 | 数据库异常修复方法、装置、计算设备及存储介质 |
CN112579612B (zh) * | 2020-12-31 | 2023-05-16 | 厦门市美亚柏科信息股份有限公司 | 数据库索引表记录分析方法、装置、计算设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1809828A (zh) * | 2004-02-27 | 2006-07-26 | 微软公司 | 用于恢复数据库中单元的系统和方法 |
CN102298634A (zh) * | 2011-09-09 | 2011-12-28 | 厦门市美亚柏科信息股份有限公司 | 一种Sqlite删除记录结构重组方法 |
CN102591979A (zh) * | 2012-01-05 | 2012-07-18 | 厦门市美亚柏科信息股份有限公司 | 一种sqlite的自由空间的删除记录挖掘方法和系统 |
US8683262B1 (en) * | 2013-06-21 | 2014-03-25 | Terracotta Inc. | Systems and/or methods for rapid recovery from write-ahead logs |
CN104035839A (zh) * | 2014-06-12 | 2014-09-10 | 上海交通大学 | Android系统隐私数据恢复实现方法 |
-
2014
- 2014-11-20 CN CN201410673364.6A patent/CN104376091B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1809828A (zh) * | 2004-02-27 | 2006-07-26 | 微软公司 | 用于恢复数据库中单元的系统和方法 |
CN102298634A (zh) * | 2011-09-09 | 2011-12-28 | 厦门市美亚柏科信息股份有限公司 | 一种Sqlite删除记录结构重组方法 |
CN102591979A (zh) * | 2012-01-05 | 2012-07-18 | 厦门市美亚柏科信息股份有限公司 | 一种sqlite的自由空间的删除记录挖掘方法和系统 |
US8683262B1 (en) * | 2013-06-21 | 2014-03-25 | Terracotta Inc. | Systems and/or methods for rapid recovery from write-ahead logs |
CN104035839A (zh) * | 2014-06-12 | 2014-09-10 | 上海交通大学 | Android系统隐私数据恢复实现方法 |
Non-Patent Citations (4)
Title |
---|
A Recovery Method of Deleted Record for SQLite Database;Sangjun Jeon 等;《Personal and Ubiquitous Computing》;20110724;第16卷(第6期);全文 * |
Forensic analysis of the Firefox 3 Internet history and recovery of deleted SQLite records;Murilo Tito Pereira;《Digital Investigation》;20090331;第5卷(第3-4期);全文 * |
HFS+删除文件恢复技术;沈长达 等;《信息网络安全》;20130923(第8期);全文 * |
王随刚 等.基于SQLite3的Android手机数据恢复技术的研究.《警察技术》.2012,(第5期), * |
Also Published As
Publication number | Publication date |
---|---|
CN104376091A (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104376091B (zh) | 对SQLite中删除的数据进行恢复的方法及装置 | |
WO2020135048A1 (zh) | 知识图谱的数据融合方法和装置 | |
US8200633B2 (en) | Database backup and restore with integrated index reorganization | |
CN104252445B (zh) | 近似重复文档检测方法及装置 | |
US9740698B2 (en) | Document merge based on knowledge of document schema | |
CN103177120B (zh) | 一种基于索引的XPath查询模式树匹配方法 | |
CN106547801A (zh) | 数据库数据闪回方法和装置 | |
CN105404699A (zh) | 一种搜索财经文章的方法、装置及服务器 | |
JP5959592B2 (ja) | データベース管理方法、プログラム及び該管理システム、並びにデータベースのツリー構造 | |
Frühwirt et al. | InnoDB database forensics: Enhanced reconstruction of data manipulation queries from redo logs | |
CN104598536B (zh) | 一种分布式网络信息结构化处理方法 | |
CN105701091B (zh) | 一种基于语义的pdf文档的处理方法及处理装置 | |
Meng et al. | bring2lite: a structural concept and tool for forensic data analysis and recovery of deleted SQLite records | |
CN105447169A (zh) | 文献归一方法、文献搜索方法及对应装置 | |
CN108009290A (zh) | 一种轨道交通指挥中心线网大数据的数据建模和存储方法 | |
CN105095436A (zh) | 数据源数据自动建模方法 | |
CN105488471B (zh) | 一种字形识别方法及装置 | |
AL-Msie'deen et al. | Detecting commonality and variability in use-case diagram variants | |
CN110245037A (zh) | 一种基于日志的Hive用户操作行为还原方法 | |
CN105653567A (zh) | 一种文本序列数据中快速查找特征字符串的方法 | |
CN104699815A (zh) | 数据处理方法和系统 | |
CN104391945B (zh) | 数据库文件数据索引的处理方法和装置 | |
CN111045994A (zh) | 一种基于kv数据库的文件分类检索方法及系统 | |
CN105956070A (zh) | 一种整合重复记录的方法及系统 | |
KR101846347B1 (ko) | 대용량 문서의 관리 방법 및 그 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |