一种应对高频率迭代数据的调试方法转让专利

申请号 : CN202110567971.4

文献号 : CN113391829B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汤鑫杰金梦笔朱世潮

申请人 : 杭州新中大科技股份有限公司

摘要 :

本发明提供一种应对高频率迭代数据的调试方法,包括:步骤S1,根据一数据库升级指令获取当前数据库版本的版本号;步骤S2,在当前数据库版本的版本号小于目标版本的版本号时,将当前数据库版本升级至目标版本得到升级数据库版本,并判断升级数据库版本中,共性数据是否与目标版本中的共性数据一致且个性数据是否保留:若是,则结束升级并退出;若否,则输出包括数据库服务器中的至少一个版本号的一选择提示,随后转向步骤S3;步骤S3,将用户根据选择提示选择的数据库版本作为降级版本,将升级数据库版本降级至降级版本,并将降级版本作为当前数据库版本,随后返回步骤S2。有益效果是提升迭代升级效率,有效为开发环节减负提效。

权利要求 :

1.一种应对高频率迭代数据的调试方法,应用于数据库升级过程,其特征在于,预先配置一数据库服务器,用于保存至少一数据库版本,每个所述数据库版本具有一版本号,每个所述数据库版本中包括一共性数据和一个性数据;所述数据库服务器还用于接收并保存外部的一目标版本及对应的所述版本号;所述共性数据包括多个数据库对象,每个所述数据库对象的创建基于至少一实体表;所述个性数据为用户操作数据库产生的差异性数据或需求验证工作中产生的操作数据;

所述调试方法包括:

步骤S1,根据外部输入的包含所述目标版本的所述版本号的一数据库升级指令获取当前数据库版本的所述版本号,并判断所述当前数据库版本的所述版本号是否小于所述目标版本的所述版本号:若否,则退出;

若是,则转向步骤S2;

步骤S2,将所述当前数据库版本升级至所述目标版本得到升级数据库版本,并判断所述升级数据库版本中,所述共性数据是否与所述目标版本中的所述共性数据一致且所述个性数据是否保留:若是,则结束升级并退出;

若否,则输出包括所述数据库服务器中的至少一个所述版本号的一选择提示,所述选择提示中的所述版本号小于所述目标版本的所述版本号且不小于所述当前数据库版本的所述版本号,随后转向步骤S3;

步骤S3,将用户根据所述选择提示选择的所述版本号对应的所述数据库版本作为降级版本,将所述升级数据库版本降级至所述降级版本,并将所述降级版本作为所述当前数据库版本,随后返回所述步骤S2;

将所述升级数据库版本先降级至所述降级版本,再升级至所述目标版本,循环执行上述过程,直至本次升级成功;

所述目标版本中还包括一第一升级区域、一第二升级区域和一第三升级区域,所述第一升级区域中用于保存需要升级的所述实体表,所述第二升级区域用于保存需要升级的所述实体表关联的索引信息,所述第三升级区域用于保存需要升级的数据库操作语句;

所述步骤S2中,将所述当前数据库版本升级至所述目标版本的过程包括:步骤S21,判断所述第一升级区域中是否保存有所述实体表:若是,则升级所述当前数据库版本中对应的所述实体表,随后转向步骤S22;若否,则转向步骤S23;

步骤S22,判断所述第二升级区域中是否保存有所述实体表关联的所述索引信息:若是,则升级所述当前数据库版本中对应的所述索引信息,随后转向步骤S23;若否,则转向步骤S23;

步骤S23,判断所述第三升级区域中是否保存有所述数据库操作语句:若是,则执行所述数据库操作语句,并在执行成功后输出升级得到的所述升级数据库版本;

若否,则输出升级得到的所述升级数据库 版本。

2.根据权利要求1所述的调试方法,其特征在于,所述步骤S21中,升级所述当前数据库版本中对应的所述实体表的过程包括:步骤S211,获取所述当前数据库版本中的实体表表名列表,并判断所述第一升级区域中的所述实体表是否在所述实体表表名列表中:若是,则转向步骤S212;

若否,则新建所述实体表并更新所述实体表表名列表以及所述实体表表名列表关联的表结构列表;

