发明内容
本发明正是基于上述问题,提出了一种新的技术方案,可以提供一种适用于多项目的系统部署和升级方法,以解决系统部署和升级成本过高的问题。
有鉴于此,本发明提出了一种数据库更新装置,包括:获取单元,用于获取预设的脚本文件;解析单元,用于对所述脚本文件进行解析,从中解析出一个或多个脚本对象,生成脚本对象列表,其中,所述脚本对象中包括脚本版本、项目标识组合和脚本内容;提取单元,根据多个数据库中任一数据库的脚本版本和项目标识,遍历所述脚本对象列表,从所述脚本对象列表的一个或多个脚本对象中提取出与所述任一数据库对应的一个或多个所述脚本内容,以得到脚本执行列表;更新单元,根据所述脚本执行列表更新所述任一数据库。
项目标识组合中包括一个或多个项目标识,在项目标识组合中包括当前数据库的项目标识时,即说明项目标识组合对应的脚本内容适用于当前的数据库。这样,通过上述技术方案,可以自动解析脚本文件,自动升级多个项目的多个数据库,极大的降低了数据库升级实施的复杂程度以及系统部署和升级的成本。
在上述技术方案中,优选地,所述提取单元包括:对象获取子单元,在接收到获取指令时,从所述脚本对象列表中获取一个当前的脚本对象;第一判断子单元,判断所述当前的脚本对象的脚本版本是否大于所述任一数据库的脚本版本,在判断结果为是时,触发第二判断子单元;所述第二判断子单元,判断所述当前的脚本对象的项目标识组合是否与所述任一数据库的项目标识相匹配,在判断结果为是时,提取出所述当前的脚本对象的脚本内容,并将所述脚本内容添加至所述脚本执行列表;输出子单元,在检测到所述对象获取子单元已获取完所述脚本对象列表中的所有脚本对象时,输出所述脚本执行列表至所述更新单元。
在该技术方案中,通过版本的比较和项目标识的匹配从多个脚本对象中找到适合本数据库的脚本内容,并通过找到的脚本内容对数据库进行更新,这样,可以自动更新多个项目的不同数据库,减少用户的操作。
在上述技术方案中,优选地,所述更新单元还包括:版本确定单元,将所述脚本执行列表中的每个脚本内容对应的脚本版本进行比较,并将版本号最大的脚本版本作为所述任一数据库的当前脚本版本。
在该技术方案中,在更新数据库内容的同时更新数据库的版本,优选地,脚本执行列表中的脚本内容可以按照脚本版本的先后顺序进行排列,这样,在执行的时候按照脚本版本的先后顺序执行,在确定脚本版本的时候可以直接将最后一个脚本版本作为当前的脚本版本。这样,方便用户根据版本号进行版本控制、版本追溯和问题排查等操作。
在上述技术方案中,优选地,所述提取单元还用于:根据接收到的获取指令,获取与所述任一数据库对应的所述脚本版本和所述项目标识。
在该技术方案中,一个项目对应一个数据库,其中,各个项目的数据库拥有相同的数据结构,但是业务数据和功能控制参数信息不同。在数据库更新执行前可根据数据库链接读取数据库中保存的项目标识和脚本版本。
在上述技术方案中,优选地,还包括:设置单元,根据接收到的设置指令,设置所述脚本文件;以及存储单元,用于存储所述脚本文件。
在该技术方案中,开发人员可以根据脚本编写规则,针对不同的项目需求,编写相应的SQL脚本,并记录到脚本文件中,以根据脚本文件去更新数据库。
根据本发明的另一方面,还提供了一种数据库更新方法,包括:步骤202,获取预设的脚本文件;步骤204,对所述脚本文件进行解析,从中解析出一个或多个脚本对象,生成脚本对象列表,其中,所述脚本对象中包括脚本版本、项目标识组合和脚本内容;步骤206,根据多个数据库中任一数据库的脚本版本和项目标识,遍历所述脚本对象列表,从所述脚本对象列表的一个或多个脚本对象中提取出与所述任一数据库对应的一个或多个所述脚本内容,以得到脚本执行列表;步骤208,根据所述脚本执行列表更新所述任一数据库。
项目标识组合中包括一个或多个项目标识,在项目标识组合中包括当前数据库的项目标识时,即说明项目标识组合对应的脚本内容适用于当前的数据库。这样,通过上述技术方案,可以自动解析脚本文件,自动升级多个项目的多个数据库,极大的降低了数据库升级实施的复杂程度以及系统部署和升级的成本。
在上述技术方案中,优选地,所述步骤206包括:在接收到获取指令时,从所述脚本对象列表中获取一个当前的脚本对象;判断所述当前的脚本对象的脚本版本是否大于所述任一数据库的脚本版本,在判断结果为是时,判断所述当前的脚本对象的项目标识组合是否与所述任一数据库的项目标识相匹配,在判断结果为是时,提取出所述当前的脚本对象的脚本内容,并将所述脚本内容添加至所述脚本执行列表;在检测到已获取完所述脚本对象列表中的所有脚本对象时,输出所述脚本执行列表。
在该技术方案中,通过版本的比较和项目标识的匹配从多个脚本对象中找到适合本数据库的脚本内容,并通过找到的脚本内容对数据库进行更新,这样,可以自动更新多个项目的不同数据库,减少用户的操作。
在上述技术方案中,优选地,所述步骤208还包括:将所述脚本执行列表中的每个脚本内容对应的脚本版本进行比较,并将版本号最大的脚本版本作为所述任一数据库的当前脚本版本。
在该技术方案中,在更新数据库内容的同时更新数据库的版本,优选地,脚本执行列表中的脚本内容可以按照脚本版本的先后顺序进行排列,这样,在执行的时候按照脚本版本的先后顺序执行,在确定脚本版本的时候可以直接将最后一个脚本版本作为当前的脚本版本。这样,方便用户根据版本号进行版本控制、版本追溯和问题排查等操作。
在上述技术方案中,优选地,在所述步骤204之前还包括:根据接收到的获取指令,获取与所述任一数据库对应的所述脚本版本和所述项目标识。
在该技术方案中,一个项目对应一个数据库,其中,各个项目的数据库拥有相同的数据结构,但是业务数据和功能控制参数信息不同。在数据库更新执行前可根据数据库链接读取数据库中保存的项目标识和脚本版本。
在上述技术方案中,优选地,在所述步骤202之前还包括:根据接收到的设置指令,设置所述脚本文件;以及存储所述脚本文件。
在该技术方案中,开发人员可以根据脚本编写规则,针对不同的项目需求,编写相应的SQL脚本,并记录到脚本文件中,以根据脚本文件去更新数据库。
通过以上技术方案,解决了现有的项目部署或升级工作量大的问题,使项目部署和升级更为便利,降低了项目部署和升级的成本。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的数据库更新装置的框图。
如图1所示,根据本发明的实施例的数据库更新装置100,包括:获取单元102,用于获取预设的脚本文件;解析单元104,连接至所述获取单元102,用于对所述脚本文件进行解析,从中解析出一个或多个脚本对象,生成脚本对象列表,其中,所述脚本对象中包括脚本版本、项目标识组合和脚本内容;提取单元106,连接至所述解析单元104,根据多个数据库中任一数据库的脚本版本和项目标识,遍历所述脚本对象列表,从所述脚本对象列表的一个或多个脚本对象中提取出与所述任一数据库对应的一个或多个所述脚本内容,以得到脚本执行列表;更新单元108,连接至所述提取单元106,用于根据所述脚本执行列表更新所述任一数据库。
项目标识组合中包括一个或多个项目标识,在项目标识组合中包括当前数据库的项目标识时,即说明项目标识组合对应的脚本内容适用于当前的数据库。这样,通过上述技术方案,可以自动解析脚本文件,自动升级多个项目的多个数据库,极大的降低了数据库升级实施的复杂程度以及系统部署和升级的成本。
在上述技术方案中,优选地,所述提取单元106包括:对象获取子单元1062,在接收到获取指令时,从所述脚本对象列表中获取一个当前的脚本对象;第一判断子单元1064,连接至所述对象获取子单元1062,用于判断所述当前的脚本对象的脚本版本是否大于所述任一数据库的脚本版本,在判断结果为是时,触发第二判断子单元;所述第二判断子单元1066,连接至所述第一判断子单元1064,判断所述当前的脚本对象的项目标识组合是否与所述任一数据库的项目标识相匹配,在判断结果为是时,提取出所述当前的脚本对象的脚本内容,并将所述脚本内容添加至所述脚本执行列表;输出子单元1068,连接至所述对象获取子单元1062和所述第二判断子单元1066,在检测到所述对象获取子单元1062已获取完所述脚本对象列表中的所有脚本对象时,输出所述脚本执行列表至所述更新单元108。
在该技术方案中,通过版本的比较和项目标识的匹配从多个脚本对象中找到适合本数据库的脚本内容,并通过找到的脚本内容对数据库进行更新,这样,可以自动更新多个项目的不同数据库,减少用户的操作。
在上述技术方案中,优选地,所述更新单元108还包括:版本确定单元1082,将所述脚本执行列表中的每个脚本内容对应的脚本版本进行比较,并将版本号最大的脚本版本作为所述任一数据库的当前脚本版本。
在该技术方案中,在更新数据库内容的同时更新数据库的版本,优选地,脚本执行列表中的脚本内容可以按照脚本版本的先后顺序进行排列,这样,在执行的时候按照脚本版本的先后顺序执行,在确定脚本版本的时候可以直接将最后一个脚本版本作为当前的脚本版本。这样,方便用户根据版本号进行版本控制、版本追溯和问题排查等操作。
在上述技术方案中,优选地,所述提取单元106还用于:根据接收到的获取指令,获取与所述任一数据库对应的所述脚本版本和所述项目标识。
在该技术方案中,一个项目对应一个数据库,其中,各个项目的数据库拥有相同的数据结构,但是业务数据和功能控制参数信息不同。在数据库更新执行前可根据数据库链接读取数据库中保存的项目标识和脚本版本。
在上述技术方案中,优选地,还包括:设置单元110,根据接收到的设置指令,设置所述脚本文件;以及存储单元112,连接至所述设置单元110和所述获取单元102,用于存储所述脚本文件。
在该技术方案中,开发人员可以根据脚本编写规则,针对不同的项目需求,编写相应的SQL脚本,并记录到脚本文件中,以根据脚本文件去更新数据库。
图2示出了根据本发明的实施例的数据库更新方法的流程图。
如图2所示,根据本发明的实施例的数据库更新方法,包括:步骤202,获取预设的脚本文件;步骤204,对所述脚本文件进行解析,从中解析出一个或多个脚本对象,生成脚本对象列表,其中,所述脚本对象中包括脚本版本、项目标识组合和脚本内容;步骤206,根据多个数据库中任一数据库的脚本版本和项目标识,遍历所述脚本对象列表,从所述脚本对象列表的一个或多个脚本对象中提取出与所述任一数据库对应的一个或多个所述脚本内容,以得到脚本执行列表;步骤208,根据所述脚本执行列表更新所述任一数据库。
项目标识组合中包括一个或多个项目标识,在项目标识组合中包括当前数据库的项目标识时,即说明项目标识组合对应的脚本内容适用于当前的数据库。这样,通过上述技术方案,可以自动解析脚本文件,自动升级多个项目的多个数据库,极大的降低了数据库升级实施的复杂程度以及系统部署和升级的成本。
在上述技术方案中,优选地,所述步骤206包括:在接收到获取指令时,从所述脚本对象列表中获取一个当前的脚本对象;判断所述当前的脚本对象的脚本版本是否大于所述任一数据库的脚本版本,在判断结果为是时,判断所述当前的脚本对象的项目标识组合是否与所述任一数据库的项目标识相匹配,在判断结果为是时,提取出所述当前的脚本对象的脚本内容,并将所述脚本内容添加至所述脚本执行列表;在检测到已获取完所述脚本对象列表中的所有脚本对象时,输出所述脚本执行列表。
在该技术方案中,通过版本的比较和项目标识的匹配从多个脚本对象中找到适合本数据库的脚本内容,并通过找到的脚本内容对数据库进行更新,这样,可以自动更新多个项目的不同数据库,减少用户的操作。
在上述技术方案中,优选地,所述步骤208还包括:将所述脚本执行列表中的每个脚本内容对应的脚本版本进行比较,并将版本号最大的脚本版本作为所述任一数据库的当前脚本版本。
在该技术方案中,在更新数据库内容的同时更新数据库的版本,优选地,脚本执行列表中的脚本内容可以按照脚本版本的先后顺序进行排列,这样,在执行的时候按照脚本版本的先后顺序执行,在确定脚本版本的时候可以直接将最后一个脚本版本作为当前的脚本版本。这样,方便用户根据版本号进行版本控制、版本追溯和问题排查等操作。
在上述技术方案中,优选地,在所述步骤204之前还包括:根据接收到的获取指令,获取与所述任一数据库对应的所述脚本版本和所述项目标识。
在该技术方案中,一个项目对应一个数据库,其中,各个项目的数据库拥有相同的数据结构,但是业务数据和功能控制参数信息不同。在数据库更新执行前可根据数据库链接读取数据库中保存的项目标识和脚本版本。
在上述技术方案中,优选地,在所述步骤202之前还包括:根据接收到的设置指令,设置所述脚本文件;以及存储所述脚本文件。
在该技术方案中,开发人员可以根据脚本编写规则,针对不同的项目需求,编写相应的SQL脚本,并记录到脚本文件中,以根据脚本文件去更新数据库。
图3示出了根据本发明的实施例的数据库更新装置的结构图。
如图3所示,根据本发明的又一实施例的数据库更新装置300包括:数据库初始化模块302(包括设置单元)和数据库升级模块304(包括获取单元、解析单元、提取单元和更新单元),数据升级模块304包括脚本解析引擎3042(即解析单元)。下面对各模块进行详细说明。
数据库初始化模块302:在首次部署数据库时调用,数据库初始化时需要实施人员提供项目标识等信息,数据库初始化后会生成基础数据库,基础数据库保存了项目标识和默认的脚本版本等信息。
数据库升级模块304:在项目调用数据库初始化模块302后或项目升级时调用。其作用是获取脚本文件,并将脚本文件传入脚本解析引擎,将脚本解析引擎解析出的脚本更新到数据库中,最后将最后一组脚本的脚本版本更新到数据库中,作为数据库当前的脚本版本。
脚本解析引擎3042:脚本解析引擎根据项目数据库中保存的脚本版本、项目标识,再结合脚本文件,拼接、生成与该项目对应的数据库升级脚本。
图3中还示出数据库更新装置300读取并解析脚本文件,将解析后得到的脚本内容交由数据库,以供数据库进行更新。其中,数据库中保存了项目配置信息及业务信息。而脚本文件,是由开发人员在项目开发时依照脚本编写规则编写,脚本编写规则示意如下:
前分组符【脚本版本1项目标识组合1脚本描述1】后分组符
脚本内容1
前分组符【脚本版本2项目标识组合2脚本描述2】后分组符
脚本内容2
……
下面对上述出现的各名词的含义进行解释:
前分组符、后分组符:程序定义的特殊字符串,仅用来做脚本分组使用。
脚本版本:格式为yyyy-MM-dd-3位当天脚本版本号,如2013-09-16-001。数据库中保存该项目最后一次执行的脚本版本,脚本解析引擎解析脚本文件时会将数据库当前脚本版本作为获取脚本的过滤条件。
项目标识:项目标识用英文字符串表示,如abc,代表abc项目,通用项目标识为common(表示所有项目)。项目标识不可含有空格。
项目标识组合:项目标识组合由一个或多个项目标识组成,多个项目标识用半角逗号分隔,排除项目用半角叹号开头。项目在部署时由实施人员配置到数据库中一个项目标识,脚本解析引擎解析脚本文件时会将项目标识组合作为获取脚本的过滤条件。通常有两种项目标识组合的拼组方式
(1)并集,如:“abc,cctv,nfc”,表示项目abc,cctv,nfc三个项目需执行于该脚本。
(2)非,如common,!abc,!nfc,表示除了abc,nfc项目外,其他所有项目都需执行于该脚本。
脚本描述:该组脚本的简要描述。
脚本内容:该组脚本的SQL脚本内容,须符合SQL语言编写规范。
下面结合图3和图4详细说明本发明的技术方案。
图4示出了根据本发明的实施例的数据库更新方法的具体流程图。
如图4所示,根据本发明的实施例的数据库更新方法的具体流程如下:
步骤402,获取脚本文件。脚本解析引擎3042从数据库升级模块304中获取脚本文件的文件流信息。
步骤404,解析脚本文件,生成脚本对象列表(脚本对象包括脚本版本、脚本标识组合、SQL脚本内容)。该阶段脚本解析引擎首先将脚本文件流信息转换为字符串数据,然后顺序读取脚本字符串数据,依次执行如下操作:根据脚本分组符,获取一段脚本字符串数据,将该段数据根据脚本编写规则提取出脚本版本、项目标识组合、脚本内容三项信息,组成脚本对象,插入脚本对象列表。循环此操作直至读完脚本文件字符串,完成脚本对象列表的拼装。
步骤406,依次遍历脚本对象列表。
步骤408,判断脚本对象列表是否已遍历结束。如果判断结果为是,则进入步骤418;否则执行步骤410。
步骤410,顺序获取一个脚本对象。
步骤412,判断该脚本对象的脚本版本是否大于当前数据库脚本版本,若判断结果为是,则进入步骤414,若判断结果为否,则进入步骤408。
步骤414,判断该脚本对象的项目标识组合是否适用于当前数据库对应项目。如果判断结果为是,则进入步骤416,若判断结果为否,则进入步骤408。
步骤416,将该脚本对象的脚本内容加入到数据库脚本执行列表,并进入步骤408。
步骤418,输出数据库脚本执行列表,供数据库升级模块304更新数据库。
以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,实现了如下技术效果:1、各项目升级脚本可维护、追溯。通过脚本文件,可以查看到各项目不同时间对数据库的修改脚本,便于版本控制、版本追溯和问题的排查。2、降低了系统部署和升级的成本。通过脚本解析引擎自动化解析脚本文件,自动升级数据库,极大的降低了实施人员的技术要求,降低了实施的复杂程度,从而降低了系统部署和升级的成本。这样,同一信息化系统面对不同项目的部署与升级,开发人员可以专注于脚本的维护,实施人员可以专注于硬件、网络、安全策略等方面的部署与维护,一定程度上解放了生产力,满足了信息化系统产品化部署,减少差异化实施的需求。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。