基于嵌入式数据库的存储方法和装置的制作方法

文档序号:6468215阅读:100来源:国知局
专利名称:基于嵌入式数据库的存储方法和装置的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种基于嵌入式数据库的存储 方法和装置。
背景技术
嵌入式数据库以表为单位保存在存储器上,如果要修改嵌入式 数据库在内存中的数据,需要将新数据重新保存到存储器上,但在
将新数据保存到存^f诸器的过程中,如果出现系统掉电或复位,会导 致保存到存储器中的部分是新数据,部分是旧数据的情况,这样会 石皮坏数据的一致性。
目前,主要采用XML的方式存储数据,过去的方法是修改了 一张表后将新数据以一种中间格式保存到存储器,然后将中间格式 的文件更名为XML的文件。如果同时修改了 3张表,当第1、 2张 表都保存完成,而保存第3张表的时候系统复位,那么第1、 2张表 的数据就是修改之后,第3张表数据是修改之前的。这样不能保证 嵌入式凄t据库ft据的 一致性和正确性。

发明内容
考虑到相关技术中存在的在嵌入式数据库的数据存储过程中, 不能保证嵌入式数据库数据的 一致性和正确性的问题而提出本发明,为此,本发明的主要目的在于提供一种基于嵌入式数据库的存 储方法及装置,以解决上述问题。
根据本发明的一个方面,提供一种基于嵌入式数据库的存储方法。
根据本发明的基于嵌入式数据库的存储方法包括在存储器上 预先设置第一存储区域和第二存储区域,其中,存储器用于存储嵌
入式数据库的数据;对嵌入式凄《据库的多组数据进4亍更新#:作,并
且,对于完成更新的每组数据,分别存储到第一存储区域;如果将 完成更新的多组数据都成功存储到第一存储区域,则将第一存储区 域中存储的多组数据拷贝到第二存储区域中。
进一步地,方法还包括如果将多组数据存储到第一存储区域 中失败,则重新对嵌入式数据库的多组数据进4亍更新才喿作。
另外,在进行更新操作之前,该方法还包括预先设置指示将 修改的多组数据存储到第 一存储区域下的第 一标识,及指示将第一 存储区域中的修改后的多组数据存储到第二存储区域下的第二标 识;将嵌入式数据库中修改的多组数据存储到第一存储区域中包括 在内存中写入第 一标识,并将嵌入式数据库中修改的多组数据存储 到第 一存储区域中;将第 一存储区域中存储的多组数据拷贝到第二 存储区域中包括在内存中写入第二标识,并将第一存储区域中存 储的多组数据拷贝到第二存储区域中。
优选地,在写入第一标识之后,该方法还包括计算并保存第 一标识对应的校验码,并将第一标识和第 一标识对应的校验码复制 到存^f诸器中;在写入第二才示识之后,该方法还包4舌在内存中写入 第二标识覆盖第一标识,计算并保存第二标识对应的校验码,并将第二标识和第二标识对应的才交—验码复制到存^f渚器中覆盖第 一标识和 第 一标识对应的校验码。
进一步地,该方法还包括读取内存中当前的标识,并计算读 取的标识的参考4交-验码,如果计算的参考才交-验码与内存中存储的标 识对应的校验码一致,则读取标识所指示的存储区域,其中,标识 为第 一纟示识或第二才示识。
其中,如果在内存中读取的参考校验码与标识对应的校验码不 一致,该方法还包括读耳又存々者器中当前的标识,并计算读取的标 识的参考校验码,如果计算的参考校验码与存储器中存储的标识对 应的校验码一致,则读取标识所指示的存储区域,其中,标识为第 一标识或第二标识。
进一步地,上述方法还包括为多组数据分别设置相应的数据 标识,数据标识在其对应的数据被存储到第 一存储区域时被写入到
内存并覆盖在前写入的数据标识;在将完成更新的多组数据存储到
第一存4诸区i或失败时,乂人内存中读取凄t才居标识,并^1夸读取的^:才居标 识的数据确定为存储失败的数据。
根据本发明的另 一个方面,提供一种基于嵌入式数据库的存储装置。
根据本发明的基于嵌入式数据库的存储装置包括第一设置模 块,用于在存储器上预先设置第一存储区域和第二存储区域,其中,
存储器用于存储嵌入式数据库的数据;更新模块,用于对嵌入式数
据库的多组凄t据进4于更新操作,并且,对于完成更新的每组数据,
分别存储到第一存储区域;处理模块,用于完成更新的多组数据都 成功存储到第 一存储区域时,将第 一存储区域中存储的多组数据拷 贝到第二存储区域中。进一步地,该装置还包括第二设置模块,用于设置指示将修 改的多组数据存储到第 一存储区域下的第 一标识,及指示将第 一存 储区域中的修改后的多组数据存储到第二存储区域下的第二标识; 写入才莫块,用于在内存中写入第一标识和/或第二标识;相应地,处 理模块用于将嵌入式数据库中修改的多组数据存储到第 一存储区域 中,和/或将第 一存储区域中存储的多组数据拷贝到第二存储区域 中。
通过本发明的上述至少一个技术方案,通过在存储器上设置两 个存〗渚区域,并将凝:据分别保存在这两个区域上,保i正了系统在存 盘过程中发生严重错误时能够重新恢复,并且可以监控错误数据发 生的位置。