步骤S212,获取所述实体表表名列表关联的所述表结构列表,并判断所述表结构列表与所述目标版本的所述表结构列表是否一致:若是,则转向所述步骤S22;

若否,则更新所述表结构列表及其关联的所述实体表,随后转向所述步骤S22。

3.根据权利要求1所述的调试方法,其特征在于,所述步骤S22中,升级所述当前数据库版本中对应的所述索引信息的过程包括:步骤S221,读取所述实体表的所述索引信息,并判断所述索引信息是否在所述当前数据库版本中索引信息列表中:若是,则转向步骤S222;

若否,则新增所述索引信息并更新所述索引信息列表;

步骤S222,判断所述索引信息是否与所述目标版本的所述索引信息列表是否一致:若是,则转向所述步骤S23;

若否,则更新所述索引信息及对应的所述索引信息列表,随后转向所述步骤S23。

4.根据权利要求1所述的调试方法,其特征在于,执行所述步骤S21之前,还包括删除所述当前数据库版本中的所有所述数据库对象;

则执行所述步骤S23之后,还包括根据升级后的所述实体表及其关联的所述索引信息创建所述数据库对象。

5.根据权利要求1所述的调试方法,其特征在于,所述步骤S2中,在所述升级数据库版本中的所述共性数据与所述目标版本中的所述共性数据一致且所述个性数据保留时,还包括将所述当前数据库版本的所述版本号更新为所述目标版本的所述版本号。

6.根据权利要求1所述的调试方法,其特征在于,所述步骤S23中,还包括在所述数据库操作语句执行不成功时,回滚执行,并在回滚执行成功后输出对应的所述升级数据库版本。

7.根据权利要求1所述的调试方法,其特征在于,所述步骤S2中,所述当前数据库版本升级至所述目标版本时为跨版本升级,且连续两次输出所述选择提示时,则本次输出的所述选择提示中包含的版本最高的所述数据库版本的所述版本号小于上一次输出的所述选择提示中包含的版本最高的所述数据库版本的所述版本号。

8.根据权利要求1所述的调试方法,其特征在于,所述步骤S2中,提供一升级管理端口,用于向用户展示所述选择提示,并接收用户根据所述选择提示给出的选择反馈。

说明书 :

一种应对高频率迭代数据的调试方法

技术领域

[0001] 本发明涉及数据库升级技术领域,尤其涉及一种应对高频率迭代数据的调试方法。

背景技术

[0002] 工程技术行业中,相关的工程管理软件由于数据来源较为繁杂,在应对不同客户群体时普遍要求能够实现高频率的更新迭代,为了满足这一需求并同时实现版本更新间的统一管理,这些软件往往会在每个更新的版本开始时,同时新增一个数据库版本:在该版本发布后,客户可通过增量升级数据库的方式进行升级;通过增量升级数据库的方式,能够清晰的管理开发和升级过程中的数据库版本信息,提高数据库管理效率。
[0003] 现有的数据库升级方式通常包括两种,一种是数据库中手工执行相应的DDL(数据定义语言)、DML(数据操纵语言)等语句,逐级升级至目标版本;另一种是采用跨版本升级的方式升级数据库,并在升级失败时进行备份还原。但由于日常的开发过程中,每日需要维护大量的DDL(数据定义语言)、DML(数据操纵语言)等数据库语句,企业在应对日常需求的验证工作时,通过手工执行相应的DDL、DML等语句,增加运维人员的工作量的同时无法保证正常升级后客户数据库中的数据不会产生差错,进而会带来数据丢失及升级失败的隐患;而采用备份还原的方式进行数据库升级,不能保留特定客户部署时产生的大量差异化数据,为客户带来不便,尤其是在开发调试过程中,两项具有关联关系的需求需要升级验证时,其对应的验证数据具有交集,由于差异化数据无法保留,该交集部分的数据在升级验证时需要重复配置,进而产生大量重复性劳动,增加开发成本。

发明内容

