《基于SQLite全文索引的数据恢复方法及其系统.pdf》由会员分享,可在线阅读,更多相关《基于SQLite全文索引的数据恢复方法及其系统.pdf(17页珍藏版)》请在专利查询网上搜索。
1、(19)国家知识产权局(12)发明专利申请(10)申请公布号 (43)申请公布日 (21)申请号 202310512046.0(22)申请日 2023.05.08(71)申请人 厦门美亚亿安信息科技有限公司地址 361012 福建省厦门市火炬高新区软件园一期思明软件园3号创新大厦C区3F-A1254 申请人 厦门理工学院(72)发明人 吴少华吴江煌连慧奇林文财张旭(74)专利代理机构 厦门福贝知识产权代理事务所(普通合伙)35235专利代理师 陈远洋(51)Int.Cl.G06F 11/14(2006.01)G06F 16/22(2019.01)G06F 16/21(2019.01)(54)发。
2、明名称一种基于SQLite全文索引的数据恢复方法及其系统(57)摘要本发明提出了一种基于SQLite全文索引的数据恢复方法及其系统,该方法包括如下步骤:S1、响应于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;S2、对获取的索引数据中的数据碎片进行提炼;S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。本发明的方法可以提取出遗留在SQlite全文索引表中已删除的数据碎片,在一些SQlite数据恢复产品中能够提高数据恢复效率,进一步提高SQLite数据恢复的效率。权利要求书3页 说明书9页 附图4页CN 116610489 A2023.08.18CN 1166。
3、10489 A1.一种基于SQLite全文索引的数据恢复方法,其特征在于,该方法包括如下步骤:S1、响应于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;S2、对获取的索引数据中的数据碎片进行提炼;以及S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。2.根据权利要求1所述的基于SQLite全文索引的数据恢复方法,其特征在于,在S1之前还包括:预先提取带有SQLite全文索引的虚拟表中的两张关联的数据表,两张所述关联的数据表分别是表名称以_content结尾的表和以_data结尾的表。3.根据权利要求2所述的基于SQLite全文索引的数据恢复方法,其特征在于,。
4、S1具体包括:S11、选择虚拟表中表名称以_data结尾的表中block列字段的一行数据,block列字段中的数据主要以id列作为标准进行组合排列,优先提取_data结尾的表中id值较小的block字段数据,已经处理过的数据则跳过;若存在多张虚拟表,则对多张虚拟表进行单独解析恢复处理。4.根据权利要求3所述的基于SQLite全文索引的数据恢复方法,其特征在于,S1还包括:S12、解析当前id的数据的头部信息,以提取第一个主键ID的偏移位置以及第一个页眉的偏移位置,同时校验第一块的主键ID的偏移位置和第一个页眉的偏移位置是否正常,存在异常的情况下则排除当前的block数据,正常的情况下则执行S1。
5、3步骤进行处理;S13、判断当前数据中是否有第一个页眉的位置信息,如果有第一个页眉的信息,说明数据是包含了多个数据块,每个数据块对应的起始主键ID不做叠加重新开始,则执行步骤S14,没有说明当前id中的数据是一整块数据则执行S2对数据碎片进行提炼;S14、解析当前id的数据内容,并从第一个页眉的偏移位置开始往后提取出每一个页眉的偏移位置信息,并做临时存储,用于步骤S15;同一个id的数据中页眉的偏移位置之间存在相关性,以前一块页眉的偏移位置作为基础下,进行计算下一个页眉的偏移位置;S15、根据S14得到的当前id对应的block数据中的所有的页眉偏移位置信息,根据页眉的偏移位置提取出每一个数据。
6、块的起始和终止偏移位置,并根据起始和终止偏移位置获取到各个数据块的内容。5.根据权利要求4所述的基于SQLite全文索引的数据恢复方法,其特征在于,S2具体包括:S21、根据S15得到的各个数据块的内容,解析每个数据块的数据碎片;S22、根据S21得到的数据碎片的集合,结合当前的虚拟表中以表_content数据信息,进行数据碎片裁剪;S23、保存裁剪后的各个主键ID的已删除的数据碎片的集合,如果上一个id的block数据已经解析出来一些数据碎片的集合,则需要与当前的集合并为同一个集合;S24、判断当前id的block数据是否存在没有解析的数据,如果存在没有解析的数据则执行S25,当前id的bl。
7、ock数据全部解析完成的则执行步骤S26;S25、对未解析的数据内容,保存并用于下一个相邻id的block数据中,同时需要标记当前未解析的数据是否是已经处理过的数据内容剩余的,如果是处理过的剩余数据则需要记录下这块数据的一些标识,包含前缀的数据片、前缀的偏移值位置以及主键ID;权利要求书1/3 页2CN 116610489 A2S26、判断当前表的所有id对应的block数据是否已经全部解析完成,如果没有解析完成,则获取下一个id值最接近的block数据,然后执行S11,在当前虚拟表中所有的id全部解析完成的情况下,则执行S27;S27、对于步骤S25中存在未解析的数据进行解析处理,重复执行S。
8、21、S22以及S23的处理,将解析的数据合并到已有的集合中,直到未解析的数据全部解析完成。6.根据权利要求5所述的基于SQLite全文索引的数据恢复方法,其特征在于,S21还包括:S211、其中每个数据块中存在多个不同主键ID数据碎片,不同的主键ID的数据碎片需要分别切割出来;S212、对于数据碎片的区分主要是以主键ID作为区分的,将解析出的主键ID的数据碎片划分到不同的集合中,不同集合以主键ID作为标识;在相同的集合中可能会存在一个或者多个数据碎片,需要以填充块的值的大小作为区分;S213、每个数据碎片的填充块的值出现重复的情况下,则采用链表的方式进行存储,每个数据碎片的内容需要单独保存;。
9、在S13中如果没有页眉的情况下,则将整行block数据作为一个数据块,如果对于数据块解析有剩余或者是不足的数据,则需要提取出这些的数据并用于S25或者S26进行处理。7.根据权利要求6所述的基于SQLite全文索引的数据恢复方法,其特征在于,S22还包括:对于主键ID的值存在于_content表中的数据碎片,说明当前数据碎片是未删除的数据,则需要裁剪掉,同时裁剪掉所有的存在于_content表中的主键ID相同值的数据碎片,主键ID的值不存在于_content表的,则是已删除的数据碎片。8.根据权利要求7所述的基于SQLite全文索引的数据恢复方法,其特征在于,S25还包括:前缀的数据片和偏移值。
10、主要保证下一块数据碎片的内容获取能够完整,保证数据碎片的准确性,而主键ID则是保证下一块数据块解析时能够准确地获取到对应的主键ID,如果虚拟表中不存在下一个相邻id的block数据,则将当前未解析的数据内容保存下来,用于S27处理。9.根据权利要求8所述的基于SQLite全文索引的数据恢复方法,其特征在于,S3还包括:S31、对每个集合的数据碎片进行重新排列组合;S32、对在同个集合中数据碎片,则根据填充块的值进行重新排列,排列方式是以填充块的值从小到大进行排序的;S33、检查填充块的值是否有存在缺漏的填充值或者是存在多余的填充值;S34、对缺漏的填充值的数据碎片做数据填充处理,若存在多余的填。
11、充值的,则需要做裁剪,采用保留填充值中数据碎片中数据长度较长的,其他多余的填充值的数据碎片则裁剪掉;S35、将每个集合以填充块的值从小到大组装起来,形成一个个以主键ID作为区分的删除数据内容。10.一种基于SQLite全文索引的数据恢复系统,其特征在于,该系统具体包括:解析并获取数据模块,用于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;权利要求书2/3 页3CN 116610489 A3数据碎片提炼模块,用于对获取的索引数据中的数据碎片进行提炼;数据组装模块,用于对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。11.根据权利要求10所述的基于SQLite全文索引的数。
12、据恢复系统,其特征在于,还包括:预先提取模块,用于预先提取带有SQLite全文索引的虚拟表中的两张关联的数据表,两张所述关联的数据表分别是表名称以_content结尾的表和以_data结尾的表。12.一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至9中任一所述的方法。13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至9中任一所述的方法。权利要求书3/3 页4CN 116610489 A4一种基于SQLite全文索引的数据恢复方法及。
13、其系统技术领域0001本发明属于数据恢复技术领域,具体涉及一种基于SQLite全文索引的数据恢复方法及其系统。背景技术0002SQLite是一款轻型的嵌入式型数据库。相比于Mysql、PostgreSQL数据库,SQLite有着更好的实时性、处理速度更快、占用资源非常小等优点。0003在智能手机为代表等移动终端的迅速普及,SQLite数据库被广泛使用于各种通讯软件中。目前市面上的Sqlite恢复工具,使用的数据恢复技术大多恢复效率低。对于存储在SQLite数据库上的数据,删除的数据大多恢复不回来。所以寻求一些新的恢复方法,能够提高SQLite的数据恢复效率。0004随着各种通讯软件对于数据存储。
14、、数据检索的需求,SQLite支持了全文搜索,可以方便用户快速进行查找。SQLite以虚拟表的方式存在着全文检索相关的数据,存储着大量有用的数据内容。SQLite数据删除后,全文检索中对应的数据会被标记保留在对应的索引数据中,而这些数据碎片的内容有可能提高Sqlite的数据恢复效率。因此需要寻求一种基于SQLite全文索引的数据恢复方法。0005现有的SQLite删除数据恢复技术,具有很大的局限性,删除数据恢复不够全面。其中有一种技术方法是基于空闲页进行删除数据恢复,另一种现有技术方法是基于日志文件进行删除数据的恢复,这些技术具有如下问题:00061、基于空闲页的删除数据的恢复方法,对于新记录。
15、更新,可能导致删除数据被覆盖,从而导致删除数据恢复不完整,甚至无法恢复。00072、基于日志文件的删除数据的恢复方法,日志记录只会保存最新的一段时间,对于更早之前的日志记录则没有保留,所以基于日志文件的恢复方法只能恢复出最近一段时间删除的数据。0008有鉴于此,提出一种基于SQLite全文索引的数据恢复方法及其系统是非常具有意义的。发明内容0009本发明提供一种基于SQLite全文索引的数据恢复方法及其系统,以解决上述存在的技术缺陷问题。0010第一方面,本发明提出了一种基于SQLite全文索引的数据恢复方法,该方法包括如下步骤:0011S1、响应于解析并获取带有全文索引的SQLite DB文。
16、件的虚拟表中的数据;0012S2、对获取的索引数据中的数据碎片进行提炼;以及0013S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。0014优选的,在S1之前还包括:预先提取带有SQLite全文索引的虚拟表中的两张关联说明书1/9 页5CN 116610489 A5的数据表,两张所述关联的数据表分别是表名称以_content结尾的表和以_data结尾的表。0015进一步优选的,S1具体包括:0016S11、选择虚拟表中表名称以_data结尾的表中block列字段的一行数据,block列字段中的数据主要以id列作为标准进行组合排列,优先提取_data结尾的表中id值较小的bl。
17、ock字段数据,已经处理过的数据则跳过;若存在多张虚拟表,则对多张虚拟表进行单独解析恢复处理。0017进一步优选的,S1还包括:0018S12、解析当前id的数据的头部信息,以提取第一个主键ID的偏移位置以及第一个页眉的偏移位置,同时校验第一块的主键ID的偏移位置和第一个页眉的偏移位置是否正常,存在异常的情况下则排除当前的block数据,正常的情况下则执行S13步骤进行处理;0019S13、判断当前数据中是否有第一个页眉的位置信息,如果有第一个页眉的信息,说明数据是包含了多个数据块,每个数据块对应的起始主键ID不做叠加重新开始,则执行步骤S14,没有说明当前id中的数据是一整块数据则执行S2对。
18、数据碎片进行提炼;0020S14、解析当前id的数据内容,并从第一个页眉的偏移位置开始往后提取出每一个页眉的偏移位置信息,并做临时存储,用于步骤S15;同一个id的数据中页眉的偏移位置之间存在相关性,以前一块页眉的偏移位置作为基础下,进行计算下一个页眉的偏移位置;0021S15、根据S14得到的当前id对应的block数据中的所有的页眉偏移位置信息,根据页眉的偏移位置提取出每一个数据块的起始和终止偏移位置,并根据起始和终止偏移位置获取到各个数据块的内容。0022进一步优选的,S2具体包括:0023S21、根据S15得到的各个数据块的内容,解析每个数据块的数据碎片;0024S22、根据S21得到。
19、的数据碎片的集合,结合当前的虚拟表中以表_content数据信息,进行数据碎片裁剪;0025S23、保存裁剪后的各个主键ID的已删除的数据碎片的集合,如果上一个id的block数据已经解析出来一些数据碎片的集合,则需要与当前的集合并为同一个集合;0026S24、判断当前id的block数据是否存在没有解析的数据,如果存在没有解析的数据则执行S25,当前id的block数据全部解析完成的则执行步骤S26;0027S25、对未解析的数据内容,保存并用于下一个相邻id的block数据中,同时需要标记当前未解析的数据是否是已经处理过的数据内容剩余的,如果是处理过的剩余数据则需要记录下这块数据的一些标识。
20、,包含前缀的数据片、前缀的偏移值位置以及主键ID;0028S26、判断当前表的所有id对应的block数据是否已经全部解析完成,如果没有解析完成,则获取下一个id值最接近的block数据,然后执行S11,在当前虚拟表中所有的id全部解析完成的情况下,则执行S27;0029S27、对于步骤S25中存在未解析的数据进行解析处理,重复执行S21、S22以及S23的处理,将解析的数据合并到已有的集合中,直到未解析的数据全部解析完成。0030进一步优选的,S21还包括:0031S211、其中每个数据块中存在多个不同主键ID数据碎片,不同的主键ID的数据碎片需要分别切割出来;0032S212、对于数据碎片。
21、的区分主要是以主键ID作为区分的,将解析出的主键ID的数说明书2/9 页6CN 116610489 A6据碎片划分到不同的集合中,不同集合以主键ID作为标识;在相同的集合中可能会存在一个或者多个数据碎片,需要以填充块的值的大小作为区分;0033S213、每个数据碎片的填充块的值出现重复的情况下,则采用链表的方式进行存储,每个数据碎片的内容需要单独保存;在S13中如果没有页眉的情况下,则将整行block数据作为一个数据块,如果对于数据块解析有剩余或者是不足的数据,则需要提取出这些的数据并用于S25或者S26进行处理。0034进一步优选的,S22还包括:对于主键ID的值存在于_content表中的。
22、数据碎片,说明当前数据碎片是未删除的数据,则需要裁剪掉,同时裁剪掉所有的存在于_content表中的主键ID相同值的数据碎片,主键ID的值不存在于_content表的,则是已删除的数据碎片。0035进一步优选的,S25还包括:前缀的数据片和偏移值主要保证下一块数据碎片的内容获取能够完整,保证数据碎片的准确性,而主键ID则是保证下一块数据块解析时能够准确地获取到对应的主键ID,如果虚拟表中不存在下一个相邻id的block数据,则将当前未解析的数据内容保存下来,用于S27处理。0036进一步优选的,S3还包括:0037S31、对每个集合的数据碎片进行重新排列组合;0038S32、对在同个集合中数据。
23、碎片,则根据填充块的值进行重新排列,排列方式是以填充块的值从小到大进行排序的;0039S33、检查填充块的值是否有存在缺漏的填充值或者是存在多余的填充值;0040S34、对缺漏的填充值的数据碎片做数据填充处理,若存在多余的填充值的,则需要做裁剪,采用保留填充值中数据碎片中数据长度较长的,其他多余的填充值的数据碎片则裁剪掉;0041S35、将每个集合以填充块的值从小到大组装起来,形成一个个以主键ID作为区分的删除数据内容。0042第二方面,本发明实施例还提供一种基于SQLite全文索引的数据恢复系统,该系统具体包括:0043解析并获取数据模块,用于解析并获取带有全文索引的SQLite DB文件的。
24、虚拟表中的数据;0044数据碎片提炼模块,用于对获取的索引数据中的数据碎片进行提炼;0045数据组装模块,用于对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。0046进一步优选的,还包括:0047预先提取模块,用于预先提取带有SQLite全文索引的虚拟表中的两张关联的数据表,两张所述关联的数据表分别是表名称以_content结尾的表和以_data结尾的表。0048第三方面,本发明实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一实现方式描述的方法。0049第四方面,本发明实。
25、施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面中任一实现方式描述的方法。0050与现有技术相比,本发明的有益成果在于:说明书3/9 页7CN 116610489 A70051(1)本发明的方法可以提取出遗留在SQlite全文索引表中已删除的数据碎片,在一些SQlite数据恢复产品中能够提高数据恢复效率,进一步提高SQLite数据恢复的效率。0052(2)本发明基于SQLite全文索引的虚拟表进行恢复,在删除的数据碎片上的恢复,相比对空闲页的恢复方法,数据覆盖几率更小,能恢复出更多的数据,相比对日志文件的恢复方法,没有时间限制,恢复数据更多。附图。
26、说明0053包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。附图的元件不一定是相互按照比例的。同样的附图标记指代对应的类似部件。0054图1是本发明的一个实施例可以应用于其中的示例性装置架构图;0055图2为本发明的实施例的基于SQLite全文索引的数据恢复方法的流程示意图;0056图3为本发明的实施例的基于SQLite全文索引的数据恢复方法的框架图;0057图4为本发明的实施例的基于SQLite全文索引的数据恢复。
27、方法流程示意图;0058图5为本发明的实施例的基于SQLite全文索引的数据恢复方法中数据碎片集合组装方式的示意图;0059图6为本发明的实施例的基于SQLite全文索引的数据恢复系统的框架示意图;0060图7是适于用来实现本发明实施例的电子设备的计算机装置的结构示意图。具体实施方式0061在以下详细描述中,参考附图,该附图形成详细描述的一部分,并且通过其中可实践本发明的说明性具体实施例来示出。对此,参考描述的图的取向来使用方向术语,例如“顶”、“底”、“左”、“右”、“上”、“下”等。因为实施例的部件可被定位于若干不同取向中,为了图示的目的使用方向术语并且方向术语绝非限制。应当理解的是,可以。
28、利用其他实施例或可以做出逻辑改变,而不背离本发明的范围。因此以下详细描述不应当在限制的意义上被采用,并且本发明的范围由所附权利要求来限定。0062应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。0063图1示出了可以应用本发明实施例的用于处理信息的方法或用于处理信息的装置的示例性系统架构100。0064如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信。
29、链路或者光纤电缆等等。0065用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。0066终端设备101、102、103可以是具有通信功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。说明书4/9 页8CN 116610489 A80067服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103发送的校验请求信息进行处理的后台信息处理服务器。后台信息。
30、处理服务器可以对接收到的校验请求信息进行分析等处理,并得到处理结果(例如用于表征校验请求为合法请求的校验成功信息)。0068需要说明的是,本发明实施例所提供的用于处理信息的方法一般由服务器105执行,相应地,用于处理信息的装置一般设置于服务器105中。另外,本发明实施例所提供的用于发送信息的方法一般由终端设备101、102、103执行,相应地,用于发送信息的装置一般设置于终端设备101、102、103中。0069需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如。
31、用来提供分布式服务),也可以实现成单个软件或多个软件模块,在此不做具体限定。0070本发明通过解析带有全文索引的SQLite DB文件的虚拟表中的数据,经过数据碎片的提炼组装,从中恢复出删除的数据内容。SQLite建立全文索引时,会创建表名为“_content”,“_config”,“_data”,“_idx”和“_docsize”等影子表,其中“”由虚拟表的名称替换。“_content”表中存储着插入表中的实际数据,“_data”存放用于搜索的索引数据,此表包含大部分全文索引数据,“_config”存放持久配置参数的值。“_idx”包含了全文索引数据的其余部分,它几乎总是比_data表小得多。
32、。0071在执行本发明的恢复方法之前,需要先提取出带有SQLite全文索引的虚拟表中的两张关联的数据表,分别是表名称以_content结尾的表和以_data结尾的表。其中表名称以_content结尾的表存储着现有未删除的数据内容,而表名称以_data结尾的表则存储着提供检索的碎片内容以及部分删除了的数据碎片内容。所以表名称以_data结尾的表则是本发明中需要恢复的出发点。另外,对于多张虚拟表的情况下,则需要进行单独解析恢复处理。通过解析表名称以_data结尾的表中的block列数据,提炼出删除的数据碎片,进而恢复出删除数据,达到提高SQLite数据恢复效果。0072图2示出了本发明的实施例公开。
33、了一种基于SQLite全文索引的数据恢复方法,如图2所示,该方法包括如下步骤:0073S1、响应于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;0074S2、对获取的索引数据中的数据碎片进行提炼;以及0075S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。0076参照图3,本发明主要由3个模块组成:获取SQLite全文索引数据、索引数据中数据碎片提炼、数据碎片组装。其中SQLite全文索引数据主要获取虚拟表中表名称_data结尾的表的block数据,并将表中的block数据以id值大小进行重新排列组合,方便第二个模块的数据提炼处理;数据碎片提炼主要作用是解。
34、析block数据获取数据碎片,并将数据碎片经过裁剪、合并、整合等步骤处理提炼出删除的数据碎片;数据组装则是将删除的数据碎片的集合重新整合成一个个数据内容,从而达到删除数据恢复的效果。0077具体的,参照图4,本发明SQLite全文索引的数据恢复方法的处理流程如图4所示:0078在步骤1中,选择虚拟表中表名称以_data结尾的表中block列字段的一行数据,block列字段中的数据主要以id列作为标准进行组合排列,优先提取_data结尾的表中id值说明书5/9 页9CN 116610489 A9较小的block字段数据,已经处理过的数据则跳过。0079在步骤2中,解析当前id的数据的头部信息,该。
35、步骤主要为提取第一个主键ID的偏移位置以及第一个页眉的偏移位置,同时校验第一块的主键ID的偏移位置和第一个页眉的偏移位置是否正常,存在异常的情况下则排除当前的block数据,正常的情况下则执行步骤3进行处理。0080在步骤3中,判断当前数据中是否有第一个页眉的位置信息,如果有第一个页眉的信息,说明数据是包含了多个数据块,每个数据块对应的起始主键ID不做叠加重新开始,则执行步骤4,没有说明当前id中的数据是一整块数据则执行步骤6。0081在步骤4中,解析当前id的数据内容,并从第一个页眉的偏移位置开始往后提取出每一个页眉的偏移位置信息,并做临时存储,用于步骤5。同一个id的数据中页眉的偏移位置之。
36、间存在相关性,以前一块页眉的偏移位置作为基础下,进行计算下一个页眉的偏移位置。0082在步骤5中,根据步骤4得到的当前id对应的block数据中的所有的页眉偏移位置信息,根据页眉的偏移位置提取出每一个数据块的起始和终止偏移位置,并根据起始和终止偏移位置获取到各个数据块的内容。0083在步骤6中,根据步骤5得到的各个数据块的内容,解析每个数据块的数据碎片。其中,每个数据块中存在多个不同主键ID数据碎片,不同的主键ID的数据碎片需要分别切割出来。对于数据碎片的区分主要是以主键ID作为区分的,将解析出的主键ID的数据碎片划分到不同的集合中。不同集合以主键ID作为标识。在相同的集合中可能会存在一个或者。
37、多个数据碎片,这个需要以填充块的值的大小作为区分。每个数据碎片的填充块的值出现重复的情况下,则采用链表的方式进行存储。每个数据碎片的内容需要单独保存。在步骤3中如果没有页眉的情况下,则将整行block数据作为一个数据块。如果对于数据块解析有剩余或者是不足的数据,则需要提取出这些的数据并用于步骤10或者步骤12进行处理。0084在步骤7中,根据步骤6得到的数据碎片的集合,结合当前的虚拟表中以表_content数据信息,进行数据碎片裁剪。其中对于主键ID的值存在于_content表中的数据碎片,说明当前数据碎片是未删除的数据,则需要裁剪掉。同时裁剪掉所有的存在于_content表中的主键ID相同值。
38、的数据碎片。主键ID的值不存在于_content表的,则是已删除的数据碎片。0085在步骤8中,保存裁剪后的各个主键ID的已删除的数据碎片的集合。如果上一个id的block数据已经解析出来一些数据碎片的集合,则需要与当前的集合并为同一个集合。0086在步骤9中,判断是否当前id的block数据是否存在没有解析的数据,如果存在没有解析的数据则执行步骤10,当前id的block数据全部解析完成的则执行步骤11。0087在步骤10中,对未解析的数据内容,保存并用于下一个相邻id的block数据中,同时需要标记当前未解析的数据是否是已经处理过的数据内容剩余的,如果是处理过的剩余数据则需要记录下这块数据。
39、的一些标识,包含前缀的数据片、前缀的偏移值位置以及主键ID。其中,前缀的数据片和偏移值主要保证下一块数据碎片的内容获取能够完整,保证数据碎片的准确性。而主键ID则是保证下一块数据块解析时能够准确地获取到对应的主键ID。如果虚拟表中不存在下一个相邻id的block数据,则将当前未解析的数据内容保存下来,用于步骤12处理。说明书6/9 页10CN 116610489 A100088在步骤11中,判断当前表的所有id对应的block数据是否已经全部解析完成,如果没有解析完成,则获取下一个id值最接近的block数据,然后执行步骤1。在当前虚拟表中所有的id全部解析完成的情况下,则执行步骤12。008。
40、9在步骤12中,对于步骤10中存在未解析的数据进行解析处理,重复执行步骤6和步骤7以及步骤8的处理,将解析的数据合并到已有的集合中,直到未解析的数据全部解析完成。0090在步骤13中,对每个集合的数据碎片进行重新排列组合,具体组合方式参照图5的流程进行组装。对在同个集合中数据碎片,则根据填充块的值进行重新排列,排列方式是以填充块的值从小到大进行排序的;然后检查这些填充块的值是否有存在缺漏的填充值或者是存在多余的填充值。对于存在多余的填充值的情况下,则需要做裁剪,采用保留填充值中数据碎片中数据长度较长的,其他多余的填充值的数据碎片则裁剪掉。对于缺漏的填充值的数据碎片做数据填充处理。最后将每个集合。
41、以填充块的值从小到大组装起来,形成一个个以主键ID作为区分的删除数据内容。0091第二方面,本发明的实施例还公开了一种基于SQLite全文索引的数据恢复系统,参照图6,该系统具体包括:解析并获取数据模块61,数据碎片提炼模块62,数据组装模块63以及预先提取模块64。0092在一个具体实施例中,解析并获取数据模块61,用于解析并获取带有全文索引的SQLite DB文件的虚拟表中的数据;数据碎片提炼模块62,用于对获取的索引数据中的数据碎片进行提炼;数据组装模块63,用于对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复;预先提取模块64,用于预先提取带有SQLite全文索引的虚拟表中的两张。
42、关联的数据表,两张所述关联的数据表分别是表名称以_content结尾的表和以_data结尾的表。0093下面参考图7,其示出了适于用来实现本发明实施例的电子设备(例如图1所示的服务器或终端设备)的计算机装置700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。0094如图7所示,计算机装置700包括中央处理单元(CPU)701和图形处理器(GPU)702,其可以根据存储在只读存储器(ROM)703中的程序或者从存储部分709加载到随机访问存储器(RAM)706中的程序而执行各种适当的动作和处理。在RAM 704中,还存储有装置700操作所需的各种。
43、程序和数据。CPU 701、GPU702、ROM 703以及RAM 704通过总线705彼此相连。输入/输出(I/O)接口706也连接至总线705。0095以下部件连接至I/O接口706:包括键盘、鼠标等的输入部分707;包括诸如、液晶显示器(LCD)等以及扬声器等的输出部分708;包括硬盘等的存储部分709;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分710。通信部分710经由诸如因特网的网络执行通信处理。驱动器711也可以根据需要连接至I/O接口706。可拆卸介质712,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器711上,以便于从其上读出的计算机程序根据需要。
44、被安装入存储部分709。0096特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分710从网络上被下载和安装,和/或从可说明书7/9 页11CN 116610489 A11拆卸介质712被安装。在该计算机程序被中央处理单元(CPU)701和图形处理器(GPU)702执行时,执行本发明的方法中限定的上述功能。0097需要说明的是,本发明所述的计算机可读介质可以是计算机可读信号介。
45、质或者计算机可读介质或者是上述两者的任意组合。计算机可读介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的装置、装置或器件,或者任意以上的组合。计算机可读介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CDROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行装置、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包。
46、括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行装置、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。0098可以以一种或多种程序设计语言或其组合来编写用于执行本发明的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、S。
47、malltalk、C+,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。0099附图中的流程图和框图,图示了按照本发明各种实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以。
48、代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。0100描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模。
49、块也可以设置在处理器中。0101作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:S1、响应于解析并获取带有全文索引的SQLite DB文件的虚拟表中说明书8/9 页12CN 116610489 A12的数据;S2、对获取的索引数据中的数据碎片进行提炼;以及S3、进一步对提炼的所述数据碎片集合进行组装,以对删除数据进行恢复。0102以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。说明书9/9 页13CN 116610489 A13图1图2说明书附图1/4 页14CN 116610489 A14图3图4说明书附图2/4 页15CN 116610489 A15图5图6说明书附图3/4 页16CN 116610489 A16图7说明书附图4/4 页17CN 116610489 A17。