CN100399325C - 一种嵌入式数据库的数据备份和恢复方法 - Google Patents
一种嵌入式数据库的数据备份和恢复方法 Download PDFInfo
- Publication number
- CN100399325C CN100399325C CNB021459592A CN02145959A CN100399325C CN 100399325 C CN100399325 C CN 100399325C CN B021459592 A CNB021459592 A CN B021459592A CN 02145959 A CN02145959 A CN 02145959A CN 100399325 C CN100399325 C CN 100399325C
- Authority
- CN
- China
- Prior art keywords
- data
- file
- database
- backup
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Abstract
本发明是一种嵌入式数据库的数据备份和恢复方法,基于嵌入式产品资源少、存储空间少的特性作出。数据备份包括:将数据库备份文件划分为头部信息区、数据区和尾部信息区;将原数据库信息和多个表单信息填充写入数据库备份文件的头部信息区,记载原数据库数据文件和各个表单下每个索引文件在数据库备份文件中的具体位置;在数据库备份文件的数据区中,将原数据库文件中的具体数据存储到由数据库备份文件头部信息区信息指定的位置处;查询数据库数据字典,将数据库文件中各表单的所有索引信息写入数据库备份文件的尾部信息区。数据恢复采用备份方法的逆过程进行。是一种具有原子性操作、基于单文件架构数据组合和拆分技术的数据备份与恢复方法。
Description
技术领域
本发明涉及一种数据库技术,更确切地说是涉及一种基于类似嵌入式数据库的数据备份和恢复方法。
背景技术
嵌入式系统是一种以应用为中心、以计算机技术为基础的专用计算机系统,其特点是软硬件可裁剪,并能适于应用系统对功能、可靠性、成本、功耗等的严格要求,用于实现对其他设备的控制、监视或管理。由于嵌入式系统通常是面向特定应用的,因而与通用型计算机系统相比具有定制性强的特点。
现有的采用嵌入式系统的嵌入式产品,包括信息电器类、移动计算设备类、网络设备类、工控仿真医疗仪器类,如手机、个人数字助理机(PDA)、VCD、机顶盒、数控机床、路由器、网络家电等。
嵌入式系统发展中最重要的两方面技术是:数据交换和应用交换。
嵌入式数据库对嵌入式产品有着十分重要的意义,在基于嵌入式数据库的应用解决方案中,嵌入式应用是直接使用嵌入式数据库的第一级应用,目前的嵌入式架构,使嵌入式数据库系统能够和嵌入式操作系统有机地结合在一起,为应用开发提供有效的本地数据管理手段,同时提供各种定制条件和方法。
对嵌入式产品数据库的要求是:在访问其他如PC机、数据库服务器等电子设备的数据时应该畅通无阻;同时,要求其数据可以自由地在嵌入式平台之间移植。
嵌入式数据库数据采用的是基于目录结构的多文件数据存储方式,表单中的数据记录和索引分别存放在不同的文件中,它们存放在同一个目录下从而表示这些文件同属于一个表单。这些表单由一个全局的表单索引文件进行管理,以方便对数据库表单的查找,这些表单目录和表单索引文件、关系索引文件、日志目录等其他索引信息文件共同组成了一个嵌入式数据库整体。
由于嵌入式设备对软件运行有比较高的稳定性与可靠性要求,数据的操作又随时会产生错误或丢失,为保证嵌入式产品的稳定性,对保存在嵌入式产品中的数据进行管理并采用相应的备份与恢复是提高稳定与可靠性的一个好方法。
目前已有很多种嵌入式数据库产品,提供的功能也各有特色,但缺少对数据安全性的设计,如“人大小金灵”数据库等就没有提供数据备份与恢复的操作。可以说现存的各种嵌入式数据库对数据备份与恢复方面的安全性处理涉及很少,针对类似嵌入式数据库这种基于多文件结构的数据库系统的备份与恢复方法涉及得就更少。
由于嵌入式设备系统资源有限,不能提供较大的数据备份区,也不能提供给数据备份与恢复操作过多的CPU和内存等各种资源,因此,需要在尽量少的占用系统资源的前提下设计出速度较快、维护方便的数据库备份与恢复方法。目前,一般的数据备份与恢复方法并没有多地提到嵌入式设备,即这些方法在嵌入式设备中的适用性不强。
发明内容
本发明的目的是设计一种嵌入式数据库的数据备份和恢复方法,在尽量少的占用系统资源的前提下,设计出速度较快,维护方便的、基于多文件结构的数据库系统的数据备份与恢复方法,以提高嵌入式设备数据级的安全性。
实现本发明目的的技术方案是这样的:一种嵌入式数据库的数据备份和恢复方法,其特征在于:
所述的数据备份方法,包括:
A.将数据库备份文件划分为头部信息区、数据区和尾部信息区;
B.将原数据库信息和多个表单信息填充写入数据库备份文件的头部信息区,记载原数据库数据文件和各个表单下每个索引文件在数据库备份文件中的具体位置;
C.在数据库备份文件的数据区中,将原数据库文件中的具体数据存储到由数据库备份文件头部信息区信息指定的位置处;
D.查询数据库数据字典,将数据库文件中各表单的所有索引信息写入数据库备份文件的尾部信息区;
所述的数据恢复方法,包括:
E.读取记载在数据库备份文件头部信息区的数据库信息和多个表单信息;
F.根据数据文件和各个表单下每个索引文件在数据库备份文件中的具体位置,从数据库备份文件的数据区读取数据;
G.建立或恢复原数据库数据文件和索引文件,使原数据库信息恢复到数据库备份时的状态;
H.根据记录在数据库备份文件尾部信息区的所有索引信息将原数据库的索引信息重新写入数据库数据字典中。
本发明针对嵌入式数据库这种基于多文件结构的数据库系统,设计了由文件目录聚合成单一备份文件的方法,以及根据这个单一备份文件头部描述信息将其拆分成多个文件和目录的方法,和适合嵌入式系统的备份文件寻址方法,可有效减少备份恢复过程所占用的系统资源,提高运算速度的安全性。
本发明的基于嵌入式数据库的数据备份与恢复方法,既满足基于文件存储模式的嵌入式数据库数据备份与恢复的需要,同时又能适应嵌入式设备资源少、存储空间小等的系统特性,是一种易于维护、高效、具有原子性操作性和基于单文件构架数据组合和拆分技术的数据备份与恢复方法。
本发明方法结合嵌入式数据库数据的存储方式,所设计的数据在文件中的存储格式合理,可减少备份数据文件的垃圾空间、加快计算速度,提高嵌入式数据库的运行效率和安全性。
附图说明
图1是实施例备份文件头部信息填充流程框图;
图2是实施例备份文件数据区数据填充流程与备份文件尾部信息填充流程框图;
图3是本发明数据库恢复流程缩略框图。
具体实施方式
对于嵌入式数据库来说,数据备份操作的原子性是非常重要的一个环节,在数据备份过程中任何一个环节出错,都要回溯到数据的原始状态重新操作,以保证数据的完整性。基于该点考虑,应采用单文件的形式对数据进行备份,以便在备份出现异常时能方便地删除错误的备份文件。
进行数据备份的目的是为了保存数据,以便在后续发生的对数据库的错误操作时进行数据恢复时使用。对备份的数据不进行直接操作,用户也不必了解备份文件的实际存储方式,因此在数据库备份文件中对备份数据库的信息进行记录时采用二进制形式,这种形式可减少数据存储和读取以及进行数据解析的时间,节约备份文件所占用的磁盘空间。
在进行一次数据备份时,必须对备份时间进行记录,即对备份文件进行时间戳处理,以方便用户对同一数据库进行多次备份、比较备份文件的版本以及在进行恢复时选择备份文件。
采用压缩的方式可以节约磁盘空间,但会加长备份时间和CPU的负荷,并增大对能源的耗费,而对于不同的嵌入式设备来说,对磁盘或CPU的限制是各有不同的。为了增强对不同嵌入式设备的适应性,嵌入式数据库的备份系统采用两者结合的局部压缩方式,针对数据库的数据特征,在对数据库备份时,对容易产生高压缩率的数据文件和索引文件进行压缩处理,而对于描述数据库信息的二进制描述代码则不作压缩处理。这样做不但能有效减小备份文件所占用的磁盘空间,又相对完全压缩方式减少了CPU运算。
由于嵌入式数据库的数据存储方式采用多文件的数据存储,而备份数据则是备份在同一数据文件中,为了在恢复数据库文件时准确拆分备份文件的数据,在备份文件的头部要有一个详细描述备份文件数据块的信息,标明备份文件中的每一数据块都代表什么意思,并将这些信息写在备份文件的头部,以方便数据库的恢复。
由于嵌入式数据库采用了数据字典方式记录数据库中表单的索引信息,而数据库本身并没有记录这些内容,因此必须查找数据字典,将与这个数据库有关的所有索引信息摘录到备份文件中,并在恢复数据库时将这些索引信息恢复。由于数据库的索引个数并不固定,因此这部分信息的大小也不固定,如果将这部分内容放到备份数据的头部,则数据库数据文件将无法被准确定位到备份文件中,因此将这部分内容放到备份文件的尾部。
最后,在恢复数据库时,由于数据库结构可能已经被破坏,必须将数据字典中有关这个数据库的所有字典信息进行恢复,以便使得数据字典中的信息与原数据库一致。
以上各点是本发明基于嵌入式数据库数据备份与恢复的关键技术分析。
根据以上所述,本发明为嵌入式数据库数据备份文件制定了其内部格式,由头部信息区、数据区和尾部信息区三部分组成。
数据库数据备份文件的头部信息区存储在备份文件的开始位置,用于描述源嵌入式数据库的架构信息以及源嵌入式数据库的数据在备份文件中的具体存储偏移量和数据块的大小,即数据库信息。通过该部分头部信息,程序可以恢复源嵌入式数据库的文件目录架构,并快速定位嵌入式数据库文件的具体数据。
由于嵌入式数据库可能存在多个表单,每个表单又可能存在多个索引文件,则表单信息必须记录所有表单在备份文件中位置的具体信息,而每一个表单信息中必须记录这个表单所有索引文件在备份文件中位置的具体信息。
因此备份文件的头部包括一个数据库信息、多个表单信息及各表单下的多个索引信息。
数据库(db)头部信息区包括的数据库信息的内容如下表1所示,用数据库信息描述及其长度两部分分别说明:
数据库信息描述 | 长度 |
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字节 |
表1
由于嵌入式数据库每个表单的最大域个数为20,而这20个域都可能有索引。因此,备份文件头部表单信息描述部分为每一个表单的描述信息预留出20个描述其索引的位置,这些位置足以容纳表单中所有索引信息。下面列出一个表单描述信息的样例,如果一个数据库存在N个表单,则在备份文件中存在N个这样的表单描述信息。
数据库(db)头部信息区包括的表单信息的内容如下表2所示,用表单信息描述及其长度两部分分别说明:
表单信息描述 | 长度 |
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字节 |
表2
表中的省略号表示索引1至18的Idxname:索引名,Idx_off:索引在备份文件中的偏移量,和Idx_len:索引在备份文件中的大小。
备份文件的数据区存储嵌入式数据库文件中的具体数据,这些数据在备份文件中的位置和大小已经通过头部信息区确定,它们的位置不能随意调换。
备份文件数据区的数据存放形式如下表3所示,用数据描述及其大小两部分分别说明:
数据描述 | 大小 |
表单索引文件的数据 | 由头部信息指定 |
关系索引文件的数据 | 由头部信息指定 |
查询索引文件的数据 | 由头部信息指定 |
表单1数据文件的数据 | 由头部信息指定 |
表单1索引文件1的数据 | 由头部信息指定 |
... | ... |
表单1索引文件N的数据 | 由头部信息指定 |
表单2的具体数据 | |
... | |
表单M的具体数据 |
表3
表中的2至4行部分,表示用于记录原嵌入式数据库索引文件的具体数据;5至8行部分表示用于记录嵌入式数据库第一个表单数据文件、索引文件的具体数据,共有N个索引文件的数据;9至11行表示用于记录嵌入式数据库第二至第M个表单数据文件、索引文件的具体数据,可各有最大值为N的多个索引文件的数据,M与N可以相同也可以不同。
根据以上内容可知,由于嵌入式数据库表单索引文件大小的不确定性,无法在备份文件中划分出固定的区域来存放索引信息,因此将嵌入式数据库每个表单的索引信息写到备份文件的末尾。备份文件尾部信息区一个表单索引信息的具体存储形式用下表4列出,用数据描述及其大小两部分分别说明:
数据描述 | 大小 |
Tablename:表单名,记录这个索引信息描述的是哪个表单的索引信息 | 20字节 |
Indexname[0]:记录表单第1个索引名 | 20字节 |
... | |
Indexname[N-1]:记录表单第N个索引名 | 20字节 |
Uniquename[0]:记录表单第1个unique(唯一)索引名 | 20字节 |
... | |
Uniquename[N-1]:记录表单第N个unique(唯一)索引名 | 20字节 |
Pkeyname:如果表单有主索引的话,该项用于记录表单主索 | 20字节 |
引名 |
表4
在进行具体的嵌入式数据库备份时,由于采用压缩技术的备份和不采用压缩技术的备份在整个备份/恢复过程中的差异很小,故只对不采用压缩技术的备份过程进行说明。数据库备份从整体上说可分为五个步骤进行:
第一步:备份程序查找用户给出的备份文件路径,如果备份文件不存在,则建立备份文件,跳到第二步继续执行;如果备份文件存在,则将备份文件的创建时间与原数据库每个表单中数据文件的最近修改时间进行比较,如果备份文件的创建时间比原数据库任一表单数据文件的最近修改时间都新,则说明从上次备份之后,原数据库没有做过任何改动,则退出备份操作,否则继续执行;
第二步:备份程序填充备份文件头部信息区中的数据库信息部分(可对照表1),并写入备份文件中,包括原数据库的路径、当前的时间、标志压缩标志位和原数据库中所含表单个数,然后填充tableidx_off、tableidx_len、relate_off、relate_len、query_off、query_len六项,这六项数据的算法公式如下:
先设:
Dbinfo_Size:备份文件头部信息区数据库信息结构体大小;
Tableinfo_Size:备份文件头部信息区一个表单信息结构体大小;
Ntable:原数据库表单个数;
TableIdx_Len:原数据库表单索引文件的大小;
RelateIdx_Len:原数据库关系索引文件的大小;
QueryIdx_Len:原数据库查询索引文件的大小。
根据嵌入式数据库备份文件内部格式描述(对照表3),则:
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))。
第三步:备份程序对每个表单信息(参照表2)进行填充,并写入备份文件,第X个表单的表单信息Dat_off、Dat_len、Idx_off0、Idx_len0、Idx_off1、Idx_len1、...、Idx_off19、Idx_len19的计算公式为:
设这个原数据库第X个表单共有3个索引文件,则:
tDat_Len:表单数据文件大小;
tIdx0_Len:第一个索引文件的大小;
tIdx1_Len:第二个索引文件的大小;
tIdx2_Len:第三个索引文件的大小。
根据嵌入式数据库备份文件内部格式(参照表3)描述,则:
Dat_off=query_off+QueryIdx_Len+(X-1)*Tableinfo_Size(M为表单个数,表单数据文件的数据在备份文件中的偏移量(Dat_off),等于数据库查询索引文件的数据在备份文件中的偏移量(query_off)加上原数据库查询索引文件的大小(QueryIdx_Len)加上(X-1)倍的备份文件头部信息区一个表单信息结构体大小(Tableinfo_Size));
Dat_len=tDat_len(表单数据文件数据的大小(Dat_len)等于该第X个表单的表单数据文件的大小(tDat_Len));
Idx_off0=Dat_off+tDat_len第一个索引文件在备份文件中的偏移量(Idx_off)等于该表单数据文件的数据在备份文件中的偏移量(Dat_off)加上第X个表单的表单数据文件大小(Dat_Len));
Idx_len0=tIdx0_Len(第一个索引文件在备份文件中的大小(Idx_len)等于第一个索引文件在原文件中的大小));
Idx_off1=Idx_off0+tIdx0_Len
Idx_len1=tIdx0_Len
Idx_off2=Idx_off1+tIdx1_Len
Idx_len2=tIdx1_Len(第二个索引文件后的索引文件在备份文件中的偏移量(Idx_off)等于其上一个索引文件在备份文件中的偏移量(Idx_off)加上其上一个索引文件在备份文件中的大小;第二个索引文件后的索引文件的大小等于其上一个索引文件在备份文件中的大小)。式中t表示要提取数据的表单之前的那个表单,因此可以通过t这个表单加上一定的偏移量来得到所要的数据。
由于这个表单只有三个索引文件(0-2),则Idx_off3、Idx_len3到Idx_off19、Idx_len19都置为0,表示这个表单从第三个域开始没有索引,则在备份文件头部的表单信息描述中,从第三个域开始将偏移量信息都置为零,即相应域没有索引文件;
第四步:备份程序根据嵌入式数据库备份文件内部格式描述(表3),依次将原数据库各索引文件、数据文件数据写入备份文件;
第五步:备份程序查询嵌入式数据库数据字典,从数据字典中读出原数据库所有表单的索引信息和约束信息,并根据嵌入式数据库备份文件内部格式(表3)描述,将各表单的索引信息利用与步骤三相同的方法,依次写入备份文件的末尾,完成一次嵌入式数据库备份操作。
相对于数据库备份方法,嵌入式数据库的恢复方法比较简单。由嵌入式数据库恢复程序从备份数据库头部信息区确定原数据库目录文件架构;根据头部信息对原数据库每个索引文件、数据文件在备份文件中的具体位置描述,从备份文件的数据区读取数据,建立或恢复原有的数据库索引、数据文件,使原数据库信息恢复到数据库备份时的状态;最后,嵌入式数据库恢复程序根据记录在备份文件末尾索引区的索引信息,将原数据库的索引信息重新写入嵌入式数据库数据字典中即可。这样嵌入式数据库将备份文件中的数据等信息重新写入了原数据库,使得原数据库的数据信息、索引信息、数据字典信息都恢复到了原数据库进行备份时的状态,保证了数据的完整性和一致性。
下面结合一个实施例及附图1、2、3,进一步说明本发明的备份与恢复方法。假设一个数据库db包括两个表单t1和t2,表单t1有三个域(field),其中域field1和field2有索引,即存在索引文件;表单t2有四个域,其中域field3有索引。对这个数据库的备份流程由图1、图2给出,对这个数据库的恢复流程由图3给出。
参见图1,图中示出备份文件头部信息填充流程,包括:
步骤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)填充到备份文件的头部,位置信息包括各文件的数据在备份文件中的偏移量及数据大小;
步骤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的偏移量置为零。
参见图2,接图1操作,在完成备份文件头部信息填充流程后,通过步骤201至208进行备份文件数据区数据填充流程(按表3结构),通过步骤209至214进行备份文件尾部信息填充流程(按表4结构)。
步骤201至203,根据头部信息按步骤将数据库表单索引文件中的数据、数据库关系索引文件中的数据、数据库查询索引文件中的数据填充到备份文件数据区,即记录原数据库索引文件的具体数据;
步骤204至206,根据头部信息将表单t1数据文件中的数据填充到备份文件数据区的相应位置,和先后将表单t1索引文件1、索引文件2中的数据填充到备份文件数据区的相应位置;
步骤207至208,根据头部信息将表单t2数据文件中的数据填充到备份文件数据区的相应位置,和将表单t2索引文件3中的数据填充到备份文件数据区的相应位置;
步骤209至211,将表单t1的表单名填充到备份文件尾部的相应位置,和将表单t1的索引文件1、索引文件2的文件名填充到备份文件尾部的相应位置;
步骤212至213,将表单t2的表单名填充到备份文件尾部的相应位置,和将表单t2的索引文件3的文件名填充到备份文件尾部的相应位置;
步骤214,至此完成备份,关闭备份文件。
参见图3,数据库恢复流程是备份流程的逆过程,不再详述,图中仅给出恢复的缩略过程。包括:
步骤301至303,从备份文件头部读取备份数据库信息,判断原数据库是否存在,如果存在,则删除原数据库执行步骤304,如果不存在则直接执行步骤304;
步骤304,根据数据库信息建立原数据库,这时的这个数据库是空数据库;
步骤305至307,按步骤先后根据备份文件头部区与数据区中记载的数据库信息恢复数据库的索引文件、根据备份文件头部区与数据区中记载的表单信息恢复数据库的表单,和根据备份文件尾部区信息记载的数据库表单索引信息恢复数据库表单索引;
步骤308,至此完成恢复,关闭备份文件。
本发明的数据库备份与恢复方法,是针对嵌入式数据库数据量少、安全性要求高等特性,同时针对嵌入式设备只有有限的系统资源的情况,采用基于文件级别的安全算法,同时加强操作的原子性而设计的。其算法易于维护、安全性高、速度快、用户操作简便。使得采用本发明方法的嵌入式数据库与同类产品相比,在安全性方面占有很大的优势,提高了嵌入式数据库与同类产品的竞争力。同时,本发明的数据备份与恢复方法对系统平台基本没有要求,对CPU、内存的要求低,可以方便地移植到其他嵌入式应用程序中,因而有比较广泛的应用前景。
Claims (11)
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所述的一种嵌入式数据库的数据备份和恢复方法,其特征在于:在对嵌入式数据库进行数据库备份时,对容易产生高压缩率的数据文件和索引文件进行压缩处理,对于描述数据库信息的二进制描述代码不作压缩处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021459592A CN100399325C (zh) | 2002-10-25 | 2002-10-25 | 一种嵌入式数据库的数据备份和恢复方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021459592A CN100399325C (zh) | 2002-10-25 | 2002-10-25 | 一种嵌入式数据库的数据备份和恢复方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1492362A CN1492362A (zh) | 2004-04-28 |
CN100399325C true CN100399325C (zh) | 2008-07-02 |
Family
ID=34232565
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021459592A Expired - Fee Related CN100399325C (zh) | 2002-10-25 | 2002-10-25 | 一种嵌入式数据库的数据备份和恢复方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100399325C (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100338966C (zh) * | 2004-06-08 | 2007-09-19 | 中兴通讯股份有限公司 | 一种移动通讯系统嵌入式数据库信息的查探方法 |
CN1315043C (zh) * | 2004-06-24 | 2007-05-09 | 华为技术有限公司 | 一种嵌入式程序的兼容性升级方法 |
CN100359477C (zh) * | 2004-12-16 | 2008-01-02 | 中兴通讯股份有限公司 | 一种嵌入式系统的数据收集和还原方法 |
CN101256561B (zh) * | 2007-03-02 | 2010-09-08 | 阿里巴巴集团控股有限公司 | 一种存储、访问数据库数据的方法、装置及系统 |
US9047330B2 (en) * | 2008-10-27 | 2015-06-02 | Ianywhere Solutions, Inc. | Index compression in databases |
CN101882140B (zh) * | 2009-05-06 | 2012-07-18 | 和舰科技(苏州)有限公司 | 一种为Lotus数据库备份数据的方法 |
CN101819603A (zh) * | 2010-05-07 | 2010-09-01 | 中兴通讯股份有限公司 | 基于嵌入式系统的信息记录的检索方法和装置 |
CN101894137A (zh) * | 2010-06-23 | 2010-11-24 | 中兴通讯股份有限公司 | 嵌入式数据库中数据恢复的方法和装置 |
CN102375696A (zh) * | 2010-08-20 | 2012-03-14 | 英业达股份有限公司 | 利用虚拟磁盘的数据存储系统与数据存取方法 |
CN102110161A (zh) * | 2011-02-24 | 2011-06-29 | 中兴通讯股份有限公司 | 备份、恢复多业务数据库的方法及装置 |
CN102314383B (zh) * | 2011-09-28 | 2013-12-04 | 华为数字技术(成都)有限公司 | 数据索引的故障恢复方法和装置 |
CN102411523B (zh) * | 2011-11-30 | 2014-08-20 | 广东威创视讯科技股份有限公司 | 文件备份存储方法、装置及其文件系统备份方法 |
CN102546261B (zh) * | 2012-02-07 | 2015-04-29 | 华为技术有限公司 | 网元升级的方法、网元、服务器及系统 |
CN102663107A (zh) * | 2012-04-16 | 2012-09-12 | 深圳市华曦达科技股份有限公司 | 嵌入式数据管理的方法及系统 |
CN103914481B (zh) * | 2013-01-07 | 2019-09-13 | 深圳市腾讯计算机系统有限公司 | 数据存储方法和装置 |
CN103778188A (zh) * | 2013-12-31 | 2014-05-07 | 网秦(北京)科技有限公司 | 用于在库文件中查询和/或维护数据的方法和设备 |
CN106708830B (zh) * | 2015-08-03 | 2020-08-14 | 四川效率源信息安全技术股份有限公司 | 一种基于大型数据库的数据恢复方法 |
CN105607870B (zh) * | 2015-12-17 | 2019-05-21 | 北京奇虎科技有限公司 | 游戏数据分卷处理的方法及装置 |
CN105930228B (zh) * | 2016-04-06 | 2019-02-12 | 广州品唯软件有限公司 | 数据备份方法及系统 |
CN108021698A (zh) * | 2017-12-21 | 2018-05-11 | 努比亚技术有限公司 | 存储文件的删除方法、装置和计算机存储介质 |
CN108459930B (zh) * | 2018-04-02 | 2020-09-11 | 深圳臻迪信息技术有限公司 | 数据备份方法、装置和存储介质 |
CN111104258A (zh) * | 2019-12-23 | 2020-05-05 | 北京金山云网络技术有限公司 | MongoDB数据库的备份方法、装置及电子设备 |
CN111240893B (zh) * | 2019-12-26 | 2023-07-18 | 曙光信息产业(北京)有限公司 | 一种基于数据流分片技术的备份和还原管理方法及系统 |
CN111767171B (zh) * | 2020-06-29 | 2024-03-19 | 四川阵风科技有限公司 | 文件备份与还原的方法 |
CN116755940B (zh) * | 2023-08-15 | 2024-03-22 | 深圳市东信时代信息技术有限公司 | 文件还原方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1036737C (zh) * | 1992-12-08 | 1997-12-17 | 艾利森电话股份有限公司 | 出错时用于数据库的关系恢复的方法 |
CN1037129C (zh) * | 1992-12-08 | 1998-01-21 | 艾利森电话股份有限公司 | 用于数据库中建立备份系统的方法 |
JP2000347919A (ja) * | 1999-06-07 | 2000-12-15 | Nec Corp | データベース・オンラインバックアップ自動運用システム |
CN1317742A (zh) * | 2000-04-10 | 2001-10-17 | 国际商业机器公司 | 恢复数据库时并行读取主从备份的系统和方法 |
JP2002041345A (ja) * | 2000-07-27 | 2002-02-08 | Hitachi Ltd | コンピュータシステム及びそのデータバックアップ方法 |
US20020026335A1 (en) * | 2000-07-21 | 2002-02-28 | Tadashi Honda | Data security insurance system |
US6411969B1 (en) * | 1999-08-13 | 2002-06-25 | Unisys Corporation | Enhanced system and method for management of system database utilities |
-
2002
- 2002-10-25 CN CNB021459592A patent/CN100399325C/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1036737C (zh) * | 1992-12-08 | 1997-12-17 | 艾利森电话股份有限公司 | 出错时用于数据库的关系恢复的方法 |
CN1037129C (zh) * | 1992-12-08 | 1998-01-21 | 艾利森电话股份有限公司 | 用于数据库中建立备份系统的方法 |
JP2000347919A (ja) * | 1999-06-07 | 2000-12-15 | Nec Corp | データベース・オンラインバックアップ自動運用システム |
US6411969B1 (en) * | 1999-08-13 | 2002-06-25 | Unisys Corporation | Enhanced system and method for management of system database utilities |
CN1317742A (zh) * | 2000-04-10 | 2001-10-17 | 国际商业机器公司 | 恢复数据库时并行读取主从备份的系统和方法 |
US20020026335A1 (en) * | 2000-07-21 | 2002-02-28 | Tadashi Honda | Data security insurance system |
JP2002041345A (ja) * | 2000-07-27 | 2002-02-08 | Hitachi Ltd | コンピュータシステム及びそのデータバックアップ方法 |
Non-Patent Citations (12)
Title |
---|
DB2数据库恢复策略及实现. 陈宇,孟煊,王燕.西南民族学院学报(自然科学版),第25卷第1期. 1999 |
DB2数据库恢复策略及实现. 陈宇,孟煊,王燕.西南民族学院学报(自然科学版),第25卷第1期. 1999 * |
Oracle数据库安全备份和恢复策略. 穆云庆.微计算机应用,第2期. 2001 |
Oracle数据库安全备份和恢复策略. 穆云庆.微计算机应用,第2期. 2001 * |
如何对Sybase SQL Anywhere数据库进行数据备份和数据恢复. 王举国,郑力.计算机系统应用,第8期. 1999 |
如何对Sybase SQL Anywhere数据库进行数据备份和数据恢复. 王举国,郑力.计算机系统应用,第8期. 1999 * |
安全备份数据库. 方刚.微电脑世界,第7期. 2001 |
安全备份数据库. 方刚.微电脑世界,第7期. 2001 * |
嵌入式实时数据库系统的设计与实现. 庞津津,单顺利,闫晋屯.计算机工程与设计,第18卷第3期. 1997 |
嵌入式实时数据库系统的设计与实现. 庞津津,单顺利,闫晋屯.计算机工程与设计,第18卷第3期. 1997 * |
移动数据库及其应用. 王珊,丁治明,张孝.计算机应用,第20卷第9期. 2000 |
移动数据库及其应用. 王珊,丁治明,张孝.计算机应用,第20卷第9期. 2000 * |
Also Published As
Publication number | Publication date |
---|---|
CN1492362A (zh) | 2004-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100399325C (zh) | 一种嵌入式数据库的数据备份和恢复方法 | |
KR102240557B1 (ko) | 데이터 저장 방법, 장치 및 시스템 | |
CN100504854C (zh) | 文件管理方法 | |
CN100468402C (zh) | 一种数据存储及查询方法 | |
CN103262043B (zh) | 从差异备份中执行数据库的精细恢复的方法和系统 | |
CN103559323B (zh) | 数据库实现方法 | |
CN102591947A (zh) | 用于数据去重复的快速且低ram占用的索引 | |
CN102713901A (zh) | 存储复制系统和方法 | |
US20100114843A1 (en) | Index Compression In Databases | |
CN103647797A (zh) | 一种分布式文件系统及其数据访问方法 | |
CN101464901B (zh) | 一种对象存储设备中的对象查找方法 | |
CN103098035A (zh) | 存储系统 | |
KR101143673B1 (ko) | 메타데이터를 핸들링하는 방법 및 장치 | |
CN100449545C (zh) | 访问扇区数据的方法和系统 | |
CN100424699C (zh) | 一种属性可扩展的对象文件系统 | |
CN102243660A (zh) | 一种数据访问方法及设备 | |
US8880553B2 (en) | Redistribute native XML index key shipping | |
CN104462147A (zh) | 一种文档的存储方法 | |
US6714946B1 (en) | Data management system using a plurality of data operating modules | |
CN101986649A (zh) | 应用于电信行业计费系统的共享数据中心 | |
CN102609492B (zh) | 一种支持表模式可变的元数据管理方法 | |
CN115114370B (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN112416879B (zh) | 一种基于ntfs文件系统的块级数据去重方法 | |
JP2000207260A (ja) | ハンドヘルド装置のデ―タ記憶およびデ―タ取出しのための方法および装置 | |
US20130246479A1 (en) | Computer-readable recording medium, data model conversion method, and data model conversion apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080702 Termination date: 20201025 |
|
CF01 | Termination of patent right due to non-payment of annual fee |