[0004] 针对现有技术中存在的问题,本发明提供一种应对高频率迭代数据的调试方法,应用于数据库升级过程,预先配置一数据库服务器,用于保存至少一数据库版本,每个所述数据库版本具有一版本号,每个所述数据库版本中包括一共性数据和一个性数据;所述数据库服务器还用于接收并保存外部的一目标版本及对应的所述版本号;
[0005] 所述调试方法包括:
[0006] 步骤S1,根据外部输入的包含所述目标版本的所述版本号的一数据库升级指令获取当前数据库版本的所述版本号,并判断所述当前数据库版本的所述版本号是否小于所述目标版本的所述版本号:
[0007] 若否,则退出;
[0008] 若是,则转向步骤S2;
[0009] 步骤S2,将所述当前数据库版本升级至所述目标版本得到升级数据库版本,并判断所述升级数据库版本中,所述共性数据是否与所述目标版本中的所述共性数据一致且所述个性数据是否保留:
[0010] 若是,则结束升级并退出;
[0011] 若否,则输出包括所述数据库服务器中的至少一个所述版本号的一选择提示,所述选择提示中的所述版本号小于所述目标版本的所述版本号且不小于所述当前数据库版本的所述版本号,随后转向步骤S3;
[0012] 步骤S3,将用户根据所述选择提示选择的所述版本号对应的所述数据库版本作为降级版本,将所述升级数据库版本降级至所述降级版本,并将所述降级版本作为所述当前数据库版本,随后返回所述步骤S2。
[0013] 优选的,所述共性数据包括多个数据库对象,每个所述数据库对象的创建基于至少一实体表;所述目标版本中还包括一第一升级区域、一第二升级区域和一第三升级区域,所述第一升级区域中用于保存需要升级的所述实体表,所述第二升级区域用于保存需要升级的所述实体表关联的索引信息,所述第三升级区域用于保存需要升级的数据库操作语句;
[0014] 则所述步骤S2中,将所述当前数据库版本升级至所述目标版本的过程包括:
[0015] 步骤S21,判断所述第一升级区域中是否保存有所述实体表:
[0016] 若是,则升级所述当前数据库版本中对应的所述实体表,随后转向所述步骤S22;
[0017] 若否,则转向步骤S23;
[0018] 步骤S22,判断所述第二升级区域中是否保存有所述实体表关联的所述索引信息:
[0019] 若是,则升级所述当前数据库版本中对应的所述索引信息,随后转向步骤S23;
[0020] 若否,则转向步骤S23;
[0021] 步骤S23,判断所述第三升级区域中是否保存有所述数据库操作语句:
[0022] 若是,则执行所述数据库操作语句,并在执行成功后输出升级得到的所述升级数据库版本;
[0023] 若否,则输出升级得到的所述升级数据版本。
[0024] 优选的,所述步骤S21中,升级所述当前数据库版本中对应的所述实体表的过程包括:
[0025] 步骤S211,获取所述当前数据库版本中的实体表表名列表,并判断所述第一升级区域中的所述实体表是否在所述实体表表名列表中:
[0026] 若是,则转向步骤S212;
[0027] 若否,则新建所述实体表并更新所述实体表表名列表以及所述实体表表名列表关联的表结构列表;
[0028] 步骤S212,获取所述实体表表名列表关联的所述表结构列表,并判断所述表结构列表与所述目标版本的所述表结构列表是否一致:
[0029] 若是,则转向所述步骤S22;
[0030] 若否,则更新所述表结构列表及其关联的所述实体表,随后转向所述步骤S22。
[0031] 优选的,所述步骤S22中,升级所述当前数据库版本中对应的所述索引信息的过程包括:
[0032] 步骤S221,读取所述实体表的所述索引信息,并判断所述索引信息是否在所述当前数据库版本中索引信息列表中:
[0033] 若是,则转向步骤S222;
[0034] 若否,则新增所述索引信息并更新所述索引信息列表;
[0035] 步骤S222,判断所述索引信息是否与所述目标版本的所述索引信息列表是否一致:
[0036] 若是,则转向所述步骤S23;
[0037] 若否,则更新所述索引信息及对应的所述所述索引信息列表,随后转向所述步骤S23。
[0038] 优选的,执行所述步骤S21之前,还包括删除所述当前数据库版本中的所有所述数据库对象;
[0039] 则执行所述步骤S23之后,还包括根据升级后的所述实体表及其关联的所述索引信息创建所述数据库对象。
[0040] 优选的,所述步骤S2中,在所述升级数据库版本中的所述共性数据与所述目标版本中的所述共性数据一致且所述个性数据保留时,还包括将所述当前数据库版本的所述版本号更新为所述目标版本的所述版本号。
[0041] 优选的,所述步骤S23中,还包括在所述数据库操作语句执行不成功时,回滚执行,并在回滚执行成功后输出对应的所述升级数据库版本。
[0042] 优选的,所述步骤S2中,所述当前数据库版本升级至所述目标版本时为跨版本升级,且连续两次输出所述选择提示时,则本次输出的所述选择提示中包含的版本最高的所述数据库版本的所述版本号小于上一次输出的所述选择提示中包含的版本最高的所述数据库版本的所述版本号。
[0043] 优选的,所述步骤S2中,提供一升级管理端口,用于向用户展示所述选择提示,并接收用户根据所述选择提示给出的选择反馈。
[0044] 上述技术方案具有如下优点或有益效果:
[0045] 1)通过升降级组合的方式完成数据库日常的迭代升级工作,提升迭代升级效率,在保证升级过程中共性数据的正确性的同时,保证历史版本中客户现场操作产生的个性数据的完整性,避免客户升级时产生数据丢失以及升级失败的更显;
[0046] 2)本技术方案适用于用户正常升级场景,包括跨版本升级场景,同时也适用于目标版本未发布前的调试场景;
[0047] 3)针对调试场景,个性数据为需求验证工作中产生的操作数据,在每次进行需求验证后保留个性数据,尤其针对存在关联关系的多项需求需要分别验证的调试场景,有效提升需求验证及验收数据效率,能够有效为开发环节减负提效,具有广泛的适用性和可推广性。

