在后台管理***中实现数据库升级的***和方法
技术领域
本发明涉及一种数据库升级的***和方法,尤其涉及一种在后台管理***中实现数据库升级的***和方法。
背景技术
软件产品在完全停止开发以前,都存在版本升级的可能,因种种原因,要求由低版本升级到高版本。在嵌入式通信***中一般都是采用前后台这样一种体系结构,前台是嵌入式***主机,后台是Win NT/2000管理***,在后台管理***中应用关系数据库保存主机数据。在后台管理***软件版本升级时,有必要升级相应版本的数据库,方便版本升级。
现有的数据库升级是当后台管理***软件版本升级安装后,重新创建数据库,所有与业务相关或者需要定制的数据表数据需要在后台管理***客户端重新手工配置。由于与后台管理***的软件版本相应的数据库不能随之升级,而是要重新创建数据库,因此原版本中配置的业务数据也随之丢失了,这给前台主机数据配置带来了很多不便。故现有技术存在以下缺点:
1.在业务数据表较多的情况下,重新配置数据需要耗费大量的人力;
2.还原原版本的配置数据误配率高,某些数据表易漏配,从而增加了开发和测试人员问题定位的难度;
3.重新配置数据所花费的时间成本长,不利于快速响应客户需求;
4.做不到数据库随后台管理***软件版本的无缝升级。
发明内容
本发明所要解决的技术问题在于提供一种应用于嵌入式通信***中的在后台管理***中实现数据库升级的***和方法,其能实现智能化和自动化升级,不需要人参与,能自动识别源版本和目的版本,实现后台管理***的数据库随软件版本升级而平滑升级。
为解决上述技术问题,本发明所采用的技术方案是:提供一种在后台管理***中实现数据库升级的***,其包括版本识别子***、版本升级子***和描述/知识***,其中所述版本识别子***产生和维护软件现有各个版本数据库的描述/知识;所述版本升级子***利用所述描述/知识对数据库进行升级;所述描述/知识***由若干描述文件组成,是版本升级子***的输入,版本识别子***的输出。
上述技术方案的进一步改进在于:所述描述文件包括数据库描述文件、数据库版本描述文件、数据库版本识别文件、数据库表描述文件和数据库版本间升级SQL脚本文件。
所述描述文件还包括预处理SQL脚本文件和后处理SQL脚本文件。
为解决上述另一技术问题,本发明所采用的技术方案是:提供一种在后台管理***中实现数据库升级的方法,其包括以下步骤:版本识别子***产生和维护软件现有各个版本数据库的描述/知识;版本升级子***利用上述描述/知识对数据库进行升级。
上述技术方案的进一步改进在于:所述版本识别子***产生和维护软件现有各个版本数据库的描述/知识包括以下步骤:
a)版本识别子***从数据库描述文件中,读取所有需要升级数据的数据库信息;
b)版本识别子***生成数据库版本描述文件;
c)版本识别子***生成数据库版本识别文件;
e)版本识别子***生成数据库版本间升级SQL脚本文件;
f)版本识别子***生成数据库表描述文件;
g)版本识别子***检查数据库版本描述文件中的版本间升级关系是否构成有向无环图,若构成有向无环图,则比较版本差异,输出详细报告,若不构成,则结束版本识别。
所述步骤c)和e)之间还包括步骤d),即版本识别子***判断数据库中的表是否存在约束,若存在约束,则版本识别子***生成数据库版本的预处理SQL脚本文件和后处理SQL脚本文件,若不存在约束则直接执行步骤e)。
上述技术方案的进一步改进在于:所述版本升级子***利用上述描述/知识对数据库进行升级包括以下步骤:
h)版本升级子***从数据库描述文件中,读取所有需要升级数据的数据库信息;
i)版本升级子***从数据库版本描述文件中,读取数据库的所有版本信息;
i)版本升级子***根据数据库版本识别文件,读取数据库版本特征信息,根据版本特征信息识别数据库的源版本和目的版本;
k)版本升级子***从数据库版本描述文件中,读取数据库版本间的升级关系,分析得到从源版本到目的版本的最短升级路径;
l)版本升级子***沿着从源版本到目的版本的最短升级路径,执行版本间的升级SQL脚本文件,调整源版本数据库的表结构和数据;
m)版本升级子***从数据库表描述文件中,读取所有表的导入数据方式,根据导入数据方式,将各表的数据由源版本数据库导入目的版本数据库。
所述步骤m)进一步包括步骤n),即如果该表存在约束,则在导入数据前执行该表的预处理SQL脚本文件,在导入数据后执行该表的后处理SQL脚本文件。
步骤k)所述的分析从源版本到目的版本的最短升级路径采用求有向无环图中某源点到其余各顶点最短路径的算法。
本发明的有益效果是:由于本发明采用版本识别子***、版本升级子***和描述/知识***结合实现在后台管理***中的数据库升级,因此其能实现智能化和自动化升级,不需要人参与,能自动识别源版本和目的版本,实现后台管理***的数据库随软件版本升级而平滑升级,该基于描述的数据库升级方法使得***具有良好的可扩充性;另外,本发明能够集成到后管理模块软件安装盘中,提供升级安装选项,在安装后管理模块软件的同时升级数据,且数据库升级的绝大部分一致性正确性的检查工作由***完成,从而减少开发/维护人员工作;再者,由于本发明的分析从源版本到目的版本的最短升级路径采用的是求有向无环图中某源点到其余各顶点最短路径的算法,因此在数据库升级过程中能确定从源版本到目的版本的升级路径和策略,当从后台管理***软件的低版本升级到高版本时,它能寻找一条最短的升级路径对数据库进行升级。
附图说明
图1是本发明在后台管理***中实现数据库升级的***架构图。
图2是图1所示***的版本识别子***工作示意图。
图3是图1所示***的版本升级子***工作示意图。
图4是本发明分析源版本到目的版本升级路径的算法所采用的有向无环图。
具体实施方式
请参阅图1,本发明在后台管理***中实现数据库升级的***包括版本识别子***、版本升级子***和描述/知识***,其中版本识别子***产生和维护软件现有各个版本数据库的描述/知识;版本升级子***利用上述描述/知识对数据库进行升级;描述/知识***由若干描述文件组成,是版本升级子***的输入,版本识别子***的输出,描述文件包括:数据库描述文件、数据库版本描述文件、数据库版本识别文件、预处理SQL脚本文件、后处理SQL脚本文件、数据库表描述文件和数据库版本间升级SQL脚本文件。其中:
1)数据库描述文件
概述:描述升级过程中所要升级的数据库的数据。整个版本升级***就使用一个该数据库描述文件。
2)数据库版本描述文件
概述:描述数据库的所有版本和版本间的升级关系。每个要升级的数据库有一个该数据库版本描述文件。
3)数据库版本识别文件
概述:保存该版本的数据库信息,包含数据库中所有表信息,如表结构定义(必选,所有表)、字段含义(可选,主机业务表)、字段枚举值含义(可选,主机业务表),用于识别各个版本。数据库的每个版本有一个该数据库版本识别文件。
4)预处理SQL脚本文件
概述:预处理SQL脚本文件分为:数据库预处理SQL脚本文件,表预处理SQL脚本文件。每个版本每个数据库最多有一个数据库预处理SQL脚本文件,其在数据库导入数据前执行,任何需要在数据库导入数据前执行的特殊处理,都可以在该文件中写SQL脚本。每个版本每个数据库每个表最多有一个表预处理SQL脚本文件,其在导入该表数据前执行,任何需要在导入该表数据前执行的特殊处理,都可以在该文件中写SQL脚本。
5)后处理SQL脚本文件
概述:后处理SQL脚本文件分为:数据库后处理SQL脚本文件,表后处理SQL脚本文件。每个版本每个数据库最多有一个数据库后处理SQL脚本文件,其在数据库导入数据后执行,任何需要在数据库导入数据后执行的特殊处理,都可以在该文件中写SQL脚本。每个版本每个数据库每个表最多有一个表后处理SQL脚本文件,其在导入该表数据后执行,任何需要在导入该表数据后执行的特殊处理,都可以在该文件中写SQL脚本。
6)数据库版本间升级SQL脚本文件
概述:用于写目的版本相对源版本变化的升级脚本。如果目的版本相对源版本增加了表,应该写创建表的脚本。如果目的版本相对源版本减少了表,应该写删除表的脚本。如果两个版本之间,某表结构(包括字段定义,枚举值定义)变化,应该为它写升级脚本,负责调整表结构和数据,使其与新版本一致。
7)数据库表描述文件
概述:描述升级过程中,数据库中所有表的导入数据方式。每个要升级的数据库有一个该数据库表描述文件。
数据库中的表大致分为:a、有缺省数据,不可能修改/删除缺省数据或增加新数据;b、有缺省数据,不可能修改/删除缺省数据但可能增加新数据;c、有缺省数据,可能修改/删除缺省数据但不可能增加新数据;d、有缺省数据,可能修改/删除缺省数据或增加新数据;e、没有缺省数据,可能增加新数据。相应地,导入数据方式分为:0(完全保留新版本的缺省数据,适合类型a),1(完全导入老版本中的数据,适合类型d和e),2(自定义SQL脚本方式,比较灵活,能适合类型b和C以及一些可能还没有考虑到的特殊情况)。
本发明在后台管理***中实现数据库升级的方法包括版本识别子***产生和维护软件现有各个版本数据库的描述/知识的步骤以及版本升级子***利用上述描述/知识对数据库进行升级的步骤。
请参阅图2,本发明在后台管理***中实现数据库升级的***的版本识别子***以描述/知识***为输出,负责生成描述文件和检查描述文件的正确性、一致性。版本识别子***产生和维护软件现有各个版本数据库的描述/知识包括以下步骤:
a)版本识别子***从数据库描述文件中,读取所有需要升级数据的数据库信息;
b)版本识别子***生成数据库版本描述文件;
c)版本识别子***生成数据库版本识别文件;
d)版本识别子***判断数据库中的表是否存在约束,若存在约束,则版本识别子***生成数据库版本的预处理SQL脚本文件和后处理SQL脚本文件,若不存在约束则直接执行步骤e);
e)版本识别子***生成数据库版本间升级SQL脚本文件;
f)版本识别子***生成数据库表描述文件;
g)版本识别子***检查数据库版本描述文件中的版本间升级关系是否构成有向无环图,若构成有向无环图,则比较版本差异,输出详细报告,若不构成,则结束版本识别。
请参阅图3,本发明在后台管理***中实现数据库升级的***的版本升级子***利用版本识别子***生成的描述文件对数据库进行升级,版本升级子***利用上述描述/知识对数据库进行升级包括以下步骤:
h)版本升级子***从数据库描述文件中,读取所有需要升级数据的数据库信息;
i)版本升级子***从数据库版本描述文件中,读取数据库的所有版本信息;
j)版本升级子***根据数据库版本识别文件,读取数据库版本特征信息,根据版本特征信息识别数据库的源版本和目的版本;
k)版本升级子***从数据库版本描述文件中,读取数据库版本间的升级关系,分析得到从源版本到目的版本的最短升级路径;
l)版本升级子***沿着从源版本到目的版本的最短升级路径,执行版本间的升级SQL脚本文件,调整源版本数据库的表结构和数据;
m)版本升级子***从数据库表描述文件中,读取所有表的导入数据方式,根据导入数据方式,将各表的数据由源版本数据库导入目的版本数据库,如果该表存在约束,则在导入数据前执行该表的预处理SQL脚本文件,在导入数据后执行该表的后处理SQL脚本文件。
其中步骤k)所述的分析从源版本到目的版本的最短升级路径采用求有向无环图中某源点到其余各顶点最短路径的算法。请参阅图4,是本发明的有向无环图,其中V1、V2、V3、V4、V5、V6构成现有软件的版本。Vi(i=1,2,3,4...)构成有向无环图中的顶点集。顶点之间用有向的弧连接表示从一个版本可以升级到另一个版本,按照技术方案中的描述,即是两个版本之间存在升级关系。例如,从版本V1升级到V6有以下几条升级路径:
1) V1 V2 V3 V4 V5 V6
2) V1 V2 V3 V5 V6
3) V1 V2 V3 V6
4) V1 V3 V4 V5 V6
5) V1 V3 V5 V6
6) V1 V3 V6
根据上述有向无环图最短路径算法能够分析出最短路径为V1 V3 V6,即为数据库版本V1升级到V6的最短路径。