一种制造技术

技术编号:39486644 阅读:12 留言:0更新日期:2023-11-24 11:06
本发明专利技术公开了一种

【技术实现步骤摘要】
一种SQLite数据恢复方法


[0001]本专利技术涉及
SQLite
数据库
,具体来说,涉及一种
SQLite
数据恢复方法


技术介绍

[0002]SQLite
,是一款轻型的数据库,是遵守
ACID
的关系型数据库管理系统,它包含在一个相对小的
C
库中
。SQLite
是世界上部署最广泛的
SQL
数据库引擎,它代码轻巧,容易编译,基本都被主流开发平台支持,支持
2TB
数据存储,它支持
LIKE

MATCH
两个方式查询搜索,
LIKE
可以直接对普通数据表查询,但性能比较低,特别是遇到数据量比较大的情况,大量字符串匹配不会导致时间消耗,以致应用卡顿

为此开发者一般会选择
MATCH
来开发功能,但
MATCH
只能用于
FTS
数据表查询,
FTS
是全文检索的简称,
[0003]目前,传统
SQLite
数据方法恢复方法,具体如下:分析数据库格式定位出整个数据库中存在的剩余空间
(
未分配空间

回收空间
)
;套用数据表模版
(
字段类型

长度
)
在剩余空间中匹配,当遇到符合该模版时即可将该记录恢复,不符合的话偏移到下一个字节继续匹配;将恢复的记录与现有记录进行过滤,当记录与现有记录不重复,标记为恢复的删除内容;当记录与现有记录重复,直接丢弃继续下一条过滤

传统方法适用于数据库删除记录不写0的情况或者不执行
vaccum
,但目前很多应用都会有写0操作,比如微信
7.0
后,该方法基本恢复效果就不行,因此传统
SQLite
数据方法恢复方法,导致特殊情况下,数据较难恢复,存在数据恢复的局限性,适应性较差的问题

[0004]针对相关技术中的问题,目前尚未提出有效的解决方案


技术实现思路

[0005]针对相关技术中的问题,本专利技术提出一种
SQLite
数据恢复方法,以克服现有相关技术所存在的上述技术问题

[0006]本专利技术的技术方案是这样实现的:
[0007]一种
SQLite
数据恢复方法,包括以下步骤:
[0008]预先从数据库中目标
FTS5
数据表获取所有页面分词数据,记为
Blocks

[0009]依次遍历
Blocks
,根据
Page
解析器对每个
Block
进行切分与汇总,获取每个分词与文档列表记录,记为
Term

Doclists

[0010]进行依次遍历
Term

Doclists
,根据
Term
解析器对每个
Term

Doclist
处理与汇总,获取完整分词与文档列表,记为
Key

Doclists

[0011]依次遍历
Key

Doclists
,根据
doclist

poslist
解析器对每个
Key

Doclist
处理,获取分词语句实例与位置分布,记为
key

rowid

poslists

[0012]依次遍历
key

rowid

poslists
,根据
collist
解析器对每个
key

rowid

poslist
处理,获取分词在相关语句中具体位置索引,记为
key

rowid

offsets

[0013]进行分词重组,对
key

rowid

offsets
数据,存入键值,记为
rowid

records。
[0014]从数据库中目标
FTS5
数据表获取所有相关记录
id
与内容,记为
id

contents
,并进
行比对
rowid

records、id

contents
两个键值,获取分析结果

[0015]进一步的,步骤所述所有页面分词数据需要进行可变长整型的转化,包括以下步骤:
[0016]将普通整型转为二进制,并从右往左依次取7位记为一个单元,分别记为
cell0、cell1、cell2、

、celli

[0017]进行标记
cell0
第8位写0,
celli
第8位写1;
[0018]将补齐8位的每单元依次转为
16
进制,按
celli、

、cell2、cell1、cell0
顺序拼接每个单元,再转为
10
进制

[0019]进一步的,步骤所述进行分词重组,包括以下步骤:
[0020]将解析出来的分词
key、
语句
rowid、
分词在语句中位置分布
offset
,记为
key

rowid

offset
数组;
[0021]按语句
rowid
进行分组排序;
[0022]按
offset
进行排序;
[0023]将
key
按顺序拼接起来,记为
(rowid,record)。
[0024]进一步的,所述获取分析结果,包括:获取恢复数据或检验真实性

[0025]进一步的,所述获取恢复数据,包括以下步骤:
[0026]进行将
rowid

record

id

content
键值,分别按
rowid

>id
进行匹配过滤,具体如下:
[0027]其中,若
rowid

...

【技术保护点】

【技术特征摘要】
1.
一种
SQLite
数据恢复方法,其特征在于,包括以下步骤:预先从数据库中目标
FTS5
数据表获取所有页面分词数据,记为
Blocks
;依次遍历
Blocks
,根据
Page
解析器对每个
Block
进行切分与汇总,获取每个分词与文档列表记录,记为
Term

Doclists
;进行依次遍历
Term

Doclists
,根据
Term
解析器对每个
Term

Doclist
处理与汇总,获取完整分词与文档列表,记为
Key

Doclists
;依次遍历
Key

Doclists
,根据
doclist

poslist
解析器对每个
Key

Doclist
处理,获取分词语句实例与位置分布,记为
key

rowid

poslists
;依次遍历
key

rowid

poslists
,根据
collist
解析器对每个
key

rowid

poslist
处理,获取分词在相关语句中具体位置索引,记为
key

rowid

offsets
;进行分词重组,对
key

rowid

offsets
数据,存入键值,记为
rowid

records
;从数据库中目标
FTS5
数据表获取所有相关记录
id
与内容,记为
id

contents
,并进行比对
rowid

records、id

contents
两个键值,获取分析结果
。2.

【专利技术属性】
技术研发人员:谢清泉吴兴德王海啸黄喆
申请(专利权)人:苏州龙信信息科技有限公司
类型:发明
国别省市:

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

1