附图说明

[0048] 图1为本发明的较佳的实施例中,一种应对高频率迭代数据的调试方法的流程示意图;
[0049] 图2为本发明的较佳的实施例中,将当前数据库版本升级至目标版本的过程的流程示意图;
[0050] 图3为本发明的较佳的实施例中,升级当前数据库版本中对应的实体表的过程的流程示意图;
[0051] 图4为本发明的较佳的实施例中,升级当前数据库版本中对应的索引信息的过程的流程示意图。

具体实施方式

[0052] 下面结合附图和具体实施例对本发明进行详细说明。本发明并不限定于该实施方式,只要符合本发明的主旨,则其他实施方式也可以属于本发明的范畴。
[0053] 本发明的较佳的实施例中,基于现有技术中存在的上述问题,现提供一种应对高频率迭代数据的调试方法,应用于数据库升级过程,预先配置一数据库服务器,用于保存至少一数据库版本,每个数据库版本具有一版本号,每个数据库版本中包括一共性数据和一个性数据;数据库服务器还用于接收并保存外部的一目标版本及对应的版本号;
[0054] 如图1所示,调试方法包括:
[0055] 步骤S1,根据外部输入的包含目标版本的版本号的一数据库升级指令获取当前数据库版本的版本号,并判断当前数据库版本的版本号是否小于目标版本的版本号:
[0056] 若否,则退出;
[0057] 若是,则转向步骤S2;
[0058] 步骤S2,将当前数据库版本升级至目标版本得到升级数据库版本,并判断升级数据库版本中,共性数据是否与目标版本中的共性数据一致且个性数据是否保留:
[0059] 若是,则结束升级并退出;
[0060] 若否,则输出包括数据库服务器中的至少一个版本号的一选择提示,选择提示中的版本号小于目标版本的版本号且不小于当前数据库版本的版本号,随后转向步骤S3;
[0061] 步骤S3,将用户根据选择提示选择的所述版本号对应的数据库版本作为降级版本,将升级数据库版本降级至降级版本,并将降级版本作为当前数据库版本,随后返回步骤S2。
[0062] 具体地,本实施例中,本技术方案可以应用于工程软件中,该工程软件可以配置有数据库服务器,该工程软件包括至少一个软件版本,每个软件本版对应一个或多个数据库版本,每个数据库版本对应一个版本号。该数据库版本中保存有所有历史数据库版本并能够接收并保存外部的一目标版本及对应的版本号。通过保存所有历史数据库版本,便于后续采用升降级方式进行数据库版本升级时进行降级版本的选择。本实施例中,上述共性数据为维持数据库正常运行的预置数据,包括但不限于实体表、表结构以及实体表中的记录内容,上述个性数据为用户操作数据库产生的差异性数据。
[0063] 进一步地,上述软件版本可以配置在一应用服务器上,本技术方案可以应用于用户正常升级场景,该应用服务器接收到外部的数据库升级指令时,首先获取在用的当前数据库版本的版本号,在其版本号小于目标版本的版本号时,说明当前数据库版本需要进行升级,此时,直接将当前数据库版本升级至目标版本,随后根据升级得到的升级数据版本判断是否升级成功,升级成功的判定标准为升级数据库版本中的共性数据与目标版本中的共性数据一致,同时当前数据库版本中的个性数据在升级至目标版本后得以保留,即升级结果与预期结果一致。若升级结果满足上述判定标准,则表示本次升级成功,若升级结果不满足上述判定标准,则表示本次升级失败,随后输出一选择提示,供用户选择降级版本,进而将目前得到的升级数据库版本先降级至降级版本,再升级至目标版本,循环执行上述过程,直至本次升级成功。上述升降级方式的升级过程可以应用在非跨版本升级过程,即当前数据库版本为2.0版本,目标版本为3.0版本为例,则选择提示给出的降级版本为2.0版本,可以理解为回滚升级的过程。
[0064] 作为优选的实施方式,上述升降级方式的升级过程可以应用在跨版本升级过程,步骤S2中,当前数据库版本升级至目标版本时为跨版本升级,且连续两次输出选择提示时,则本次输出的选择提示中包含的版本最高的数据库版本的版本号小于上一次输出的选择提示中包含的版本最高的数据库版本的版本号。
[0065] 具体地,本实施例中,以当前数据库版本为2.0版本,目标版本为5.0版本为例,在根据外部的数据库升级指令对当前数据库版本进行升级时,将2.0版本的当前数据库版本直接跨版本升级至5.0版本的目标版本,预期状态下,此时升级得到的升级数据库版本的共性数据应该与目标版本的共性数据一致,且个性数据能够保留,若未达到预期状态,即升级数据库版本的共性数据与目标版本的共性数据不一致,或个性数据未能够保留,则给出选择提示,该选择提示中可以包括2.0版本、3.0版本以及4.0版本,供用户进行选择,更为优选的,该选择提示中可以包括一推荐标记,标记于4.0版本上,进一步优选的,该选择提示中可以只保包括4.0版本,即推荐用户本次选择4.0版本,进而将升级数据库版本降级至4.0版本后再升级至5.0版本,若本次升级结果仍不满足上述判定标准,则再次给出选择提示,以推荐用户选择3.0版本,进而将升级数据库版本降级至3.0版本后再升级至5.0版本,以此类推。若上述降级至4.0版本后再升级至5.0版本的升级结果满足上述判定标准,则表示本次升级成功,且该次升级由于未跨多个版本,减少了数据处理量,进而有效提升升级效率,同时保证升级过程中共性数据的正确性以及个性数据的完整性。
[0066] 作为优选的实施方式,本技术方案可以应用于调试场景,如当前数据库版本已经发布到9.0版本,正在进行10.0版本的研发工作,开发人员张三在进行需求A开发时,需要增加一系列表、字段以及视图等数据库对象,同时开发人员李四需要对需求B进行开发,需要增加另一系列表、字段以及视图等数据库对象,其中需求A和需求B存在关联关系,则开发人员可以采用本技术方案将数据库从9.0版本增量升级至10.0版本,并采用相应的验证数据C进行需求A的验证,而后再次通过本技术方案降级数据库至9.0版本,再升级至10.0版本,并采用验证数据D进行需求B的验证,由于需求A和需求B存在关联关系,对应的验证数据D需要用到验证数据C,通过本技术方案的升降级方式进行开发调试,实现两种需求基于同一版本进行开发调试,避免出现进行需求A开发时数据库从9.0版本增量升级至10.0版本,随后进行需求A开发时数据库从10.0版本增量升级至11.0版本,造成数据库版本管理混乱,为后续版本的发布带来不便。进一步地,由于升级过程中保留了个性数据,即进行需求A验证时的验证数据C,后续在进行需求B的验证时,无需验证数据C被完整保留,可以直接使用而无需重新构建,有效提升需求验证及验收效率,有效为开发环节减负提效。
[0067] 更进一步地,由于调试场景以及工程软件的正常升级场景的升级迭代频率通常较高,通过采用本技术方案的升降级组合方式进行升级迭代,能够有效提升升级迭代效率且便于版本管理。
[0068] 本发明的较佳的实施例中,共性数据包括多个数据库对象,每个数据库对象的创建基于至少一实体表;目标版本中还包括一第一升级区域、一第二升级区域和一第三升级区域,第一升级区域中用于保存需要升级的实体表,第二升级区域用于保存需要升级的实体表关联的索引信息,第三升级区域用于保存需要升级的数据库操作语句;
[0069] 则步骤S2中,如图2所示,将当前数据库版本升级至目标版本的过程包括:
[0070] 步骤S21,判断第一升级区域中是否保存有实体表:
[0071] 若是,则升级当前数据库版本中对应的实体表,随后转向步骤S22;
[0072] 若否,则转向步骤S23;
[0073] 步骤S22,判断第二升级区域中是否保存有实体表关联的索引信息:
[0074] 若是,则升级当前数据库版本中对应的索引信息,随后转向步骤S23;
[0075] 若否,则转向步骤S23;
[0076] 步骤S23,判断第三升级区域中是否保存有数据库操作语句:
[0077] 若是,则执行数据库操作语句,并在执行成功后输出升级得到的升级数据库版本;
[0078] 若否,则输出升级得到的升级数据版本。
[0079] 具体地,本实施例中,数据库版本的升级采用增量升级的方式,目标版本中可以分别保存需要升级的实体表、索引信息以及数据库操作语句作为增量升级数据包,有效减少升级数据处理量。
[0080] 本发明的较佳的实施例中,步骤S21中,如图3所示,升级当前数据库版本中对应的实体表的过程包括:
[0081] 步骤S211,获取当前数据库版本中的实体表表名列表,并判断第一升级区域中的实体表是否在实体表表名列表中:
[0082] 若是,则转向步骤S212;
[0083] 若否,则新建实体表并更新实体表表名列表以及实体表表名列表关联的表结构列表;
[0084] 步骤S212,获取实体表表名列表关联的表结构列表,并判断表结构列表与目标版本的表结构列表是否一致:
[0085] 若是,则转向步骤S22;
[0086] 若否,则更新表结构列表及其关联的实体表,随后转向步骤S22。
[0087] 本发明的较佳的实施例中,步骤S22中,如图4所示,升级当前数据库版本中对应的索引信息的过程包括:
[0088] 步骤S221,读取实体表的索引信息,并判断索引信息是否在当前数据库版本中索引信息列表中:
[0089] 若是,则转向步骤S222;
[0090] 若否,则新增索引信息并更新索引信息列表;
[0091] 步骤S222,判断索引信息是否与目标版本的索引信息列表是否一致:
[0092] 若是,则转向步骤S23;
[0093] 若否,则更新索引信息及对应的索引信息列表,随后转向步骤S23。
[0094] 本发明的较佳的实施例中,执行步骤S21之前,还包括删除当前数据库版本中的所有数据库对象;
[0095] 则执行步骤S23之后,还包括根据升级后的实体表及其关联的索引信息创建数据库对象。
[0096] 本发明的较佳的实施例中,步骤S2中,在升级数据库版本中的共性数据与目标版本中的共性数据一致且个性数据保留时,还包括将当前数据库版本的版本号更新为目标版本的版本号。
[0097] 本发明的较佳的实施例中,步骤S23中,还包括在数据库操作语句执行不成功时,回滚执行,并在回滚执行成功后输出对应的升级数据库版本。
[0098] 本发明的较佳的实施例中,步骤S2中,提供一升级管理端口,用于向用户展示选择提示,并接收用户根据选择提示给出的选择反馈。
[0099] 以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。