著录项信息
专利名称 | 一种嵌入式数据库的数据备份和恢复方法 |
申请号 | CN02145959.2 | 申请日期 | 2002-10-25 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2004-04-28 | 公开/公告号 | CN1492362 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 联想(北京)有限公司 | 申请人地址 | 北京市海淀区上地信息产业基地创业路6号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 联想(北京)有限公司 | 当前权利人 | 联想(北京)有限公司 |
发明人 | 丁刚;孙雅莎;杨柏梁 |
代理机构 | 北京德琦知识产权代理有限公司 | 代理人 | 王丽琴 |
摘要
本发明是一种嵌入式数据库的数据备份和恢复方法,基于嵌入式产品资源少、存储空间少的特性作出。数据备份包括:将数据库备份文件划分为头部信息区、数据区和尾部信息区;将原数据库信息和多个表单信息填充写入数据库备份文件的头部信息区,记载原数据库数据文件和各个表单下每个索引文件在数据库备份文件中的具体位置;在数据库备份文件的数据区中,将原数据库文件中的具体数据存储到由数据库备份文件头部信息区信息指定的位置处;查询数据库数据字典,将数据库文件中各表单的所有索引信息写入数据库备份文件的尾部信息区。数据恢复采用备份方法的逆过程进行。是一种具有原子性操作、基于单文件架构数据组合和拆分技术的数据备份与恢复方法。
1.一种嵌入式数据库的数据备份和恢复方法,其特征在于:
所述的数据备份方法,包括:
A.将数据库备份文件划分为头部信息区、数据区和尾部信息区;
B.将原数据库信息和多个表单信息填充写入数据库备份文件的头部信息 区,记载原数据库数据文件和各个表单下每个索引文件在数据库备份文件中的 具体位置;
C.在数据库备份文件的数据区中,将原数据库文件中的具体数据存储到由 数据库备份文件头部信息区信息指定的位置处;
D.查询数据库数据字典,将数据库文件中各表单的所有索引信息写入数 据库备份文件的尾部信息区;
所述的数据恢复方法,包括:
E.读取记载在数据库备份文件头部信息区的数据库信息和多个表单信息;
F.根据数据文件和各个表单下每个索引文件在数据库备份文件中的具体位 置,从数据库备份文件的数据区读取数据;
G.建立或恢复原数据库数据文件和索引文件,使原数据库信息恢复到数 据库备份时的状态;
H.根据记录在数据库备份文件尾部信息区的所有索引信息将原数据库的 索引信息重新写入数据库数据字典中。
2.根据权利要求1所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于:所述步骤A中的头部信息区存储在所述数据库备份文件的开始位置。
3.根据权利要求1所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于:
所述步骤B中填充写入所述的原数据库信息进一步包括:
b11.填充写入原数据库的路径、当前备份数据库的时间、标志压缩与否的 标志位和原数据库中所含表单个数;
b12.填充写入数据库表单索引文件的数据在备份文件中的偏移量 (tableidx_off)、数据库表单索引文件的数据大小(tableidx_len)、数据库关系 索引文件的数据在备份文件中的偏移量(relate_off)、数据库关系索引文件的数 据大小(relate_len)、数据库查询索引文件的数据在备份文件中的偏移量 (query_off)和数据库查询索引文件的数据大小(query_len);
所述步骤B中填充写入所述的表单信息进一步包括:
b21.依序填充写入每个表单信息,每个表单信息包括表单名、记录该表单 是否有索引的索引标志位、有索引时的索引个数、表单数据文件的数据在备份 文件中的偏移量(Dat_off)、表单数据文件数据的大小(Dat_len),和依序填充 写入该表单下的每个索引文件信息,每个索引文件信息包括索引文件名、该索 引文件在备份文件中的偏移量(Idx_off)和该索引文件在备份文件中的大小 (Idx_len)。
4.根据权利要求3所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于:所述步骤b11前,还根据用户给出的备份文件的路径查找备份文件, 在备份文件不存在时创建备份文件,执行所述步骤b11;在备份文件存在时, 进一步将备份文件的建立时间与原数据库每个表单的数据文件最近的修改时间 进行比较,在备份文件的建立时间新于原数据库任一个表单的数据文件最近的 修改时间时,退出备份过程,否则执行所述步骤b11。
5.根据权利要求3所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于所述步骤b12中的填充写入各项满足:tableidx_off=Dbinfo_Size+ Ntable*Tableinfo_Size,其中,tableidx_off是数据库表单索引文件的数据在备份 文件中的偏移量,Dbinfo_Size是备份文件头部信息区数据库信息结构体大小, Ntable是原数据库表单个数,Tableinfo_Size是备份文件头部信息区一个表单信 息结构体大小;tableidx_len=TableIdx_len,其中,tableidx_len是数据库表单索 引文件的数据大小,TableIdx_Len是原数据库表单索引文件的大小;relate_off= tableidx_off+tableidx_len,其中,relate_off是数据库关系索引文件的数据在备 份文件中的偏移量,tableidx_off是原数据库表单索引文件的数据在备份文件中 的偏移量,tableidx_len是原数据库表单索引文件的数据大小;relate_len= RelateIdx_len,其中,relate_len是数据库关系索引文件的数据大小, RelateIdx_Len是原数据库关系索引文件的大小;query_off=relate_off+ RelateIdx_len,其中,query_off是数据库查询索引文件的数据在备份文件中的 偏移量,relate_off是数据库关系索引文件的数据在备份文件中的偏移量, RelateIdx_Len是原数据库关系索引文件的大小;和,query_len=QueryIdx_Len, 其中query_len是数据库查询索引文件的数据大小,QueryIdx_Len是原数据库 查询索引文件的大小。
6.根据权利要求3所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于所述步骤b21中,填充写入的表单数据文件及索引文件信息满足:Dat_off =query_off+QuerIdx_Len+(X-1)*Tableinfo_Size,其中,Dat_off是第X 个表单的表单数据文件的数据在备份文件中的偏移量,query_off是数据库查询 索引文件的数据在备份文件中的偏移量,QueryIdx_Len是原数据库查询索引文 件的大小,Tableinfo_Size是备份文件头部信息区一个表单信息结构体大小,X 为表单的序号,X为自然数;Dat_len=hDat_len,其中,Dat_len是表单数据文 件数据的大小,tDat_len是该第X个表单的表单数据文件的大小;
Idx_off0=Dat_off+tDat_len,其中,Idx_off0是第一个索引文件在备份文 件中的偏移量,Dat_off是该表单数据文件的数据在备份文件中的偏移量, tDat_Len是第X个表单的表单数据文件大小;第二个索引文件后的索引文件在 备份文件中的偏移量等于其上一个索引文件在备份文件中的偏移量加上其上一 个索引文件在备份文件中的大小;第一个索引文件在备份文件中的大小等于第 一个索引文件在原文件中的大小;第二个索引文件后的索引文件的大小等于其 上一个索引文件在备份文件中的大小。
7.根据权利要求6所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于:所述备份文件头部区表单信息描述部分为每一个表单的描述信息预留 出N个描述其索引的位置,将位置空的索引文件在备份文件中的偏移量 (Dat_off)都置为零,N至少为数据库的所有表单中拥有最多域的表单的域的 个数。
8.根据权利要求1所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于:所述的步骤C是按备份文件数据区的数据存放格式进行存储的,先存 储记录原数据库索引文件的具体数据,依序为表单索引文件的数据、关系索引 文件的数据和查询索引文件的数据,再按顺序存储各个数据库表单数据文件、 索引文件的具体数据,每个数据库表单数据文件、索引文件的具体数据,顺序 为其表单数据文件的数据和该表单的各索引文件的数据。
9.根据权利要求1所述的一种嵌入式数据库的数据备份和恢复方法,其特 征在于:所述步骤D,是按表单名、表单的各个索引文件名依序写入尾部信息 区的,在表单有主索引时,于尾部信息区写入表单主索引名。
10.根据权利要求1所述的一种嵌入式数据库的数据备份和恢复方法,其 特征在于所述步骤G进一步包括:根据备份文件头部区和数据区中记载的数据 库信息恢复数据库的索引文件,和根据备份文件头部区和数据区中记载的表单 信息恢复数据库的表单文件;所述步骤H进一步包括,根据备份文件尾部区中 记载的数据库表单索引信息恢复数据库表单索引文件。
11.根据权利要求1所述的一种嵌入式数据库的数据备份和恢复方法,其 特征在于:在对嵌入式数据库进行数据库备份时,对容易产生高压缩率的数据 文件和索引文件进行压缩处理,对于描述数据库信息的二进制描述代码不作压 缩处理。
技术领域\n本发明涉及一种数据库技术,更确切地说是涉及一种基于类似嵌入式数 据库的数据备份和恢复方法。\n背景技术\n嵌入式系统是一种以应用为中心、以计算机技术为基础的专用计算机系统, 其特点是软硬件可裁剪,并能适于应用系统对功能、可靠性、成本、功耗等的 严格要求,用于实现对其他设备的控制、监视或管理。由于嵌入式系统通常是 面向特定应用的,因而与通用型计算机系统相比具有定制性强的特点。\n现有的采用嵌入式系统的嵌入式产品,包括信息电器类、移动计算设备类、 网络设备类、工控仿真医疗仪器类,如手机、个人数字助理机(PDA)、VCD、 机顶盒、数控机床、路由器、网络家电等。\n嵌入式系统发展中最重要的两方面技术是:数据交换和应用交换。\n嵌入式数据库对嵌入式产品有着十分重要的意义,在基于嵌入式数据库的 应用解决方案中,嵌入式应用是直接使用嵌入式数据库的第一级应用,目前的 嵌入式架构,使嵌入式数据库系统能够和嵌入式操作系统有机地结合在一起, 为应用开发提供有效的本地数据管理手段,同时提供各种定制条件和方法。\n对嵌入式产品数据库的要求是:在访问其他如PC机、数据库服务器等 电子设备的数据时应该畅通无阻;同时,要求其数据可以自由地在嵌入式平 台之间移植。\n嵌入式数据库数据采用的是基于目录结构的多文件数据存储方式,表单 中的数据记录和索引分别存放在不同的文件中,它们存放在同一个目录下从 而表示这些文件同属于一个表单。这些表单由一个全局的表单索引文件进行 管理,以方便对数据库表单的查找,这些表单目录和表单索引文件、关系索 引文件、日志目录等其他索引信息文件共同组成了一个嵌入式数据库整体。\n由于嵌入式设备对软件运行有比较高的稳定性与可靠性要求,数据的操作 又随时会产生错误或丢失,为保证嵌入式产品的稳定性,对保存在嵌入式产品 中的数据进行管理并采用相应的备份与恢复是提高稳定与可靠性的一个好方 法。\n目前已有很多种嵌入式数据库产品,提供的功能也各有特色,但缺少对数 据安全性的设计,如“人大小金灵”数据库等就没有提供数据备份与恢复的操作。 可以说现存的各种嵌入式数据库对数据备份与恢复方面的安全性处理涉及很 少,针对类似嵌入式数据库这种基于多文件结构的数据库系统的备份与恢复方 法涉及得就更少。\n由于嵌入式设备系统资源有限,不能提供较大的数据备份区,也不能提供 给数据备份与恢复操作过多的CPU和内存等各种资源,因此,需要在尽量少的 占用系统资源的前提下设计出速度较快、维护方便的数据库备份与恢复方法。 目前,一般的数据备份与恢复方法并没有多地提到嵌入式设备,即这些方法在 嵌入式设备中的适用性不强。\n发明内容\n本发明的目的是设计一种嵌入式数据库的数据备份和恢复方法,在尽量 少的占用系统资源的前提下,设计出速度较快,维护方便的、基于多文件结 构的数据库系统的数据备份与恢复方法,以提高嵌入式设备数据级的安全 性。\n实现本发明目的的技术方案是这样的:一种嵌入式数据库的数据备份和恢 复方法,其特征在于:\n所述的数据备份方法,包括:\nA.将数据库备份文件划分为头部信息区、数据区和尾部信息区;\nB.将原数据库信息和多个表单信息填充写入数据库备份文件的头部信息 区,记载原数据库数据文件和各个表单下每个索引文件在数据库备份文件中的 具体位置;\nC.在数据库备份文件的数据区中,将原数据库文件中的具体数据存储到由 数据库备份文件头部信息区信息指定的位置处;\nD.查询数据库数据字典,将数据库文件中各表单的所有索引信息写入数 据库备份文件的尾部信息区;\n所述的数据恢复方法,包括:\nE.读取记载在数据库备份文件头部信息区的数据库信息和多个表单信息;\nF.根据数据文件和各个表单下每个索引文件在数据库备份文件中的具体位 置,从数据库备份文件的数据区读取数据;\nG.建立或恢复原数据库数据文件和索引文件,使原数据库信息恢复到数 据库备份时的状态;\nH.根据记录在数据库备份文件尾部信息区的所有索引信息将原数据库 的索引信息重新写入数据库数据字典中。\n本发明针对嵌入式数据库这种基于多文件结构的数据库系统,设计了由 文件目录聚合成单一备份文件的方法,以及根据这个单一备份文件头部描述 信息将其拆分成多个文件和目录的方法,和适合嵌入式系统的备份文件寻址 方法,可有效减少备份恢复过程所占用的系统资源,提高运算速度的安全性。\n本发明的基于嵌入式数据库的数据备份与恢复方法,既满足基于文件存 储模式的嵌入式数据库数据备份与恢复的需要,同时又能适应嵌入式设备资 源少、存储空间小等的系统特性,是一种易于维护、高效、具有原子性操作 性和基于单文件构架数据组合和拆分技术的数据备份与恢复方法。\n本发明方法结合嵌入式数据库数据的存储方式,所设计的数据在文件中 的存储格式合理,可减少备份数据文件的垃圾空间、加快计算速度,提高嵌 入式数据库的运行效率和安全性。\n附图说明\n图1是实施例备份文件头部信息填充流程框图;\n图2是实施例备份文件数据区数据填充流程与备份文件尾部信息填充 流程框图;\n图3是本发明数据库恢复流程缩略框图。\n具体实施方式\n对于嵌入式数据库来说,数据备份操作的原子性是非常重要的一个环节, 在数据备份过程中任何一个环节出错,都要回溯到数据的原始状态重新操作, 以保证数据的完整性。基于该点考虑,应采用单文件的形式对数据进行备份, 以便在备份出现异常时能方便地删除错误的备份文件。\n进行数据备份的目的是为了保存数据,以便在后续发生的对数据库的错误 操作时进行数据恢复时使用。对备份的数据不进行直接操作,用户也不必了解 备份文件的实际存储方式,因此在数据库备份文件中对备份数据库的信息进行 记录时采用二进制形式,这种形式可减少数据存储和读取以及进行数据解析的 时间,节约备份文件所占用的磁盘空间。\n在进行一次数据备份时,必须对备份时间进行记录,即对备份文件进行时 间戳处理,以方便用户对同一数据库进行多次备份、比较备份文件的版本以及 在进行恢复时选择备份文件。\n采用压缩的方式可以节约磁盘空间,但会加长备份时间和CPU的负荷,并 增大对能源的耗费,而对于不同的嵌入式设备来说,对磁盘或CPU的限制是各 有不同的。为了增强对不同嵌入式设备的适应性,嵌入式数据库的备份系统采 用两者结合的局部压缩方式,针对数据库的数据特征,在对数据库备份时,对 容易产生高压缩率的数据文件和索引文件进行压缩处理,而对于描述数据库信 息的二进制描述代码则不作压缩处理。这样做不但能有效减小备份文件所占用 的磁盘空间,又相对完全压缩方式减少了CPU运算。\n由于嵌入式数据库的数据存储方式采用多文件的数据存储,而备份数据则 是备份在同一数据文件中,为了在恢复数据库文件时准确拆分备份文件的数据, 在备份文件的头部要有一个详细描述备份文件数据块的信息,标明备份文件中 的每一数据块都代表什么意思,并将这些信息写在备份文件的头部,以方便数 据库的恢复。\n由于嵌入式数据库采用了数据字典方式记录数据库中表单的索引信息,而 数据库本身并没有记录这些内容,因此必须查找数据字典,将与这个数据库有 关的所有索引信息摘录到备份文件中,并在恢复数据库时将这些索引信息恢复。 由于数据库的索引个数并不固定,因此这部分信息的大小也不固定,如果将这 部分内容放到备份数据的头部,则数据库数据文件将无法被准确定位到备份文 件中,因此将这部分内容放到备份文件的尾部。\n最后,在恢复数据库时,由于数据库结构可能已经被破坏,必须将数据字 典中有关这个数据库的所有字典信息进行恢复,以便使得数据字典中的信息与 原数据库一致。\n以上各点是本发明基于嵌入式数据库数据备份与恢复的关键技术分析。\n根据以上所述,本发明为嵌入式数据库数据备份文件制定了其内部格式, 由头部信息区、数据区和尾部信息区三部分组成。\n数据库数据备份文件的头部信息区存储在备份文件的开始位置,用于描述 源嵌入式数据库的架构信息以及源嵌入式数据库的数据在备份文件中的具体存 储偏移量和数据块的大小,即数据库信息。通过该部分头部信息,程序可以恢 复源嵌入式数据库的文件目录架构,并快速定位嵌入式数据库文件的具体数据。\n由于嵌入式数据库可能存在多个表单,每个表单又可能存在多个索引文件, 则表单信息必须记录所有表单在备份文件中位置的具体信息,而每一个表单信 息中必须记录这个表单所有索引文件在备份文件中位置的具体信息。\n因此备份文件的头部包括一个数据库信息、多个表单信息及各表单下的多 个索引信息。\n数据库(db)头部信息区包括的数据库信息的内容如下表1所示,用数据 库信息描述及其长度两部分分别说明:\n 数据库信息描述 长度 Dbpath:路径,记录这个备份文件备份的是哪个数据库,以便在 恢复数据库时能正确地找到数据库的位置 256字 节 Timestamp:时戳,记录当前备份数据库的备份时间,将这个时 间和原数据库各个文件的修改时间进行比较,如果发现原数据库 较新,就可以进行重新备份 8字节 Comp_flag:压缩标志,1表示数据是经过压缩的,0表示没有经 过压缩 2位 tablecount:记录原数据库的表单个数,通过它可以设置遍历备 份文件的表单信息缓冲个数和大小 4字节 tableidx_off:记录数据库表单索引文件的数据在备份文件中的偏 移量,通过这个偏移量可以很快定位到备份文件的相应位置,找 到相应的数据 4字节 tableidx_len:记录数据库表单索引文件数据的大小,通过这个数 据可以设置提取表单索引文件数据的缓冲区大小 4字节 relate_off:记录数据库关系索引文件的数据在备份文件中的偏移 量,通过这个偏移量可以很快定位到备份文件的相应位置,找到 相应的数据 4字节 relate_len:记录数据库关系索引文件数据的大小,通过这个数据 可以设置提取关系索引文件数据的缓冲区大小 4字节 query_off:记录数据库查询索引文件的数据在备份文件中的偏移 量,通过这个偏移量可以很快定位到备份文件的相应位置,找到 相应的数据 4字节 query_len:记录数据库查询索引文件数据的大小,通过这个数据 可以设置提取查询索引文件数据的缓冲 4字节\n表1\n由于嵌入式数据库每个表单的最大域个数为20,而这20个域都可能有索 引。因此,备份文件头部表单信息描述部分为每一个表单的描述信息预留出20 个描述其索引的位置,这些位置足以容纳表单中所有索引信息。下面列出一个 表单描述信息的样例,如果一个数据库存在N个表单,则在备份文件中存在N 个这样的表单描述信息。\n数据库(db)头部信息区包括的表单信息的内容如下表2所示,用表单信 息描述及其长度两部分分别说明:\n 表单信息描述 长度\n Tablename:表单名,记录这个表单信息记录的是原数 据库的哪个表单 20字节 Has_idx:索引标志位,记录这个表单是否有索引 4字节 Idx_count:索引个数,如果这个表单有索引,则用此项 记录索引个数 4字节 Dat_off:记录表单数据文件的数据在备份文件中的偏移 量,通过这个偏移量可以很快定位到备份文件的相应位 置,找到相应的数据 4字节 Dat_len:记录表单数据文件数据的大小,通过这个数据 可以设置提取数据文件数据的缓冲区大小 4字节 Idxname0:索引名1,记录表单第1个索引文件的名字, 方便数据恢复 20字节 Idx_off0:索引1在备份文件中的偏移量,通过这个偏 移量可以很快定位到备份文件的相应位置,找到相应的 数据 4字节 Idx_len0:索引1在备份文件中的大小,通过这个数据 可以设置提取索引文件数据的缓冲 4字节 ... Idxname19:索引名20,记录表单第20个索引文件名字, 方便数据恢复 20字节 Idx_off19:索引20在备份文件中的偏移量,通过这个 偏移量可以很快定位到备份文件的相应位置,找到相应 的数据 4字节 Idx_len19:索引20在备份文件中的大小,通过这个数 据可以设置提取索引文件数据的缓冲 4字节\n表2\n表中的省略号表示索引1至18的Idxname:索引名,Idx_off:索引在备份 文件中的偏移量,和Idx_len:索引在备份文件中的大小。\n备份文件的数据区存储嵌入式数据库文件中的具体数据,这些数据在备份 文件中的位置和大小已经通过头部信息区确定,它们的位置不能随意调换。\n备份文件数据区的数据存放形式如下表3所示,用数据描述及其大小两部 分分别说明:\n 数据描述 大小 表单索引文件的数据 由头部信息指定 关系索引文件的数据 由头部信息指定\n 查询索引文件的数据 由头部信息指定 表单1数据文件的数据 由头部信息指定 表单1索引文件1的数据 由头部信息指定 ... ... 表单1索引文件N的数据 由头部信息指定 表单2的具体数据 ... 表单M的具体数据\n表3\n表中的2至4行部分,表示用于记录原嵌入式数据库索引文件的具体数据; 5至8行部分表示用于记录嵌入式数据库第一个表单数据文件、索引文件的具 体数据,共有N个索引文件的数据;9至11行表示用于记录嵌入式数据库第二 至第M个表单数据文件、索引文件的具体数据,可各有最大值为N的多个索 引文件的数据,M与N可以相同也可以不同。\n根据以上内容可知,由于嵌入式数据库表单索引文件大小的不确定性,无 法在备份文件中划分出固定的区域来存放索引信息,因此将嵌入式数据库每个 表单的索引信息写到备份文件的末尾。备份文件尾部信息区一个表单索引信息 的具体存储形式用下表4列出,用数据描述及其大小两部分分别说明:\n 数据描述 大小 Tablename:表单名,记录这个索引信息描述的是哪个表单的 索引信息 20字节 Indexname[0]:记录表单第1个索引名 20字节 ... Indexname[N-1]:记录表单第N个索引名 20字节 Uniquename[0]:记录表单第1个unique(唯一)索引名 20字节 ... Uniquename[N-1]:记录表单第N个unique(唯一)索引名 20字节 Pkeyname:如果表单有主索引的话,该项用于记录表单主索 20字节\n 引名\n表4\n在进行具体的嵌入式数据库备份时,由于采用压缩技术的备份和不采用压 缩技术的备份在整个备份/恢复过程中的差异很小,故只对不采用压缩技术的备 份过程进行说明。数据库备份从整体上说可分为五个步骤进行:\n第一步:备份程序查找用户给出的备份文件路径,如果备份文件不存在, 则建立备份文件,跳到第二步继续执行;如果备份文件存在,则将备份文件的 创建时间与原数据库每个表单中数据文件的最近修改时间进行比较,如果备份 文件的创建时间比原数据库任一表单数据文件的最近修改时间都新,则说明从 上次备份之后,原数据库没有做过任何改动,则退出备份操作,否则继续执行;\n第二步:备份程序填充备份文件头部信息区中的数据库信息部分(可对照 表1),并写入备份文件中,包括原数据库的路径、当前的时间、标志压缩标志 位和原数据库中所含表单个数,然后填充tableidx_off、tableidx_len、relate_off、 relate_len、query_off、query_len六项,这六项数据的算法公式如下:\n先设:\nDbinfo_Size:备份文件头部信息区数据库信息结构体大小;\nTableinfo_Size:备份文件头部信息区一个表单信息结构体大小;\nNtable:原数据库表单个数;\nTableIdx_Len:原数据库表单索引文件的大小;\nRelateIdx_Len:原数据库关系索引文件的大小;\nQueryIdx_Len:原数据库查询索引文件的大小。\n根据嵌入式数据库备份文件内部格式描述(对照表3),则:\ntableidx_off=Dbinfo_Size+Ntable*Tableinfo_Size(数据库表单索引文件 的数据在备份文件中的偏移量(tableidx_off)等于备份文件头部信息区数据库 信息结构体大小(Dbinfo_Size)加上原数据库表单个数(Ntable)与备份文件 头部信息区一个表单信息结构体大小(Tableinfo_Size)的乘积);\ntableidx_len=TableIdx_len(数据库表单索引文件的数据大小(tableidx_len) 等于原数据库表单索引文件的大小(TableIdx_Len));\nrelate_off=tableidx_off+tableidx_len(数据库关系索引文件的数据在备份 文件中的偏移量(relate_off)等于原数据库表单索引文件的数据在备份文件中 的偏移量(tableidx_off)加上原数据库表单索引文件的数据大小(tableidx_len));\nrelate_len=RelateIdx_len(数据库关系索引文件的数据大小(relate_len)等 于原数据库关系索引文件的大小(RelateIdx_Len));\nquery_off=relate_off+RelateIdx_len(数据库查询索引文件的数据在备份文 件中的偏移量(query_off)等于数据库关系索引文件的数据在备份文件中的偏 移量(relate_off)加上原数据库关系索引文件的大小(RelateIdx_Len));\nquery_len=QueryIdx_Len(数据库查询索引文件的数据大小(query_len) 等于原数据库查询索引文件的大小(QueryIdx_Len))。\n第三步:备份程序对每个表单信息(参照表2)进行填充,并写入备份文 件,第X个表单的表单信息Dat_off、Dat_len、Idx_off0、Idx_len0、Idx_off1、 Idx_len1、...、Idx_off19、Idx_len19的计算公式为:\n设这个原数据库第X个表单共有3个索引文件,则:\ntDat_Len:表单数据文件大小;\ntIdx0_Len:第一个索引文件的大小;\ntIdx1_Len:第二个索引文件的大小;\ntIdx2_Len:第三个索引文件的大小。\n根据嵌入式数据库备份文件内部格式(参照表3)描述,则:\nDat_off=query_off+QueryIdx_Len+(X-1)*Tableinfo_Size(M为表单 个数,表单数据文件的数据在备份文件中的偏移量(Dat_off),等于数据库查询 索引文件的数据在备份文件中的偏移量(query_off)加上原数据库查询索引文 件的大小(QueryIdx_Len)加上(X-1)倍的备份文件头部信息区一个表单信息 结构体大小(Tableinfo_Size));\nDat_len=tDat_len(表单数据文件数据的大小(Dat_len)等于该第X个表 单的表单数据文件的大小(tDat_Len));\nIdx_off0=Dat_off+tDat_len第一个索引文件在备份文件中的偏移量 (Idx_off)等于该表单数据文件的数据在备份文件中的偏移量(Dat_off)加上 第X个表单的表单数据文件大小(Dat_Len));\nIdx_len0=tIdx0_Len(第一个索引文件在备份文件中的大小(Idx_len)等 于第一个索引文件在原文件中的大小));\nIdx_off1=Idx_off0+tIdx0_Len\nIdx_len1=tIdx0_Len\nIdx_off2=Idx_off1+tIdx1_Len\nIdx_len2=tIdx1_Len(第二个索引文件后的索引文件在备份文件中的偏移 量(Idx_off)等于其上一个索引文件在备份文件中的偏移量(Idx_off)加上其 上一个索引文件在备份文件中的大小;第二个索引文件后的索引文件的大小等 于其上一个索引文件在备份文件中的大小)。式中t表示要提取数据的表单之前 的那个表单,因此可以通过t这个表单加上一定的偏移量来得到所要的数据。\n由于这个表单只有三个索引文件(0-2),则Idx_off3、Idx_len3到Idx_off19、 Idx_len19都置为0,表示这个表单从第三个域开始没有索引,则在备份文件头 部的表单信息描述中,从第三个域开始将偏移量信息都置为零,即相应域没有 索引文件;\n第四步:备份程序根据嵌入式数据库备份文件内部格式描述(表3),依次 将原数据库各索引文件、数据文件数据写入备份文件;\n第五步:备份程序查询嵌入式数据库数据字典,从数据字典中读出原数据 库所有表单的索引信息和约束信息,并根据嵌入式数据库备份文件内部格式(表 3)描述,将各表单的索引信息利用与步骤三相同的方法,依次写入备份文件的 末尾,完成一次嵌入式数据库备份操作。\n相对于数据库备份方法,嵌入式数据库的恢复方法比较简单。由嵌入式数 据库恢复程序从备份数据库头部信息区确定原数据库目录文件架构;根据头部 信息对原数据库每个索引文件、数据文件在备份文件中的具体位置描述,从备 份文件的数据区读取数据,建立或恢复原有的数据库索引、数据文件,使原数 据库信息恢复到数据库备份时的状态;最后,嵌入式数据库恢复程序根据记录 在备份文件末尾索引区的索引信息,将原数据库的索引信息重新写入嵌入式数 据库数据字典中即可。这样嵌入式数据库将备份文件中的数据等信息重新写入 了原数据库,使得原数据库的数据信息、索引信息、数据字典信息都恢复到了 原数据库进行备份时的状态,保证了数据的完整性和一致性。\n下面结合一个实施例及附图1、2、3,进一步说明本发明的备份与恢复方 法。假设一个数据库db包括两个表单t1和t2,表单t1有三个域(field),其中 域field1和field2有索引,即存在索引文件;表单t2有四个域,其中域field3 有索引。对这个数据库的备份流程由图1、图2给出,对这个数据库的恢复流 程由图3给出。\n参见图1,图中示出备份文件头部信息填充流程,包括:\n步骤101至107,完成备份文件头部信息区数据库信息的填充(实现表1 结构),其中步骤101至104,按步骤将备份数据库db的路径信息(dbpath)、 本地时间(timestamp)、压缩标志(Comp_flag)和表单个数(tablecount)填充 到备份文件的头部;步骤105至107,通过前述第二步的公式将计算后的表单 索引文件位置信息(tableidx_off,tableidx_len)、关系索引文件位置信息 (relate_off,relate_len)及查询索引文件位置信息(query_off,query_len)填 充到备份文件的头部,位置信息包括各文件的数据在备份文件中的偏移量及数 据大小;\n步骤108至115,完成备份文件头部信息区表单信息的填充与设置(实现 表2结构),其中步骤108至110,按步骤记录表单t1的表单名(Tablename)、 设置索引标志位(Has_idx)和记录索引个数(Idx_count);步骤111,通过前述 第三步的公式将计算后的表单t1的表单数据文件位置信息(Dat_off,Dat_len) 填充到备份文件的头部,位置信息包括表单数据文件的数据在备份文件中的偏 移量及数据大小;步骤111’,为表单t1预留出20个描述其索引文件的位置; 步骤112至113,按步骤先后记录表单t1的索引文件1、索引文件2的索引名 (Idxname1)和通过前述第三步的公式将计算后的索引文件1、索引文件2的 位置信息(Idx_off0,Idx_len0、Idx_off1,Idx_len1)填充到备份文件的头部, 位置信息包括索引文件的数据在备份文件中的偏移量及数据大小;步骤113’, 将索引文件3至20的偏移量置为零;步骤114,通过前述第三步的公式将计算 后的表单t2的表单数据文件位置信息(Dat_off,Dat_len)填充到备份文件的头 部,位置信息包括表单数据文件的数据在备份文件中的偏移量及数据大小;步 骤114’,为表单t2预留出20个描述其索引文件的位置;步骤115,记录表单t2 的索引文件3的索引名(Idxname1)和通过前述第三步的公式将计算后的索引 文件3的位置信息(Idx_off2,Idx_len2)填充到备份文件的头部,位置信息包 括索引文件的数据在备份文件中的偏移量及数据大小;步骤115’,将索引文件 1、2和4至20的偏移量置为零。\n参见图2,接图1操作,在完成备份文件头部信息填充流程后,通过步骤 201至208进行备份文件数据区数据填充流程(按表3结构),通过步骤209至 214进行备份文件尾部信息填充流程(按表4结构)。\n步骤201至203,根据头部信息按步骤将数据库表单索引文件中的数据、 数据库关系索引文件中的数据、数据库查询索引文件中的数据填充到备份文件 数据区,即记录原数据库索引文件的具体数据;\n步骤204至206,根据头部信息将表单t1数据文件中的数据填充到备份文 件数据区的相应位置,和先后将表单t1索引文件1、索引文件2中的数据填充 到备份文件数据区的相应位置;\n步骤207至208,根据头部信息将表单t2数据文件中的数据填充到备份文 件数据区的相应位置,和将表单t2索引文件3中的数据填充到备份文件数据区 的相应位置;\n步骤209至211,将表单t1的表单名填充到备份文件尾部的相应位置,和 将表单t1的索引文件1、索引文件2的文件名填充到备份文件尾部的相应位置;\n步骤212至213,将表单t2的表单名填充到备份文件尾部的相应位置,和 将表单t2的索引文件3的文件名填充到备份文件尾部的相应位置;\n步骤214,至此完成备份,关闭备份文件。\n参见图3,数据库恢复流程是备份流程的逆过程,不再详述,图中仅给出 恢复的缩略过程。包括:\n步骤301至303,从备份文件头部读取备份数据库信息,判断原数据库是 否存在,如果存在,则删除原数据库执行步骤304,如果不存在则直接执行步 骤304;\n步骤304,根据数据库信息建立原数据库,这时的这个数据库是空数据库;\n步骤305至307,按步骤先后根据备份文件头部区与数据区中记载的数据 库信息恢复数据库的索引文件、根据备份文件头部区与数据区中记载的表单信 息恢复数据库的表单,和根据备份文件尾部区信息记载的数据库表单索引信息 恢复数据库表单索引;\n步骤308,至此完成恢复,关闭备份文件。\n本发明的数据库备份与恢复方法,是针对嵌入式数据库数据量少、安全性 要求高等特性,同时针对嵌入式设备只有有限的系统资源的情况,采用基于文 件级别的安全算法,同时加强操作的原子性而设计的。其算法易于维护、安全 性高、速度快、用户操作简便。使得采用本发明方法的嵌入式数据库与同类产 品相比,在安全性方面占有很大的优势,提高了嵌入式数据库与同类产品的竞 争力。同时,本发明的数据备份与恢复方法对系统平台基本没有要求,对CPU、 内存的要求低,可以方便地移植到其他嵌入式应用程序中,因而有比较广泛的 应用前景。
法律信息
- 2021-10-12
未缴年费专利权终止
IPC(主分类): G06F 17/30
专利号: ZL 02145959.2
申请日: 2002.10.25
授权公告日: 2008.07.02
- 2008-07-02
- 2004-06-30
- 2004-04-28
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
1994-09-07
|
1993-12-08
| | |
2
| | 暂无 |
1999-06-07
| | |
3
| | 暂无 |
2000-07-27
| | |
4
| |
2001-10-17
|
2001-04-09
| | |
5
| |
1994-09-28
|
1993-12-08
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |