一种基于SQLite全文索引的数据恢复方法及其系统技术方案

技术编号:38558039 阅读:16 留言:0更新日期:2023-08-22 21:00
本发明专利技术提出了一种基于SQLite全文索引的数据恢复方法及其系统,该方法包括如下步骤:S1、响应于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;S2、对获取的索引数据中的数据碎片进行提炼;S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。本发明专利技术的方法可以提取出遗留在SQlite全文索引表中已删除的数据碎片,在一些SQlite数据恢复产品中能够提高数据恢复效率,进一步提高SQLite数据恢复的效率。高SQLite数据恢复的效率。高SQLite数据恢复的效率。

【技术实现步骤摘要】
一种基于SQLite全文索引的数据恢复方法及其系统


[0001]本专利技术属于数据恢复
,具体涉及一种基于SQLite全文索引的数据恢复方法及其系统。

技术介绍

[0002]SQLite是一款轻型的嵌入式型数据库。相比于Mysql、PostgreSQL数据库,SQLite有着更好的实时性、处理速度更快、占用资源非常小等优点。
[0003]在智能手机为代表等移动终端的迅速普及,SQLite数据库被广泛使用于各种通讯软件中。目前市面上的Sqlite恢复工具,使用的数据恢复技术大多恢复效率低。对于存储在SQLite数据库上的数据,删除的数据大多恢复不回来。所以寻求一些新的恢复方法,能够提高SQLite的数据恢复效率。
[0004]随着各种通讯软件对于数据存储、数据检索的需求,SQLite支持了全文搜索,可以方便用户快速进行查找。SQLite以虚拟表的方式存在着全文检索相关的数据,存储着大量有用的数据内容。SQLite数据删除后,全文检索中对应的数据会被标记保留在对应的索引数据中,而这些数据碎片的内容有可能提高Sqlite的数据恢复效率。因此需要寻求一种基于SQLite全文索引的数据恢复方法。
[0005]现有的SQLite删除数据恢复技术,具有很大的局限性,删除数据恢复不够全面。其中有一种技术方法是基于空闲页进行删除数据恢复,另一种现有技术方法是基于日志文件进行删除数据的恢复,这些技术具有如下问题:
[0006]1、基于空闲页的删除数据的恢复方法,对于新记录更新,可能导致删除数据被覆盖,从而导致删除数据恢复不完整,甚至无法恢复。
[0007]2、基于日志文件的删除数据的恢复方法,日志记录只会保存最新的一段时间,对于更早之前的日志记录则没有保留,所以基于日志文件的恢复方法只能恢复出最近一段时间删除的数据。
[0008]有鉴于此,提出一种基于SQLite全文索引的数据恢复方法及其系统是非常具有意义的。

技术实现思路

