一种数据库版本管理方法及服务器与流程

文档序号:19350277发布日期:2019-12-06 21:18阅读:199来源:国知局
一种数据库版本管理方法及服务器与流程

本发明实施例涉及数据处理技术领域,尤其涉及一种数据库版本管理方法及服务器。



背景技术:

很多公司在执行一些特殊的项目,不同于传统项目将代码保存在磁盘中,而是保存在关系数据库中。这种方式好处是,可以即时修改、即时解析、即时生效。从而可以节省编译代码和重启服务的时间,提高开发效率及发布效率。

但是数据库中只会保存最新的代码,即,代码修改后,会直接覆盖原有的数据。所以,没有办法查看某次迭代修改了哪些代码。

使得数据库无法简单得独立实现版本管理。



技术实现要素:

本发明实施例提供一种数据库版本管理方法及服务器,用以解决现有技术中数据库无法简单得独立实现版本管理。

第一方面,本发明实施例提供了一种数据库版本管理方法,包括:

接收由客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;

将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;

将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

进一步地,所述方法还包括:

接收由所述客户端发送的回溯请求,所述回溯请求包括所述第二数据库的标识和标签;

根据所述第二数据库的版本表中与所述标签对应的版本表记录,更新所述第二数据库的原始表中与所述版本表记录对应的原始表记录。

进一步地,所述将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中,具体包括:

将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中,同时为每条新的版本表记录分配唯一对应的版本标识。

进一步地,所述方法还包括:

接收由客户端发送的比较请求,所述比较请求包括两个比较对象;其中,所述比较对象包括数据库的标识,标签,或者版本标识。

进一步地,若所述两个比较对象为第一数据库的标识和第二数据库的标识,则所述方法还包括:

根据所述比较请求,得到所述同步范围。

进一步地,所述方法还包括:

接收由所述客户端发送的标签关联请求,所述标签关联请求包括所述第二数据库的标识、标签、以及关联范围;

将所述第二数据库的原始表中与所述关联范围对应的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

进一步地,所述版本表记录还包括修改人和修改时间。

第二方面,本发明实施例提供了一种用于数据库版本管理的服务器,包括:

请求接收模块,用于接收由所述客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;

数据更新模块,用于将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;

版本记录模块,用于将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

第三方面,本发明实施例还提供了一种电子设备,包括:

处理器、存储器、通信接口和通信总线;其中,

所述处理器、存储器、通信接口通过所述通信总线完成相互间的通信;

所述通信接口用于该电子设备的通信设备之间的信息传输;

所述存储器存储有可被所述处理器执行的计算机程序指令,所述处理器调用所述程序指令能够执行如下方法:

接收由客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;

将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;

将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如下方法:

接收由客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;

将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;

将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

本发明实施例提供的数据库版本管理方法及服务器,通过同步请求,将第一数据库的原始表同步到第二数据库的原始表,并在第二数据库的版本表中记录包含相同标签的新的版本表数据,从而方便数据库中代码的版本管理。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的数据库版本管理方法流程图;

图2为本发明实施例的用于数据库版本管理的服务器结构示图;

图3示例了一种电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例的数据库版本管理方法流程图,如图1所示,所述方法包括:

步骤s01、接收由客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签。

本发明实施例中的代码根据应用环境的不同被分别保存在服务器的不同数据库中,例如,开发环境、测试环境和发布环境,所述代码在开发环境中完成开发,然后将代码提交到测试环境中进行测试,测试完成后,再发布到发布环境,完成上线。所述服务器中用于保存代码的数据库分别与所述应用环境相对应,所述数据库为关系数据库,例如mysql数据库。

每个数据库中的当前代码将被保存到该数据库的原始表中,以原始表记录的形式存在。而用户可以通过安装在各自客户终端的客户端,根据实际的需求对数据库中当前代码进行更新或处理。

而当用户准备对任意两个应用环境所对应的数据库的进行同步时,例如,将开发环境的代码提交到测试环境,或者将测试环境的代码发布到发布环境等,可以通过客户端向所述服务器发送同步请求,所述同步请求至少包括作为源数据库的第一数据库的标识、作为目标数据库的第二数据库的标识、本次同步中的同步范围、以及标签。所述第一数据库的标识和第二数据库的标识可以分别对应于位于开发环境、测试环境或发布环境的任意两个数据库。所述同步范围可以根据实际的需要来设定,可以直接确定为全部记录,也可以根据记录的标识和记录的类型等来进行限定,在此不作具体限定。例如,若所述同步范围为type=100,名称=test%,则表示本次同步的范围为数据类型为100,名称的开头为test的原始表记录。

步骤s02、将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中。

服务器在接收到同步请求后,根据所述第一数据库的标识和同步范围,提取出所述第一数据库的原始表中与所述同步范围相对应的原始表记录。然后,再将提取出的第一数据库的原始表记录更新到所述第二数据库的原始表中,用于更新与所述同步范围对应的第二数据库的原始表中的原始表记录。例如,若所述第一数据库和第二数据库分别位于测试环境和发布环境,相当于通过同步请求,实现了将已经通过测试环境检测后的代码发布到发布环境中。

