一种嵌入式数据库的在线升级控制方法和装置的制作方法

文档序号:6560186阅读:109来源:国知局
专利名称:一种嵌入式数据库的在线升级控制方法和装置的制作方法
技术领域
本发明涉及嵌入式数据库,尤其涉及一种嵌入式数据库的在线升级控制方法和装置。
背景技术
嵌入式数据库作为一种与具体应用紧密结合,高效紧凑的数据库系统,在通信领域得到广泛应用。由于嵌入式数据库系统的针对性极强,与具体应用的捆绑相当紧密,具有“定制”的特点,因此,一旦其服务的上层应用系统发生更改,嵌入式数据库系统中支撑上层应用系统的相应部分也需要随之改变。
作为典型的嵌入式数据库系统实现,其原理是在申请一块内存并以特定方式进行规划,用于管理上层应用系统所需数据的存取。可见,上层应用系统对数据的需求直接影响到这块内存的具体规划。这种规划一般是在嵌入式数据库系统设计中就已经决定,嵌入式数据库系统运行过程中不会发生变化。
因为嵌入式数据库的升级涉及到嵌入式数据库结构的更改,目前,只能采用整个嵌入式数据库系统替换的方式进行嵌入式数据库的升级。通过卸载旧的嵌入式数据库系统,替换新的嵌入式数据库系统的升级方式不可避免的会导致系统运行的中断。对于服务持续性要求极高的通信行业,其影响是非常大的。

发明内容
本发明提供一种嵌入式数据库的在线升级控制方法和装置,用以解决现有技术中存在不能在线升级嵌入式数据库的问题。
为了解决上述技术问题,本发明提供了一种嵌入式数据库的在线升级控制方法,包括以下步骤
申请新的内存区域,并在所述新的内存区域中生成升级后的嵌入式数据库;将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址。
进一步地,上述方法还可具有以下特点将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址之后,释放升级前的嵌入式数据库的内存区域。
进一步地,上述方法还可具有以下特点申请新的内存区域之前,先通过热补丁方式将所述嵌入式数据库的升级信息提供给上层应用系统。
进一步地,上述方法还可具有以下特点通过热补丁方式将所述嵌入式数据库的升级信息提供给上层应用系统时,还通过热补丁方式将所述嵌入式数据库支撑的新版本数据处理方式提供给上层应用系统;将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址之后,上层应用系统开始使用所述新版本数据处理方式。
进一步地,上述方法还可具有以下特点将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址时,中止当前所述嵌入式数据库的所有操作访问。
进一步地,上述方法还可具有以下特点预先为所述嵌入式数据库定义内核基址,记录所述嵌入式数据库当前内存区域的地址,使对所述嵌入式数据库的操作访问指向所述嵌入式数据库的当前内存区域。
进一步地,上述方法还可具有以下特点所述在所述新的内存区域中生成升级后的嵌入式数据库包括初始化所述新的内存区域,将升级前的嵌入式数据库中的数据同步到所述升级后的嵌入式数据库中。
进一步地,上述方法还可具有以下特点所述方法中,如果在所述申请新的内存区域或者所述在所述新的内存区域中生成升级后的嵌入式数据库的处理流程中发生异常,则终止后续处理,并释放所述新的内存区域。
进一步地,上述方法还可具有以下特点在所述嵌入式数据库内存区域的起始位置设置系统管理段,记录所述嵌入式数据库中各数据库表格的内存区域的地址相对于所述嵌入式数据库的内存区域的地址的偏移量信息,使对于所述数据库表格的操作访问根据所述内核基址记录的所述嵌入式数据库当前内存区域的地址和所述偏移量信息指向所述数据库表格。
进一步地,上述方法还可具有以下特点所述申请新的内存区域,并在所述新的内存区域中生成升级后的嵌入式数据库包括根据所述升级后的嵌入式数据库的结构申请新的内存区域,初始化所述偏移量信息和所述所述数据库表格,并将升级前的嵌入式数据库中的数据同步到所述升级后的嵌入式数据库中。
进一步地,上述方法还可具有以下特点申请新的内存区域之前,先通过热补丁方式将所述嵌入式数据库的结构、系统管理段初始值以及数据库表格初始值提供给上层应用系统。
本发明还提供了一种嵌入式数据库的在线升级控制装置,包括处理模块和切换模块,其中所述处理模块,申请新的内存区域,并在所述新的内存区域中生成升级后的嵌入式数据库;所述切换模块,在所述处理模块生成升级后的嵌入式数据库之后,将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址。
进一步地,上述装置还可具有以下特点所述装置还包括第一释放控制模块,用于在所述切换模块完成切换之后,释放升级前的嵌入式数据库的内存区域。
进一步地,上述装置还可具有以下特点所述装置还包括与所述处理模块连接的第一存储单元,用于保存所述嵌入式数据库的升级信息。
进一步地,上述装置还可具有以下特点所述装置还包括与所述切换模块连接的第二存储单元,用于保存为所述嵌入式数据库定义的内核基址。
进一步地,上述装置还可具有以下特点所述处理模块包括升级处理单元,申请新的内存区域,并初始化所述新的内存区域;同步单元,在所述升级处理单元初始化所述新的内存区域后,将升级前的嵌入式数据库中的数据同步到所述升级后的嵌入式数据库中。
进一步地,上述装置还可具有以下特点所述装置还包括第二释放控制模块,其中如果所述升级处理单元或者同步单元在其处理流程中发生异常,则终止后续处理,并通知所述第二释放控制模块;所述第二释放控制模块根据所述通知释放所述新的内存区域。
本发明有益效果如下采用本发明技术方案,申请新的内存区域,并在该新的内存区域中生成升级后的嵌入式数据库;将内核基址记录的该嵌入式数据库当前内存区域的地址切换为该新的内存区域的地址。由于在本发明技术方案中,申请新的内存区域,在该新的内存区域中生成升级后的嵌入式数据库以及将内核基址记录的该嵌入式数据库当前内存区域的地址切换为该新的内存区域的地址都可以在系统运行过程中完成,因此在本发明中,嵌入式数据库可以实现在线升级,不需要中断系统的运行,解决了系统运行过程中无法更改嵌入式数据库结构的弊端。而通过将升级前的嵌入式数据库中的数据同步到所述升级后的嵌入式数据库中,进一步保证了服务的持续性。


