一种机载嵌入式内存数据库映像生成和加载方法与流程

文档序号:14870773发布日期:2018-07-06 23:25阅读:588来源:国知局

本发明属于计算机系统软件技术领域,具体涉及一种机载嵌入式内存数据库映像生成和加载方法。



背景技术:

新一代航空电子系统为了提升数据管理能力,开始引入数据库技术进行数据管理。为了满足机载系统对实时性的要求,机载数据库通常以嵌入式内存数据库的形式存在。由于内存在设备掉电后其保存的数据会全部丢失,为了确保内存数据的可靠性,迫切需要一种适用于内存数据库的备份和恢复方法。另一方面,航电系统开发人员为了提高开发效率和进行数据分析,希望机载数据库具有在pc和机载设备之间进行快速迁移的能力,实现在pc上建立和维护机载数据库,需要的时候再导入机载设备,以及从机载数据库中导出数据到pc上进行分析。



技术实现要素:

本发明的目的:

本发明的目的在于提出一种用于机载嵌入式内存数据库的映像生成和加载方法,实现了机载内存数据库的备份和恢复功能以及快速迁移能力,提高机载内存数据库的可靠性,同时减少应用程序开发工作对于机载设备的依赖。

本发明的技术方案:

本发明的具体技术解决方案如下:

一种机载嵌入式内存数据库映像生成和加载方法,映像生成包括:

a、对当前数据库进行分析,获取生成数据库映像所需要的校验信息、配置信息和记录信息。其中,校验信息由数据库管理系统版本校验码、数据字典校验码,内存大小端配置校验码,crc32校验码组成;配置信息由运行时配置、字节对齐配置、数据页大小配置组成;记录信息由数据记录以及索引组成。;

b、依次将校验信息、配置信息和记录信息写入映像文件。而且,记录信息在写入映像文件之前,要将其中各条数据记录及其各个字段在内存中的地址转换成该地址相对于一个基地址的偏移量。

映像加载包括:

c、从映像文件中读取校验信息,并与执行加载操作的数据库管理系统保留的校验信息进行比对,二者完全一致才能继续加载;

d、校验通过后,创建新数据库,从映像文件中读取配置信息,并根据获取的配置信息对新数据库进行配置,使其与生成映像的原始数据库的配置一致;

e、完成数据库创建和配置后,将映像文件中剩余的记录信息填充到新创建的数据库的用于保存记录信息的内存空间。而且,记录信息中数据记录和索引的填充位置由新数据库的基地址与映像文件中的偏移量相加得到。

上述过程中,映像文件由应用程序提供给数据库,数据库读写该映像文件的接口由应用程序实现。

本发明具有的优点效果:

本发明方法针对机载环境对内存数据库的可靠性要求,实现了机载内存数据库的备份和恢复能力,确保内存数据在设备掉电后不会全部丢失。

针对机载应用的开发特点,实现了数据库的快速迁移。使开发人员既可以在pc机上建立数据库然后导入到机载设备上,又可以从机载设备中导出数据库到pc机上进行分析和更新。减少了开发工作对机载设备的依赖,提高了开发效率。

而且,将数据的位置信息以偏移量的形式写入映像文件,使其可以加载到任意内存空间而不需要进行内存地址转换。映像文件及其操作接口由应用程序提供给数据库,使得数据库备份、恢复和迁移不依赖于特定的文件系统和操作系统。提高了机载内存数据库的易用性。

附图说明

图1是数据库映像生成示意图;

图2是数据库映像加载示意图;

图3是数据的内存地址与偏移量转换示意图;

图4是数据库映像生成和加载流程图。

具体实施方式

本发明的实施方式如下:

机载应用程序在运行过程中需要进行内存数据库备份,或者分析人员需要将内存数据库导出到pc时,向机载内存数据库管理系统发起映像生成请求,同时创建一个空的映像文件image,并将该映像文件的描述符以及写该文件的函数fwriter提供给数据库管理系统。若映像文件image保存在本地文件系统,fwriter应实现为本地文件系统的文件写。若映像文件image保存在其他节点,则fwriter应实现为远程的文件写。

数据库管理系统收到映像生成请求后,调用函数fwriter将自身保存的校验信息写入映像文件image,校验信息的内容如下表所示。

完成校验信息的写入后,再调用函数fwriter将映像生成操作涉及的数据库的配置信息写入映像文件image,配置信息的内容如下表所示。

完成校验信息的写入后,将映像生成操作涉及的数据库的数据记录和索引的内存地址转换成其相对于一个基地址的偏移量,再调用函数fwriter写入映像文件image。举例说明,当前数据库中的一条数据记录data包含三个字段a、b、c,长度分别为4字节,4字节和8字节,数据记录头长度4字节。如图3所示,其中数据记录data在内存中的地址为0x10000000,则字段a、b、c的内存地址分别为0x10000004,0x10000008和0x1000000c。设当前数据库的基地址就是0x10000000,则经过转换数据记录data的位置偏移量应当是0x10000000减去0x10000000,即0。相应的,其字段a、b、c的位置偏移量为4、8和12。

完成记录信息的写入后,映像文件生成完毕,内存数据库备份或导出操作结束。整个过程如图1所示。

机载应用程序在掉电重启后需要进行内存数据库恢复,或者开发人员需要将pc上建立的内存数据库导入到机载设备时,向机载内存数据库管理系统发起映像加载请求,同时将待加载的映像文件image的描述符以及读该文件的函数freader提供给数据库管理系统。同理,若映像文件image存储在本地文件系统,则freader应实现为本地文件系统的文件读。若映像文件image保存在其他节点,则freader应实现为远程的文件读。

数据库管理系统收到映像加载请求后,调用函数freader将映像文件image中的校验信息读到内存缓冲区,并将校验信息的内容与自己保存的校验信息进行比对,包括数据库管理系统版本,数据字典一致性,内存大小端配置一致性,映像文件完整性。若某一项校验信息不一致,校验失败,数据库管理系统通知应用程序影响加载失败。若所有校验信息都一致,校验成功,继续进行映像的加载。

校验通过后,调用函数freader将映像文件image中的配置信息读到内存缓冲区,创建一个新的数据库,并根据配置信息中的配置数据对这个新的数据库进行配置,包括运行时功能配置,字节对齐配置,页大小配置。

完成数据库的创建和配置后,继续调用freader读取映像文件image中的记录信息,开始进行记录信息的填充。在填充记录前,将读到内存缓冲区的数据记录和索引的位置偏移量还原成内存地址,并将数据记录和索引复制到该地址。举例说明,映像文件中数据记录data的偏移量为0,其字段a、b、c的偏移量为4、8、12。如图3所示,由于新数据库的内存空间地址发生了变化,其基地址变成了0x20000000,则在新数据库中,数据记录data的内存地址应当是0x20000000加上0,即0x20000000,以此类推,字段a、b、c的内存地址应当是0x20000000加上4、8、12,即0x20000004、0x20000008和0x2000000c。在映像文件中用偏移量来表示数据的位置,使得数据库可以在任何内存空间进行数据加载而不需要地址转换,提高了内存数据加载的效率。

完成记录信息的填充后,映像文件加载完毕,内存数据库恢复或导入操作结束。整个过程如图2所示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1