[0009]本专利技术提供一种基于SQLite全文索引的数据恢复方法及其系统,以解决上述存在的技术缺陷问题。
[0010]第一方面,本专利技术提出了一种基于SQLite全文索引的数据恢复方法,该方法包括如下步骤:
[0011]S1、响应于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;
[0012]S2、对获取的索引数据中的数据碎片进行提炼;以及
[0013]S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。
[0014]优选的,在S1之前还包括:预先提取带有SQLite全文索引的虚拟表中的两张关联
的数据表,两张所述关联的数据表分别是表名称以_content结尾的表和以_data结尾的表。
[0015]进一步优选的,S1具体包括:
[0016]S11、选择虚拟表中表名称以_data结尾的表中block列字段的一行数据,block列字段中的数据主要以id列作为标准进行组合排列,优先提取_data结尾的表中id值较小的block字段数据,已经处理过的数据则跳过;若存在多张虚拟表,则对多张虚拟表进行单独解析恢复处理。
[0017]进一步优选的,S1还包括:
[0018]S12、解析当前id的数据的头部信息,以提取第一个主键ID的偏移位置以及第一个页眉的偏移位置,同时校验第一块的主键ID的偏移位置和第一个页眉的偏移位置是否正常,存在异常的情况下则排除当前的block数据,正常的情况下则执行S13步骤进行处理;
[0019]S13、判断当前数据中是否有第一个页眉的位置信息,如果有第一个页眉的信息,说明数据是包含了多个数据块,每个数据块对应的起始主键ID不做叠加重新开始,则执行步骤S14,没有说明当前id中的数据是一整块数据则执行S2对数据碎片进行提炼;
[0020]S14、解析当前id的数据内容,并从第一个页眉的偏移位置开始往后提取出每一个页眉的偏移位置信息,并做临时存储,用于步骤S15;同一个id的数据中页眉的偏移位置之间存在相关性,以前一块页眉的偏移位置作为基础下,进行计算下一个页眉的偏移位置;
[0021]S15、根据S14得到的当前id对应的block数据中的所有的页眉偏移位置信息,根据页眉的偏移位置提取出每一个数据块的起始和终止偏移位置,并根据起始和终止偏移位置获取到各个数据块的内容。
[0022]进一步优选的,S2具体包括:
[0023]S21、根据S15得到的各个数据块的内容,解析每个数据块的数据碎片;
[0024]S22、根据S21得到的数据碎片的集合,结合当前的虚拟表中以表_content数据信息,进行数据碎片裁剪;
[0025]S23、保存裁剪后的各个主键ID的已删除的数据碎片的集合,如果上一个id的block数据已经解析出来一些数据碎片的集合,则需要与当前的集合并为同一个集合;
[0026]S24、判断当前id的block数据是否存在没有解析的数据,如果存在没有解析的数据则执行S25,当前id的block数据全部解析完成的则执行步骤S26;
[0027]S25、对未解析的数据内容,保存并用于下一个相邻id的block数据中,同时需要标记当前未解析的数据是否是已经处理过的数据内容剩余的,如果是处理过的剩余数据则需要记录下这块数据的一些标识,包含前缀的数据片、前缀的偏移值位置以及主键ID;
[0028]S26、判断当前表的所有id对应的block数据是否已经全部解析完成,如果没有解析完成,则获取下一个id值最接近的block数据,然后执行S11,在当前虚拟表中所有的id全部解析完成的情况下,则执行S27;
[0029]S27、对于步骤S25中存在未解析的数据进行解析处理,重复执行S21、S22以及S23的处理,将解析的数据合并到已有的集合中,直到未解析的数据全部解析完成。
[0030]进一步优选的,S21还包括:
[0031]S211、其中每个数据块中存在多个不同主键ID数据碎片,不同的主键ID的数据碎片需要分别切割出来;
[0032]S212、对于数据碎片的区分主要是以主键ID作为区分的,将解析出的主键ID的数
据碎片划分到不同的集合中,不同集合以主键ID作为标识;在相同的集合中可能会存在一个或者多个数据碎片,需要以填充块的值的大小作为区分;
[0033]S213、每个数据碎片的填充块的值出现重复的情况下,则采用链表的方式进行存储,每个数据碎片的内容需要单独保存;在S13中如果没有页眉的情况下,则将整行block数据作为一个数据块,如果对于数据块解析有剩余或者是不足的数据,则需要提取出这些的数据并用于S25或者S26进行处理。
[0034]进一步优选的,S22还包括:对于主键ID的值存在于_content表中的数据碎片,说明当前数据碎片是未删除的数据,则需要裁剪掉,同时裁剪掉所有的存在于_content表中的主键ID相同值的数据碎片本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于SQLite全文索引的数据恢复方法,其特征在于,该方法包括如下步骤:S1、响应于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;S2、对获取的索引数据中的数据碎片进行提炼;以及S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。2.根据权利要求1所述的基于SQLite全文索引的数据恢复方法,其特征在于,在S1之前还包括:预先提取带有SQLite全文索引的虚拟表中的两张关联的数据表,两张所述关联的数据表分别是表名称以_content结尾的表和以_data结尾的表。3.根据权利要求2所述的基于SQLite全文索引的数据恢复方法,其特征在于,S1具体包括:S11、选择虚拟表中表名称以_data结尾的表中block列字段的一行数据,block列字段中的数据主要以id列作为标准进行组合排列,优先提取_data结尾的表中id值较小的block字段数据,已经处理过的数据则跳过;若存在多张虚拟表,则对多张虚拟表进行单独解析恢复处理。4.根据权利要求3所述的基于SQLite全文索引的数据恢复方法,其特征在于,S1还包括:S12、解析当前id的数据的头部信息,以提取第一个主键ID的偏移位置以及第一个页眉的偏移位置,同时校验第一块的主键ID的偏移位置和第一个页眉的偏移位置是否正常,存在异常的情况下则排除当前的block数据,正常的情况下则执行S13步骤进行处理;S13、判断当前数据中是否有第一个页眉的位置信息,如果有第一个页眉的信息,说明数据是包含了多个数据块,每个数据块对应的起始主键ID不做叠加重新开始,则执行步骤S14,没有说明当前id中的数据是一整块数据则执行S2对数据碎片进行提炼;S14、解析当前id的数据内容,并从第一个页眉的偏移位置开始往后提取出每一个页眉的偏移位置信息,并做临时存储,用于步骤S15;同一个id的数据中页眉的偏移位置之间存在相关性,以前一块页眉的偏移位置作为基础下,进行计算下一个页眉的偏移位置;S15、根据S14得到的当前id对应的block数据中的所有的页眉偏移位置信息,根据页眉的偏移位置提取出每一个数据块的起始和终止偏移位置,并根据起始和终止偏移位置获取到各个数据块的内容。5.根据权利要求4所述的基于SQLite全文索引的数据恢复方法,其特征在于,S2具体包括:S21、根据S15得到的各个数据块的内容,解析每个数据块的数据碎片;S22、根据S21得到的数据碎片的集合,结合当前的虚拟表中以表_content数据信息,进行数据碎片裁剪;S23、保存裁剪后的各个主键ID的已删除的数据碎片的集合,如果上一个id的block数据已经解析出来一些数据碎片的集合,则需要与当前的集合并为同一个集合;S24、判断当前id的block数据是否存在没有解析的数据,如果存在没有解析的数据则执行S25,当前id的block数据全部解析完成的则执行步骤S26;S25、对未解析的数据内容,保存并用于下一个相邻id的block数据中,同时需要标记当前未解析的数据是否是已经处理过的数据内容剩余的,如果是处理过的剩余数据则需要记录下这块数据的一些标识,包含前缀的数据片、前缀的偏移值位置以及主键ID;
S26、判断当前表的所有id对应的block数据是否已经全部解析完成,如果没有解析完成,则获取下一个id值最接近的block数据,然后执行S11,在当前虚拟表中所有的id全部解析完成的情况下,则执行S27;S27、对于步骤S25中存在未...

【专利技术属性】
技术研发人员:吴少华吴江煌连慧奇林文财张旭
申请(专利权)人:厦门理工学院
类型:发明
国别省市:

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

1