图1为本发明实施例中嵌入式数据库的示意图;图2为本发明实施例中嵌入式数据库中系统管理段的示意图;图3为本发明实施例中嵌入式数据库的在线升级控制流程图;图4为本发明实施例中嵌入式数据库的在线升级控制装置框图。
具体实施例方式
本发明的核心思想是,申请新的内存区域,并在该新的内存区域中生成升级后的嵌入式数据库;将内核基址记录的该嵌入式数据库当前内存区域的地址切换为该新的内存区域的地址。
下面结合附图和实施例对本发明作进一步地说明。
嵌入式数据库本身不是完整的数据库系统,它需要与具体地上层应用系统绑定来实现对于嵌入式数据库的各种操作访问。嵌入式数据库的典型实现是申请一块内存区域并对该内存区域进行管理。在本实施例中,对嵌入式数据库的具体管理方式是定义一个上层应用系统的全局变量内核基址,用于记录该块内存的起始地址,使对该嵌入式数据库的操作访问指向该块内存,其他对数据库内存区域的操作访问均在此基址上进行地址偏移实现。该地址偏移由在嵌入式数据库起始位置设置的系统管理段记录的各数据库表格所在内存区域的起始地址相对于该嵌入式数据库所在内存区域的起始地址的偏移量信息实现。即对于该嵌入式数据库的操作访问会根据内核基址指向该嵌入式数据库所在内存区域的起始地址,而对于该嵌入式数据库中数据库表格的操作访问,会根据内核基址记录的该嵌入式数据库所在内存区域的起始地址和系统管理段记录的该数据库表格的偏移量信息指向数据库表格所在内存区域的起始地址。
本实施例中的嵌入式数据库如图1所示,包括系统管理段以及若干数据库表格,其中,系统管理段被设置在嵌入式数据库内存区域的起始位置,其中按固定格式记录了各数据库表格所在内存区域的起始地址相对于该嵌入式数据库所在内存区域的起始地址的偏移量信息,如图1所示,当与该嵌入式数据库绑定的上层应用系统需要操作访问表1中的数据时,根据该嵌入式数据库所在内存区域的起始地址和表1的起始地址偏移量x就能够得到表1所在内存区域的起始地址,对表1进行操作访问。同理,当与该嵌入式数据库绑定的上层应用系统需要操作访问表2中的数据时,根据该嵌入式数据库所在内存区域的起始地址和表2的起始地址偏移量y就能够得到表2所在内存区域的起始地址,对表2进行操作访问。
在本实施例中,系统管理段如图2所示,按照固定的格式记录了嵌入式数据库中数据库表格的信息,系统管理段分别用4字节区域保存表格数量,各个表格的起始地址偏移量、记录数目和记录长度等。在本实施例中,系统管理段中所记录的信息的初始值被封装在一个函数DbInitFunc中,根据输入的该嵌入式数据库的起始地址进行内存定位,并对系统管理段里的各个信息进行集体赋值,即函数DbInitFunc依次对系统管理段的‘表格数目n’以及各个表格的信息‘表1起始地址偏移量’、‘表1记录数目’、‘表1记录长度’直到‘表n起始地址偏移量’、‘表n记录数目’、‘表n记录长度’进行赋值。一般情况下该函数仅在系统初始化允许被调用一次。
在上层应用系统对本实施例中的嵌入式数据库进行操作访问时,根据内核基址找到该嵌入式数据库所在内存区域的起始地址,并根据系统管理段中记录的数据库表格的起始地址偏移量信息得到所要操作访问的数据库表格所在内存区域的起始地址,对该数据库表格进行操作访问。
在本实施例的嵌入式数据库中,可以只包括一个数据库表格,在这种情况下,不需要系统管理段记录数据库表格的起始地址偏移量信息,而直接通过内核基址对嵌入式数据库进行操作访问。
本实施例中嵌入式数据库的在线升级控制方法如图3所示,包括以下步骤步骤S101,通过热补丁的方式将上层应用系统新版本的数据处理方式以及支撑该新版本数据处理方式的嵌入式数据库的升级信息提供给上层应用系统;采用热补丁的方式,可以在系统运行过程中,将上层应用系统新版本的数据处理方式以及支撑该新版本数据处理方式的嵌入式数据库的升级信息提供给上层应用系统。并且,使得上层应用系统能够区分旧版本的数据处理方式和新版本的数据处理方式,可以采用旧版本的数据处理方式或者新版本的数据处理方式处理数据。同样,上层应用系统也能够获知升级前的嵌入式数据库的信息和升级后的嵌入式数据库的信息。
在本实施例中,通过重新编译并通过热补丁的方式替换函数DbInitFunc,在替换后的函数DbInitFunc中体现上层应用系统新版本的数据处理方式以及支撑该新版本数据处理方式的嵌入式数据库的升级信息,从而将上层应用系统新版本的数据处理方式以及支撑该新版本数据处理方式的嵌入式数据库的升级信息提供给上层应用系统。嵌入式数据库的升级信息包括上层应用系统期望的升级后的嵌入式数据库的数据库结构、系统管理段初始值以及各个数据库表格初始值等。该升级后嵌入式数据库的结构应该包括系统管理段和数据库表格,其中系统管理段被设置在该升级后嵌入式数据库的起始位置。
步骤S102,根据该嵌入式数据库的升级信息中升级后嵌入式数据库的结构申请一块新的内存区域;步骤S103,根据该嵌入式数据库的升级信息初始化该新的内存区域中升级后嵌入式数据库的结构决定的系统管理段,将各个数据库表格的起始地址偏移量信息写入系统管理段;步骤S104,根据该升级信息中预定义的配置,初始化该新的内存区域中升级后嵌入式数据库的结构决定的各个数据库表格;在本实施例中,根据该新的内存区域的起始地址和各个数据库表格的起始地址偏移量信息找到各个数据库表格。
步骤S105,将升级前的嵌入式数据库中的数据同步到升级后的嵌入式数据库中,以保证服务的连续性;由于在本实施例中是通过热补丁的方式替换函数DbInitFunc,上层应用系统能够获知升级前的嵌入式数据库的信息和升级后的嵌入式数据库的信息,因此,在本步骤中,对比该升级前的嵌入式数据库的信息和升级后的嵌入式数据库的信息,可以获知升级后的嵌入式数据库相对于升级前的嵌入式数据库在结构上的变化。
在具体实现中,升级前的嵌入式数据库和升级后的嵌入式数据库之间的数据库结构往往仅是部分不同,对数据库结构未作变动的部分,将升级前的嵌入式数据库中的数据搬迁到升级后的嵌入式数据库的相应位置;对数据库结构变动的部分,则将升级前的嵌入式数据库中的数据适配到升级后的嵌入式数据库中。但在具体实现中也存在两者数据库结构完全不同的情况,在这种情况下,将升级前的嵌入式数据库中的数据适配到升级后的嵌入式数据库中。
在本发明的一个实例中,升级前的嵌入式数据库中存在一个管理VIP用户信息的表格,记录VIP用户的人名、身份证号。在升级后的嵌入式数据库中,该管理VIP用户信息的表格需要增加一项‘入网时间’,用于记录VIP用户的入网时间,则该表格的结构发生了变动。对于新增加的‘入网时间’信息,可以保持其初始值,待后续再加以调整;而对于升级前的嵌入式数据库中已有的用户信息,即VIP用户的人名、身份证号则需要搬迁到升级后的嵌入式数据库中。
步骤S106,将内核基址记录的该嵌入式数据库当前内存区域的地址切换为该新的内存区域的起始地址,使对于该嵌入式数据库的操作访问指向该新的内存区域的起始地址;切换内核基址时,要中止当前该嵌入式数据库的所有操作访问。在本实施例中,上述切换内核基址是通过一个函数来实现。在要进行内核基址切换时,调用该函数,一旦进入该函数,系统调度上锁不允许任务切换,中止当前该嵌入式数据库的所有操作访问,然后将新的嵌入式数据库所在内存区域的起始地址赋值给该内核基址,系统调度解锁,从而完成内核基址的切换。
步骤S107,切换内核基址成功后,上层应用系统使用新版本的数据处理方式,并释放升级前的嵌入式数据库的内存区域。
在本实施例中,上层应用系统在根据替换后的函数DbInitFunc获知新版本的数据处理方式后,仍然使用旧版本的数据处理方式处理数据,直到切换内核基址成功后,为上层应用系统提供数据的嵌入式数据库变成了升级后的嵌入式数据库,相应的,上层应用系统开始使用新版本的数据处理方式。
在本步骤的具体实现中,需要一个全局标记,标识内核基址是否已经切换完成。当内核基址的切换完成之后,设置该全局标记,而上层应用系统则判断该全局标记是否被设置来决定是否使用新版本的数据处理方式。
在上述实例中,上层应用系统的新版本的数据处理方式中,应该包括对于该管理VIP用户信息的表格新增了一项‘入网时间’的数据处理,但在切换内核基址成功之前,上层应用系统实际读取到的数据仍然由升级前的嵌入式数据库提供,并不包括‘入网时间’的记录,因此,在切换内核基址成功之前,使用旧版本的数据处理方式,在切换内核基址成功之后,使用新版本的数据处理方式。
在上述流程中,从步骤S102至S105,在具体实施中可能出现异常,当步骤S102至S105中的任何一个环节出现异常时,终止后续处理,释放该新的内存区域。
如图4所示,本实施例中嵌入式数据库的在线升级控制装置包括第一存储单元10、第二存储单元20、处理模块30和切换模块40,其中第一存储单元10,保存嵌入式数据库的升级信息;第二存储单元20,保存为嵌入式数据库定义的内核基址;处理模块30,根据第一存储单元10中保存的嵌入式数据库的升级信息为需要升级的嵌入式数据库申请新的内存区域,并在该新的内存区域中生成升级后的嵌入式数据库,再在生成升级后的嵌入式数据库之后通知切换模块40;该处理模块30包括升级处理单元31和同步单元32,其中升级处理单元31,申请新的内存区域,并初始化该新的内存区域;同步单元32,在升级处理单元31初始化该新的内存区域后,将升级前的嵌入式数据库中的数据同步到升级后的嵌入式数据库中,再通知切换模块40。
切换模块40,根据处理模块30的通知将第二存储单元20保存的嵌入式数据库的内核基址切换为该新的内存区域的地址。
本实施例中的控制装置还可以包括与切换模块40连接的第一释放控制模块50,切换模块40在完成切换之后通知第一释放控制模块50,第一释放控制模块50释放升级前的嵌入式数据库的内存区域。
本实施例中的控制装置还可以包括第二释放控制模块60,如果升级处理单元31或者同步单元32在其处理流程中发生异常,则终止后续处理,并通知第二释放控制模块60;第二释放控制模块60根据该通知释放该新的内存区域。该第二释放控制模块60可以位于处理模块30之内,也可以位于处理模块30之外,只要能获知升级处理单元31或者同步单元32是否发生异常即可。如图4所示,本实施例中的第二释放控制模块60位于处理模块30之外。
可见,在本实施例中,嵌入式数据库在在线升级过程中采用双数据操作区的升级方式,解决了系统运行过程中无法更改嵌入式数据库结构的弊端,使得涉及到嵌入式数据库结构更改的升级可以通过在线补丁的方式进行,不需要中断系统运行,保证了服务的持续性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种嵌入式数据库的在线升级控制方法,其特征在于,包括以下步骤申请新的内存区域,并在所述新的内存区域中生成升级后的嵌入式数据库;将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址。
2.如权利要求1所述的方法,其特征在于,将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址之后,释放升级前的嵌入式数据库的内存区域。
3.如权利要求1所述的方法,其特征在于,申请新的内存区域之前,先通过热补丁方式将所述嵌入式数据库的升级信息提供给上层应用系统。
4.如权利要求3所述的方法,其特征在于,通过热补丁方式将所述嵌入式数据库的升级信息提供给上层应用系统时,还通过热补丁方式将所述嵌入式数据库支撑的新版本数据处理方式提供给上层应用系统;将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址之后,上层应用系统开始使用所述新版本数据处理方式。
5.如权利要求1所述的方法,其特征在于,将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址时,中止当前所述嵌入式数据库的所有操作访问。
6.如权利要求1所述的方法,其特征在于,预先为所述嵌入式数据库定义内核基址,记录所述嵌入式数据库当前内存区域的地址,使对所述嵌入式数据库的操作访问指向所述嵌入式数据库的当前内存区域。
7.如权利要求1所述的方法,其特征在于,所述在所述新的内存区域中生成升级后的嵌入式数据库包括初始化所述新的内存区域,将升级前的嵌入式数据库中的数据同步到所述升级后的嵌入式数据库中。
8.如权利要求1或7所述的方法,其特征在于,所述方法中,如果在所述申请新的内存区域或者所述在所述新的内存区域中生成升级后的嵌入式数据库的处理流程中发生异常,则终止后续处理,并释放所述新的内存区域。
9.如权利要求1所述的方法,其特征在于,在所述嵌入式数据库内存区域的起始位置设置系统管理段,记录所述嵌入式数据库中各数据库表格的内存区域的地址相对于所述嵌入式数据库的内存区域的地址的偏移量信息,使对于所述数据库表格的操作访问根据所述内核基址记录的所述嵌入式数据库当前内存区域的地址和所述偏移量信息指向所述数据库表格。
10.如权利要求9所述的方法,其特征在于,所述申请新的内存区域,并在所述新的内存区域中生成升级后的嵌入式数据库包括根据所述升级后的嵌入式数据库的结构申请新的内存区域,初始化所述偏移量信息和所述所述数据库表格,并将升级前的嵌入式数据库中的数据同步到所述升级后的嵌入式数据库中。
11.如权利要求9或10所述的方法,其特征在于,申请新的内存区域之前,先通过热补丁方式将所述嵌入式数据库的结构、系统管理段初始值以及数据库表格初始值提供给上层应用系统。
12.一种嵌入式数据库的在线升级控制装置,其特征在于,包括处理模块和切换模块,其中所述处理模块,申请新的内存区域,并在所述新的内存区域中生成升级后的嵌入式数据库;所述切换模块,在所述处理模块生成升级后的嵌入式数据库之后,将内核基址记录的所述嵌入式数据库当前内存区域的地址切换为所述新的内存区域的地址。
13.如权利要求12所述的装置,其特征在于,所述装置还包括第一释放控制模块,用于在所述切换模块完成切换之后,释放升级前的嵌入式数据库的内存区域。
14.如权利要求12所述的装置,其特征在于,所述装置还包括与所述处理模块连接的第一存储单元,用于保存所述嵌入式数据库的升级信息。
15.如权利要求12所述的装置,其特征在于,所述装置还包括与所述切换模块连接的第二存储单元,用于保存为所述嵌入式数据库定义的内核基址。
16.如权利要求12所述的装置,其特征在于,所述处理模块包括升级处理单元,申请新的内存区域,并初始化所述新的内存区域;同步单元,在所述升级处理单元初始化所述新的内存区域后,将升级前的嵌入式数据库中的数据同步到所述升级后的嵌入式数据库中。
17.如权利要求16所述的装置,其特征在于,所述装置还包括第二释放控制模块,其中如果所述升级处理单元或者同步单元在其处理流程中发生异常,则终止后续处理,并通知所述第二释放控制模块;所述第二释放控制模块根据所述通知释放所述新的内存区域。
全文摘要
本发明涉及嵌入式数据库,尤其涉及一种嵌入式数据库的在线升级控制方法和装置,用以解决现有技术中存在不能在线升级嵌入式数据库的问题。本发明的技术方案为申请新的内存区域,并在该新的内存区域中生成升级后的嵌入式数据库;将内核基址记录的该嵌入式数据库当前内存区域的地址切换为该新的内存区域的地址。采用本发明技术方案,嵌入式数据库可以实现在线升级,不需要中断系统的运行,保证了服务的持续性。
文档编号G06F12/02GK1908934SQ20061010383
公开日2007年2月7日 申请日期2006年8月2日 优先权日2006年8月2日
发明者吕玖有 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1