[发明专利]一种Sqlite删除记录结构重组方法有效
申请号: | 201110266852.1 | 申请日: | 2011-09-09 |
公开(公告)号: | CN102298634A | 公开(公告)日: | 2011-12-28 |
发明(设计)人: | 陈明辉;方均滩;罗佳;吴世雄 | 申请(专利权)人: | 厦门市美亚柏科信息股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京恒都律师事务所 11395 | 代理人: | 何自刚 |
地址: | 361008 福建省厦门*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sqlite 删除 记录 结构 重组 方法 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种Sqlite删除记录结构重组方法。
背景技术
Sqlite数据库是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。因此,Sqlite数据库在计算机领域中得到了广泛的应用。
在计算机领域中,有时候需要对已经删除的数据进行重组恢复,当前国内外对于Sqlite数据库删除数据的通用解析的研究比较少,目前市场上的通用解析产品具有很大的局限性,以下为使说明更加清楚,结合附图简要介绍Sqlite删除记录前后的结构。
图1所示为未删除的Sqlite记录结构示意图。由头部到尾部,该记录依次包括:记录总长度11、ROWID12、头部索引总长度13、N个索引域14和N个数据域15。其中,记录总长度11和ROWID12是变长整数,占用的空间大小为1-9字节,头部索引总长度13是N个索引14和头部索引总长度13占用的空间总大小。N个数据域15与N个索引域14一一对应,即:第i个(i=1,2,...,N)索引域14中的索引INDEXi记录了第i个数据域中的数据DATAi占用的空间大小。
图2所示为删除后的Sqlite记录结构示意图。删除记录后,该已删除记录称为空闲节点,未删除前记录的前4个字节将被改写,如图2所示,删除后的Sqlite记录的前两个字节被改写为指向下一个空闲节点的指针21,第3-4个字节则用于表示该空闲节点的大小22(下文中记为FTL),从第5个字节开始,Sqlite记录的内容和被删除前记录中第5个字节之后的内容不变。显然,删除的记录结构之所以能够被重组,是因为记录删除后,原纪录中只有前4个字节覆盖,而第4个字节后面的内容没有改写或清空。
从上述说明可知:记录的删除可能造成原Sqlite记录中的索引1被覆盖或者部分被覆盖,因此,现有的Sqlite删除记录结构重组方法只能解析格式完整的删除记录,而当头部索引被覆盖或者存在伪索引时,该方法无法正常重组已删除记录,这样影响了删除记录重组的准确性和全面性。此外,目前没有相关的公开技术文档或专利提到能够解决这一问题,因此需要一种具有高准确性和全面性的Sqlite删除记录结构重组方法。
发明内容
本发明的目的在于提供一种Sqlite删除记录结构重组方法,用以解决现有的删除记录结构重组方法只能解析格式完整的删除记录,而不能正常重组头部索引被覆盖或存在为索引情况下已删除记录的问题。本发明提供了一种全新的删除记录的结构重组方法,该方法准确性高、实用性强、可以适用于所有Sqlite数据库。
为了实现上述目的,本发明提供一种Sqlite删除记录结构重组方法,该方法包括以下步骤:
步骤一:设置滑动窗口初始偏移值offset为5;
步骤二:学习待重组的记录所属数据表结构并依此界定滑动窗口;
步骤三:计算所述滑动窗口的值Value(window)和所述待重组的记录中整个数据域的大小Length(DATA);
步骤四:判断所述Value(window)和Length(DATA)的值是否相等,若是,则执行步骤A,否则执行步骤B;
步骤A:根据所述滑动窗口中最后一个小窗口的位置和所述待重组的记录的结构重组已删除记录,结束流程。
步骤B:判断所述offset取值是否已达其预定上限,若是,则尝试碎片重组并结束流程;否则,令offset=offset+1,并返回执行步骤三;
其中,所述滑动窗口包括至少两个小窗口,并按照与所述待重组的记录中字节排序相同的方向排列所述至少两个小窗口。
所述步骤二包括:读取所述待重组的记录中数据N的值以及变长整数值,将所述滑动窗口的小窗口数设置为所述N,并指定所述滑动窗口的每个小窗口刚好可以容纳一个变长整数,设定所述offset的取值上限。
所述滑动窗口的值Value(window)为该滑动窗口中的所有小窗口对应的数据域占用的空间大小之和。
所述待重组的记录中整个数据域的大小Length(DATA)满足关系式:
Length(DATA)=FTL-Length(window)-4
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门市美亚柏科信息股份有限公司,未经厦门市美亚柏科信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110266852.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:泊松亮斑演示器
- 下一篇:一种基于触摸屏的快速调用系统及方法