附图用来提供对本发明的进一步理解,并且构成i兌明书的一部 分,与本发明的实施例一起用于解释本发明,并不构成对本发明的 限制。在附图中
图1是4艮据本发明方法实施例的基于嵌入式凝:据库的存卞者方法 的流程图2是根据本发明方法实施例的数据存储过程的处理流程图3是根据本发明方法实施例的数据加载过程的处理流程图4是根据本发明装置实施例的基于嵌入式数据库的存储装置 的结构框图5是根据本发明装置实施例的基于嵌入式数据库的存储装置 的优选结构框架图。
具体实施例方式
功能相X述
如上述描述,数据的正确性对嵌入式数据库来说至关重要,当 在内存中对凄t据进行改写之后,如果不能正确地将改写后的凄t据存 储在存储器上,系统再次加载时会加载错-误的凄史据,乂人而导致系统 运行错误。基于此,本发明提供了一种运用双目录的结构,保证在 凄t据存^(诸过考呈中发生错4吴也可以进^f亍系统回滚,并且增加三个标识 文件用于标示系统存储过程中发生错误的位置,方便对系统错误进 行定位。
术语"存储介质"可以表示用于存储数据的一种或多种装置,
包括只读存储器(ROM)、随机存:^储器(RAM)、磁RAM、磁 心存储器、磁盘存储介质、光存储介质、闪存装置和/或用于存储信 息的其他机器可读介质。术语"机器可读介质"包括但不限于便携 式或固定存储装置、光存储装置、无线通道或能够存储、容纳、或 承载指令和/或数据的各种其他介质。
另外,可以通过硬件、软件、固件、中间件、微码、硬件描述 语言或其组合来实现实施例。当用软件、固件、中间件或孩t码来实 现时,可以在诸如存储介质的机器可读介质中存储用于执行必要任 务的程序代码或码^殳。(多个)处理器可以执行必要任务。码段可以 表示进程、函数、子程序、程序、例行程序、子例行程序、模块、 对象、软件包、类、或指令、数据结构、或程序语言的任意组合。 通过传输和/或接收信息、数据、自变量、或存储内容来将码段耦合 到另一码段或硬件电路。信息、自变量、参数、数据等可以经由包 括存储器共享、消息传递、令牌传递、网络传输等的任意合适方式 来传递、传输、或传送。在不冲突的情况下,本申请中的实施例及实施例中的特征可以 相互纟且合。
下面将结合附图详细描述本发明。
方法实施例
根据本发明实施例,提供了 一种基于嵌入式数据库的存储方法。
需要说明的是,为了便于描述,在下文中以步骤的形式示出并 描述了本发明的方法实施例的技术方案,在下文中所示出的步骤可
以在i者如一组计算才几可执4亍指令的计算才几系统中扭J亍。虽然在相关 的附图中示出了逻辑顺序,^旦是在某些情况下,可以以不同于此处 的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的基于嵌入式数据库的存储方法的流 程图,如图1所示,该方法包括以下步骤(步骤S102至步骤S106):
步骤S102,在存储器上预先设置第一存储区域和第二存储区 域,其中,存储器用于存储嵌入式数据库的数据;
步骤S104,对嵌入式数据库的多组数据进行更新才喿作,并且, 对于完成更新的每组数据,分别存储到第 一存储区域;
步骤S106,如果将完成更新的多组数据都成功存储到第一存储
区域,则将第 一存储区域中存储的多组数据拷贝到第二存储区域中;
如果将多组数据存储到第一存储区域中失败,则重新对嵌入式数据 库的多组数据进行更新操作。
在具体实施过程中,可以预先:^殳置指示将^^改的多组数据存储 到第 一存储区域下的第 一标识,及指示将第 一存储区域中的修改后的多组数据存储到第二存储区域下的第二标识;这样,将嵌入式数 据库中修改的多组数据存储到第 一存储区域中包括在内存中写入 第 一标识,并将嵌入式数据库中修改的多组数据存储到第 一存储区 域中,计算并保存第一标识对应的才交一验码,并将第一标识和第一标 识对应的校验码复制到存储器中;将第一存储区域中存储的多组数 据拷贝到第二存储区域中包括在内存中写入第二标识,在内存中 写入第二标识覆盖第 一标识,计算并〗呆存第二标识对应的才交-验码, 并将第二标识和第二标识对应的校验码复制到存储器中覆盖第 一标
识和第一标识对应的才交-验码,并将第一存储区域中存4诸的多组凝:据 拷贝到第二存储区域中。
在系统上电时,读取内存中当前的标识,并计算读取的标识的 参考校验码,如果计算的参考校验码与内存中存储的标识对应的校 —验码一致,则读取标识所指示的存々者区域,其中,标识为第一标识 或第二标识,如果在内存中读取的参考校验码与标识对应的校验码 不一致,读取存储器中当前的标识,并计算读取的标识的参考校验 码,如果计算的参考校验码与存储器中存储的标识对应的校验码一 致,则读取标识所指示的存储区域,其中,标识为第一标识或第二 标识。
通过本发明实施例提供的技术方案,通过在存储器上设置两个 存储区域,并将凄t据分别保存在这两个区域上,保证了系统在存盘 过程中发生严重错误时能够重新恢复,并且可以监控错误数据发生 的位置。
下面对本发明实施例进行详细说明,在具体实施过程中,主要 分为文件组织形式过程(对应于上述的步骤S102)、数据存储(对 应于上述的步艰《S104)和tt才居加载(对应于上述的步骤S106)三 个过程,下面对各过程进4于描述。第一、文件组织形式过禾呈
关于存储器在系统的运行目录下增加两个平级的目录, 一个 目录用于保存当前数据,称为备份目录(即,上文所述的第一存储 器),另一个目录用于保存备份数据,成为当前目录(即,上文所述 的第二存储器)。
关于保留内存(即,上文所述的内存)"^殳置标识位,才艮据标志 文件的系统标志位来判断系统是从当前目录加载数据,还是从备份 目录加载数据。在系统的保留内存上开辟一块区域用于保存存盘过 程的标志文件,在运行目录下以二进制形式保存嵌入式数据库的数 据的副本,正常情况下,备份目录和当前目录下保存的数据的副本 与保留内存中的数据内容完全一致。其中,保留内存中保存了循环 冗余才交-睑(Cyclic Redundancy Check,简称为CRC )才交-验值,嵌入 式数据库中的表的总个数,上述设置的标志位,每张表数据存储的 标志^f立(即,上文所述的ft据标识)。
第二、数据存储过程
预先将整个数据的存储过程分为三个阶段第一阶段为初始阶 段,对数据进行存储,其中,上一次存储数据的过程没有发生错误, 在保留内存中存储的数据为正确的数据;第二阶段为保存阶段,将 需要更新的数据保存到备份目录下;第三阶段为拷贝阶段,将备份 目录中更新成功的数据拷贝到当前目录下。
系统提供了一个存储数据的接口,该接口以集合为单位,可以 对单个表和批量的表进行存储。由于系统目前支持的最大表个数为 256,因此集合有256位,每一位代表一张表,如果某一张表需要保 存,就将相应的bit置为有效。函数体内会解析这个集合来判断哪些 表需要保存。在具体实施过程中,将系统标志位和需要保存的表的标志位置
为第一阶段,开始将内存中的数据以XML的数据格式保存到备份 目录中,保存完一张表就将该表的标志位置成第二阶^a,即已经成 功将数据保存到备份目录中的表,如果在将表存储到备份目录的过 程中发生错误,该表的标志位为第一阶段,即没有将数据保存到备 份目录中的表,当所有需要保存的表都已经保存完成之后,将系统 标识位置为第三阶段。将所有需要保存的表上的数据从备份目录拷 贝到当前目录,拷贝成功一 张表就将相应的表标志位置为第 一 阶段, 如果在将表从备份目录拷贝到当前目录的过程中发生错误,该表的 标志位为第三阶段,即没有将数据从备份目录拷贝到当前目录中的 表,当所有的表都已经拷贝成功之后,将系统标志位置为第一阶段, 存储过程结束。
下面结合图2对凌t据存储过程进行描述。
步骤S201,先读取系统标志位,根据系统标志位判断数据存储 过程所处的阶段,如果标志位不正常就i兌明系统上次存盘发生铺"i吴。 如果系统标志位为用于指示初始阶段的系统标志位,则进入到步骤 S202,如果系统标志位为用于指示第二阶段的系统标志位,则进入 到步-骤S209,如果系统标志位为用于指示第三阶l殳的系统标志位, 则进入到步骤S210;
步骤S202,写入用于指示第二阶段的系统标志位;
步骤S203,判断是否还有表需要保存,如果判断结果为是,进 入到步骤S204 ,否则进入到步骤S205;
步骤S204,将修改后的所有数据保存到备份目录下,并写入用 于指示第三阶段的系统标志位;
步骤S205,写入用于指示第三阶段的系统标志位;步骤S206,判断是否还有表需要拷贝,如果判断结果为是,进 入到步骤S207,否则进入到步骤S208;
步骤S207,将数据拷贝到当前目录,并写入用于指示第一阶段 的系统标志位;
步骤S208,写入用于指示第一阶段的系统标志位;
步骤S209,如果读取的系统标志位为第二阶段,说明错误发生 在将数据保存到备份目录下时,需要先将错误的数据恢复,将发生 错误的表保存到备份目录,然后将表拷贝到当前目录,即将标识文 件中标示为第二阶段的表从备份目录拷贝到当前目录,并相应地修 改才示志文4牛;
步骤S210,如果读取的系统标志位为第三阶段,说明错误发生 在将数据拷贝到当前目录时,将发生错误的表重新拷贝到当前目录 下。然后开始存盘过程,先将标志文件的标志位置为第二阶段,把 数据保存到备份目录,将标志文件置第三阶段,把数据从备份目录 拷贝到当前目录,最后将标志文件置为第一阶段。
第三过程、数据加载过程
凄t据加载是+艮据标志文件中的系统标志位来判断,如果标志文 件的系统标志位为第 一阶段和第二阶段,就表明可用的完整数据在 当前目录下,此时加载当前目录下的数据,如果标志文件的系统标 志位为第三阶段,就表明可用的完整数据在备份目录下,此时加载 备份目录下的数据;如果标志文件不存在就初始化标志文件为第一 阶段,加载相应目录下的数据。三个标志文件的同步,由于三个标 志文件在正常情况下都是相等的,因此不管对哪个标志文件进行了 操作,都必须同步到其他两个标志文件中。在数据库上电的时候, 会提供一个标志文件选择的函数,该函数不带参数,功能是用于将三个标志文件中的有效文件选择出来。选择的原则是以保留内存中 保存的系统标志位为先,然后再判断其他两个标志文件的副本,具
体过程为首先通过CRC校验判断保留内存中的系统标志位是否有 效,因为如果出现系统掉电的情况,保留内存中的内容会被随机改 写,如果保留内保存的标志位有效,则根据保留中保存的标志文件 的标志位来判断系统从当前目录还是从备份目录加载数据。如果保 留内存内容无效,则判断保留内存的副本,如果副本有效,则根据 标志文件副本的系统标志位来加载数据,如果4呆留内存和其副本都 无效,则重新初始化保留内存和保留内存的副本,都初始化为第一 阶段。
下面结合图3对该数据加载过程进行说明。
步骤S301,判断标志文件是否存在,如杲判断结果为是,进入 到步骤S302,否则进入步骤S30S;
步骤S302,读取标志文件的存々者标志位;
步骤S303,标志位为第一阶段和第二阶段;
步骤S304, ^Mv系统的当前目录中加载^t据;
步骤S305,创建标志文件并且初始化为存储过程的第一阶段;
步骤S306,从系统的备份目录中加载数据。
装置实施例
根据本发明实施例,提供一种基于嵌入式数据库的存储装置。图4示出了根据本发明实施例的基于嵌入式数据库的存储装置 示意图,如图4所示,该装置包括设置模块IO、更新模块20和处 理模块30。
第一设置模块10,用于在存储器上预先设置第一存储区域和第 二存储区域,其中,存储器用于存储嵌入式数据库的数据;更新模 块20,连4妾至第一设置才莫块10,用于对嵌入式H才居库的多组数据进 行更新操作,并且,对于完成更新的每组数据,分别存储到第一存 储区域;处理才莫块30,连接至第一i殳置才莫块10和更新才莫块20,用 于完成更新的多组数据都成功存储到第 一存储区域时,将第 一存储 区域中存储的多組数据拷贝到第二存储区域中。
图5示出了根据本发明实施例的基于嵌入式数据库的存储装置 的优选结构框架图,如图5所示,在图4所示装置的基础上,该装 置还包括第二设置模块40和写入模块50。
第二设置模块40,用于设置指示将修改的多组数据存储到第一 存储区域下的第 一标识,及指示将第 一存储区域中的修改后的多组 数据存储到第二存储区域下的第二标识;写入模块50,连接至第二 设置模块40,用于在内存中写入第二设置模块40设置的第一标识 和/或第二标识;处理模块30,连接至写入模块50,用于在写入模 块50写入第一标识之后,将嵌入式数据库中修改的多组数据存储到 第一存储区域中,和/或在写入模块50写入第二标识之后,将第一 存储区域中存储的多组数据拷贝到第二存储区域中。
通过本发明实施例提供的基于嵌入式数据库的存储装置,通过 在存储器上设置两个存储区域,并将数据分別保存在这两个区域上, 保证了系统在存盘过程中发生严重错误时能够重新恢复,并且可以 监控错误数据发生的位置。如上所述,借助于本发明提供的基于嵌入式数据库的存储方法 和/或装置,通过在存储器上设置两个存储区域,并将数据分别保存 在这两个区域上,保证了系统在存盘过程中发生严重错误时能够重 新恢复,并且可以监控错误数据发生的位置。例如在电子盘中保存 两套数据,在保存数据的过程中,如果发生错误,那么数据可以进
行回滚;新增存盘的标志文件,可以标示存书者过程在哪一步发生错 误,和发生错误的表。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1. 一种基于嵌入式数据库的存储方法,其特征在于,包括在存储器上预先设置第一存储区域和第二存储区域,其中,所述存储器用于存储嵌入式数据库的数据;对所述嵌入式数据库的多组数据进行更新操作,并且,对于完成更新的每组数据,分别存储到所述第一存储区域;如果将完成更新的多组数据都成功存储到所述第一存储区域,则将所述第一存储区域中存储的所述多组数据拷贝到所述第二存储区域中。
2. 根据权利要求1所述的方法,其特征在于,所述方法还包括如果将所述多組数据存储到所述第一存4诸区i或中失败,则 重新对所述嵌入式凄t据库的多组H据进4亍更新才喿作。
3. 根据权利要求1或2所述的方法,其特征在于,进行更新操作 之前,所述方法还包4舌预先设置指示将修改的所述多组数据存储到所述第一存 储区域下的第 一标识,及指示将所述第 一存储区域中的修改后 的所述多组数据存储到所述第二存储区域下的第二标识;将所述嵌入式数据库中4务改的所述多组凄t据存储到所述 第一存储区域中包括在内存中写入所述第一标识,并将所述嵌入式凄史据库中修^ 改的所述多组数据存储到所述第 一存储区域中;将所述第 一存储区域中存储的所述多组数据拷贝到所述 第二存储区域中包括在所述内存中写入所述第二标识,并将所迷第一存储区域 中存储的所述多组数据拷贝到所述第二存储区域中。
4. 根据权利要求3所述的方法,其特征在于,所述写入所述第一 标识之后,还包4舌计算并保存所述第一标识对应的4交验码,并将所述第一标 识和所述第 一标识对应的校验码复制到所述存储器中。
5. 根据权利要求3所述的方法,其特征在于,所述写入所述第二 标识之后,还包括在所述内存中写入所述第二标识覆盖所述第一标识,计算 并保存所述第二标识对应的校验码,并将所述第二标识和所述 第二标识对应的校验码复制到所述存储器中覆盖所述第 一标 识和所述第 一标识对应的才交-睑石马。
6. 根据权利要求3所述的方法,其特征在于,所述方法还包括读耳又所述内存中当前的标识,并计算读取的所述标识的参 考校验码,如果计算的所述参考校验码与所述内存中存储的所 述标识对应的4文-验码一致,则读取所述标识所指示的存^诸区 j成,其中,所述标识为所述第一标识或所述第二标识。
7. 根据权利要求6所述的方法,其特征在于,如果在所述内存中 读取的所述参考4交-睑码与所述标识对应的才交-验码不一致,所述 方法还包括读取所述存^f诸器中当前的标识,并计算读取的所述标识的 参考校验码,如果计算的所述参考校验码与所述存储器中存储 的所述标识对应的校验码一致,则读取所述标识所指示的存储 区域,其中,所述标识为所述第一标识或所述第二标识。
8. 根据权利要求3所述的方法,其特征在于,所述方法还包括为所述多组数据分别设置相应的数据标识,所述凄t据标识 在其对应的数据被存储到第 一存储区域时被写入到所述内存并覆盖在前写入的fW居标识;在将完成更新的多组数据存储到所迷第 一存储区域失败 时,从所述内存中读取数据标识,并将读取的所述数据标识的 凄史据确定为存Y渚失败的数据。
9 一种基于嵌入式数据库的存储装置,其特征在于,包括第一设置模块,用于在存储器上预先设置第一存储区域和 第二存储区域,其中,所述存储器用于存储嵌入式数据库的数 据;更新才莫块,用于对所述嵌入式数据库的多组凄t据进^亍更新 操作,并且,对于完成更新的每组数纟居,分別存々者到所述第一 存储区域;处理才莫块,用于完成更新的多组凄t据都成功存々者到所述第 一存储区域时,将所述第 一存储区域中存储的所述多组数据拷 贝到所述第二存储区域中。
10 根据权利要求9所述的装置,其特征在于,所述装置还包括第二设置冲莫块,用于设置指示将修改的所述多组数据存储 到所述第 一存储区域下的第 一标识,及指示将所述第 一存储区 域中的修改后的所述多组数据存储到所述第二存储区域下的 第二标识;写入沖莫块,用于在内存中写入所述第一标识和/或所述第所述处理模块,用于将所述嵌入式数据库中修改的所述多 组数据存储到所述第一存储区域中,和/或将所述第一存储区 域中存储的所述多组数据拷贝到所述第二存储区域中。
全文摘要
本发明公开了一种基于嵌入式数据库的存储方法和装置,其中,该方法包括在存储器上预先设置第一存储区域和第二存储区域,其中,存储器用于存储嵌入式数据库的数据;对嵌入式数据库的多组数据进行更新操作,并且,对于完成更新的每组数据,分别存储到第一存储区域;如果将完成更新的多组数据都成功存储到第一存储区域,则将第一存储区域中存储的多组数据拷贝到第二存储区域中。借助于本发明的技术方案,通过在存储器上设置两个存储区域,并将数据分别保存在这两个区域上,保证了系统在存盘过程中发生严重错误时能够重新恢复,并且可以监控错误数据发生的位置。
文档编号G06F17/30GK101430705SQ200810179539
公开日2009年5月13日 申请日期2008年11月29日 优先权日2008年11月29日
发明者胡海生, 颖 黄 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1