步骤s03、将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

在位于各个应用环境的数据库中还包括有版本表,所述版本表中保存有版本表记录用于记录原始表所有原始表记录的更新过程,从而实现对代码的版本管理。

所述第二数据库在对原始表完成更新后,将更新的原始表记录与所述同步请求中的标签进行关联,并保存到第二数据库的版本表中作为新的版本表记录。可见,当原始表中任一原始表记录被更新后,所述版本表中将新增一条版本表记录,而所述版本表记录至少包括更新前的该原始表记录以及对应的标签。

在每个数据库建立初始,根据预设的初始化进程,所述服务器会将原始表中最初的所有原始表记录用相应地标签关联后,保存到版本表中作为所述版本表最初的版本表记录。

本发明实施例通过同步请求,将第一数据库的原始表同步到第二数据库的原始表,并在第二数据库的版本表中记录包含相同标签的新的版本表数据,从而方便数据库中代码的版本管理。

基于上述实施例,进一步地,在步骤s03后所述方法还包括:

接收由所述客户端发送的回溯请求,所述回溯请求包括所述第二数据库的标识和标签;

根据所述第二数据库的版本表中与所述标签对应的版本表记录,更新所述第二数据库的原始表中与所述版本表记录对应的原始表记录。

在对所述第二数据库的原始表进行不断更新过程中,所述第二数据库的版本表中将包含与不同标签所对应的版本表记录,若用户想回看第二数据库的原始表以往的原始表记录,可通过代码回滚来实现,由客户端向服务器发送回溯请求,所述回溯请求至少包括第二数据库的标识和标签。

所述服务器通过第二数据库的标识找到所述第二数据库,再通过标签找到所述第二数据库的版本表中与该标签对应的所有版本表记录,相当于,找到了与该标签关联的所有原始表记录。

再从找到的所有版本表记录中提取出包含的原始表记录用于更新原始表中对应的原始表记录。从而,将原始表回溯到记录该标签前状态,以实现原始表中的代码回滚。

另外,由于每次同步请求包含的同步范围不一定相同,导致每次更新的原始表记录也不同。因此,在通过回溯请求实现代码回滚的过程中,需要根据原始表的更新顺序,依次进行代码回滚。具体,可以根据每个数据库接收到的同步请求的顺序,记录下对应标签的顺序,具体可以为每个数据库建立标签序列。当服务器接收到回溯请求时,根据所述回溯请求中标签在所述标签序列中的位置,依次进行代码回滚。例如,标签序列为{b1,b2,b3},服务器接收到的同步请求的标签为b4,则此时所述标签序列为{b1,b2,b3,b4},若此时接收到的回溯请求中的标签为b2,则在进行代码回滚的过程中,需要先根据版本表中与标签b3对应的版本表记录来更新原始表中的原始表记录,再根据版本表与标签b2对应的版本表记录来更新原始表中的原始表记录,从而完成本次回溯请求的代码回滚操作。

由于所述原始表和版本表位于同一数据库,使得对于原始表和版本表的同步和回溯能在一个事务中进行,即可通过一个mysql的事务执行。

本发明实施例通过包括标签的回溯请求,将所述原始表回溯到记录所述标签前所述原始表的状态,从而方便数据库中代码的版本管理,实现代码回滚。

基于上述实施例,进一步地,所述步骤s03具体为:

将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中,同时为每条新的版本表记录分配唯一对应的版本标识。

随着对原始表中的原始表记录不断更新的过程中,所述原始表中每条原始表记录都可能在所述版本表中找到至少一条对应的版本表记录,所述原始表记录更新的次数越多,则对应的版本表记录也越多。可知,所述版本表中保存了所述原始表中每条原始表记录的更新过程。为了能够更利于对版本表中所有的版本表记录加以管理,在记录每条新增的版本表记录时为所述版本表记录分配唯一对应的版本标识。

所述版本标识可以根据实际的需要来进行设定,例如,可以是一个随机数,或者为一个自增的主键。若所述版本标识为一个自增的主键,则所述版本标识越大,代表对应的原始表记录越新。

本发明实施例通过在数据库中的版本表,记录该数据库原始表每条原始表记录的更新过程,并通过版本标识加以区分,从而方便数据库中代码的版本管理。

基于上述实施例,进一步地,所述方法还包括:

接收由客户端发送的比较请求,所述比较请求至少包括两个比较对象;其中,所述两个比较对象具体为但不限于数据库的标识,标签,或者版本标识。

为了能够更加方便客户比较代码不同版本间的差异,还可以通过所述客户端向服务器发送比较请求,其中所述比较请求至少包括两个比较对象。

所述比较对象可以根据实际的需要来进行设定,若要比较两个数据库间的代码区别,则所述比较对象为两个数据库的标识;若比较同一数据库下不同时间的代码区别,则所述比较对象为两个标签;若比较同一原始表记录不同时间的代码区别,则所述比较对象为两个版本标识。

