[发明专利]一种SQLite空闲链表节点的解析方法和装置有效
| 申请号: | 201110443733.9 | 申请日: | 2011-12-27 |
| 公开(公告)号: | CN102591941A | 公开(公告)日: | 2012-07-18 |
| 发明(设计)人: | 陈明辉;方均滩;吴世雄 | 申请(专利权)人: | 厦门市美亚柏科信息股份有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 北京恒都律师事务所 11395 | 代理人: | 何自刚 |
| 地址: | 361008 福建省厦门*** | 国省代码: | 福建;35 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 sqlite 空闲 节点 解析 方法 装置 | ||
技术领域
本发明涉及计算机数据处理技术领域,特别是涉及一种SQLite空闲链表节点的解析方法和装置。
背景技术
SQLite数据库是遵守数据库事务正确执行四要素-原子性、一致性、隔离性和持久性(ACID,Atomicity、Consistency、Isolation、Durability)的关联式数据库管理系统,其设计目标是嵌入式的,目前在很多嵌入式产品得到广泛使用。主要特点:占用系统资源非常低,可支持Windows/Linux/Unix等等主流的操作系统,可与很多程序语言相结合,并具有ODBC接口。与Mysql、PostgreSQL这两款开源数据库管理系统相比,其处理速度更快。
传统的SQLite删除数据解析方法是根据记录数据的特征来断定某记录的大概范围,从而解析某些关键数据,但是这种方法的弊端是只能针对某一类具体数据库文件(如某类手机中的短信数据库文件),而对于其他的数据库文件(如邮件数据库文件)则需要重新提取数据特征并重新解析,无法保证通用性。
SQLite数据库删除数据的通用解析,当前国内外研究比较少;目前市场上的通用解析产品具有很大的局限性,特别其多记录空闲链表节点,或存在记录碎片和关键点碎片的空闲链表节点,无法做到准确定位,解析效果不尽如人意。测试发现对于存在较多记录碎片和关键点碎片的多记录空闲链表节点,往往只能解析一条记录,甚至无法解析任何一条记录,而且解析结果经常由于记录元组划分的不准确存在乱码现象,因此现有技术对多记录删除数据重组的准确性和全面性均存在问题,无法适于实际应用。
发明内容
本发明所要解决的技术问题是提供一种SQLite空闲链表节点的解析方法,可解决现有技术只能对SQLite数据库文件的单记录删除结构进行解析的问题。
本发明还提供了一种SQLite空闲链表节点的解析装置,以保证上述方法在实际中的应用。
为了解决上述问题,本发明公开了一种SQLite空闲链表节点的解析方法,包括:读取SQLite空闲链表节点;从所述空闲链表节点中查找所有满足预设条件的记录关键点;对上述关键点进行记录重组;
其中,所述记录关键点为4个字节组成的二元组<NFP,FTL>,所述预设条件为:
value(NFP)>addr(NFP)并且value(FTL)∈(0,PSZ-addr(NFP)];
NFP表示指向下一个空闲节点的指针,由2个字节组成;FTL是NFP后面的2个字节,表示该空闲节点的大小;value(NFP)表示NFP指向的位置;
addr(NFP)表示NFP本身的偏移地址;value(FTL)表示该空闲节点的大小;PSZ表示SQLite数据库中数据页的大小。
优选的,所述查找记录关键点的方法具体为:将所述空闲链表节点的偏移地址的初始值设置为0;从该空闲链表节点中的当前偏移地址处开始读取4个字节,判断是否满足上述2个条件,若是,则当前偏移地址位置对应的二元组<NFP,FTL>为记录关键点;当前偏移地址增1,重复上述判断步骤,直至当前偏移地址到达该空闲链表节点的末端。
优选的,还包括对所述所有关键点进行如下处理的步骤:若关键点<NFPi,FTLi>记录重组或记录碎片标记不成功,根据碎片特征调整关键点<NFPi,FTLi>的二元组信息,消除可能存在的关键点碎片,然后进行记录重组或记录碎片标记。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门市美亚柏科信息股份有限公司,未经厦门市美亚柏科信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110443733.9/2.html,转载请声明来源钻瓜专利网。