具体可以使用googole开源的diffutil工具包,封装一些接口,用于可以比较一系列不同代码之间的差异。

例如:publiclist<map<string,string>>compare(objectoriginallist,objectrevisedlist)接口,接收两个列表list,使用diffutil分析它们之间的差异,所述差异可以区分为4种类型:新增、修改、删除、相等输出。

进一步地,若所述两个比较对象为第一数据库的标识和第二数据库的标识,则所述方法还包括:

根据所述比较请求,得到所述同步范围。

为了能够在对第一数据库和第二数据库进行同步前,明确本次同步的同步范围。用户可通过客户端向服务器先发送比较请求,此时,所述比较请求中的两个比较对象分别为第一数据库的标识和第二数据库的标识。

根据该比较请求,所述服务器将得到两个数据库间的最小的同步范围并返回给客户端,从而使用户能根据返回的最小的同步范围发送相应的同步请求。

本发明实施例通过比较请求,比较两个比较对象间的代码差异,从而能够更加方便数据库中代码的版本管理。

基于上述实施例,进一步地,所述方法还包括:

接收由所述客户端发送的标签关联请求,所述标签关联请求包括所述第二数据库的标识、标签、以及关联范围;

将所述第二数据库的原始表中与所述关联范围对应的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

为了进一步方便管理,用户可根据实际需要,主动对将原始表记录与指定的标签进行关联,通过客户端向服务器发送标签关联请求,所述标签关联请求包括所述第二数据库的标识、用户指定的标签和关联范围。

当服务器接收到标签关联请求后,在与所述第二数据库的原始表中找到与所述关联范围对应的原始表记录并与指定的标签进行关联,然后在版本表中增加与查找到的每个原始表记录一一对应的版本表记录。

本发明实施例通过主动将原始表记录与指定的标签进行关联并记录到版本表中,从而进一步方便数据库中代码的版本管理。

基于上述实施例,进一步地,所述版本表记录还包括修改人和修改时间。

所述版本本表中的版本表记录还可以根据实际的需要增加相应的字段,包括:修改人和修改时间,用于记录同步原始表记录,或者对所述原始表进行标签关联的用户和时间。

为此,在客户端给所述服务器发送所述标签关联请求、同步请求时,还需要包括所述修改人和修改时间。

基于上述实施例,可知,所述版本表记录中包括原始表记录、标签、版本标识、还可能包括修改人和修改时间。因此,在实际的应用过程中,用户均可以通过客户端基于标签、版本标识、修改人和修改时间等信息的任意组合去查找任意数据库中对应的版本表记录或原始表记录。

本发明实施例通过在版本表记录中加入修改人和修改时间,从而能够更加方便数据库中代码的版本管理,并记录下每次发起更新的用户和时间。

图2为本发明实施例的用于数据库版本管理的服务器结构示图,如图2所示,所述服务器包括:请求接收模块10、数据更新模块11和版本记录模块12,其中,

所述请求接收模块10用于接收由所述客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;所述数据更新模块11用于将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;所述版本记录模块12用于将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。具体地:

当用户准备对任意两个应用环境所对应的数据库的进行同步时,可以通过客户端向所述请求接收模块10发送同步请求,所述同步请求至少包括作为源数据库的第一数据库的标识、作为目标数据库的第二数据库的标识、本次同步中的同步范围、以及标签。

所述请求接收模块10在接收到同步请求后将发送给数据更新模块11,由所述数据更新模块11根据所述第一数据库的标识和同步范围,提取出所述第一数据库的原始表中与所述同步范围相对应的原始表记录。然后,再将提取出的第一数据库的原始表记录更新到所述第二数据库的原始表中,用于更新与所述同步范围对应的第二数据库的原始表中的原始表记录。

所述数据更新模块11在对第二数据库的原始表完成更新后,将更新的原始表记录与所述同步请求中的标签发送给所述版本记录模块12,由所述版本记录模块12将接收到的原始表记录和标签进行关联,并保存到第二数据库的版本表中作为新的版本表记录。

本发明实施例提供的服务器用于执行上述方法,其功能具体参考上述方法实施例,其具体方法流程在此处不再赘述。

本发明实施例通过同步请求,将第一数据库的原始表同步到第二数据库的原始表,并在第二数据库的版本表中记录包含相同标签的新的版本表数据,从而方便数据库中代码的版本管理。

图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)810、通信接口(communicationsinterface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行如下方法:接收由客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收由客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

进一步地,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收由客户端发送的同步请求,所述同步请求至少包括第一数据库的标识、第二数据库的标识、同步范围和标签;将所述第一数据库的原始表中与所述同步范围对应的原始表记录,同步到所述第二数据库的原始表中;将所述第二数据库的原始表中更新的原始表记录与所述标签进行关联,并作为新的版本表记录保存到所述第二数据库的版本表中。

本领域普通技术人员可以理解:此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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