CN110865829B - 数据库升级方法、系统、设备及存储介质 - Google Patents

数据库升级方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN110865829B
CN110865829B CN201810989332.5A CN201810989332A CN110865829B CN 110865829 B CN110865829 B CN 110865829B CN 201810989332 A CN201810989332 A CN 201810989332A CN 110865829 B CN110865829 B CN 110865829B
Authority
CN
China
Prior art keywords
database
matching
upgrading
information
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810989332.5A
Other languages
English (en)
Other versions
CN110865829A (zh
Inventor
赵宇轩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN201810989332.5A priority Critical patent/CN110865829B/zh
Publication of CN110865829A publication Critical patent/CN110865829A/zh
Application granted granted Critical
Publication of CN110865829B publication Critical patent/CN110865829B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据库升级方法、系统、设备及存储介质,所述方法包括接收目标版本数据库的第一升级代码和表结构信息;比较原版本数据库的表结构信息和目标版本数据库的表结构信息,得到数据库表结构差异信息;匹配所述第一升级代码和数据库表结构差异信息;如果匹配成功,则运行所述第一升级代码升级原版本数据库;如果匹配失败,根据所述数据库表结构差异信息升级原版本数据库。本发明在使用发布的升级代码进行数据库升级之前,首先进行语句判断,如果出错则直接采用数据库差异信息进行升级,避免了升级代码有误时引起升级异常,实现了数据库升级容错保护。

Description

数据库升级方法、系统、设备及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据库升级方法、系统、设备及存储介质。
背景技术
随着互联网技术的不断发展,数据库得到了越来越广泛的应用。其中,Sqlite是一种新型的数据库,当应用于安卓系统时,可以获得较快的处理速度。当前,在对安卓的Sqlite数据库升级时,可以通过删除原表创建新表的方法,也可以通过创建新表之后复制已有数据,再重命名新表的方式,还可以通过写数据库升级的方法。这些升级方法都需要在升级代码发布之前进行逻辑验证,并覆盖到过去版本跨版本升级的情况,确保升级方案的正确性。
然而,采用现有的数据库升级方法,只有发布前的逻辑验证,缺少发布后应对异常问题的方法。一旦发布了错误代码,在升级过程中将导致数据库使用异常,丢失数据,甚至应用崩溃。
发明内容
针对现有技术中的问题,本发明的目的在于提供一种数据库升级方法、系统、设备及存储介质,在使用发布的升级代码进行数据库升级之前,首先进行语句判断,如果出错则直接采用数据库差异信息进行升级,避免了升级代码有误时引起升级异常,实现了数据库升级容错保护。
本发明实施例提供一种数据库升级方法,所述方法包括如下步骤:
S100:接收目标版本数据库的第一升级代码和表结构信息;
S200:比较原版本数据库的表结构信息和目标版本数据库的表结构信息,得到数据库表结构差异信息;
S300:匹配所述第一升级代码和数据库表结构差异信息,判断第一升级代码的语句是否能够实现将原版本数据库更新为目标版本数据库;
S400:如果是,则运行所述第一升级代码升级原版本数据库;
S500:否则,根据所述数据库表结构差异信息升级原版本数据库。
可选地,步骤S100中,所述接收目标版本数据库的第一升级代码和表结构信息,包括如下步骤:
接收目标版本数据库的第一升级代码和数据库配置文件;
从所述数据库配置文件中提取目标版本数据库的表结构信息。
可选地,所述表结构信息包括数据库中表的名称和表包括的列的名称;
所述数据库表结构差异信息包括新增表信息、删除表信息和修改表信息,其中:
所述新增表信息包括目标版本数据库相比于原版本数据库新增的表的表结构信息;
所述删除表信息包括目标版本数据库相比于原版本数据库删除的表的名称;
所述修改表信息包括分别处于原版本的数据库中的第一表和目标版本数据库中的第二表之间的表差异信息,所述第一表和所述第二表的名称相同且表结构信息不同。
可选地,步骤S300中,根据如下匹配规则匹配所述第一升级代码和数据库表结构差异信息:
G1:查找第一升级代码的语句中的新增表语句,判断新增表语句是否能实现所述新增表信息中表的增加,如果是,则匹配成功,否则匹配失败;
G2:查找第一升级代码的语句中的删除表语句,判断删除表语句是否能实现所述删除表信息中表的删除,如果是,则匹配成功,否则匹配失败;
G3:查找第一升级代码的语句中的修改表语句,判断修改表语句是否能实现所述修改表信息中表结构信息的修改,如果是,则匹配成功,否则匹配失败;
匹配规则G1、匹配规则G2和匹配规则G3中至少一个匹配失败时,判定所述第一升级代码无法实现将原版本数据库更新为目标版本数据库。
可选地,步骤S500中,所述根据所述数据库表结构差异信息升级原版本数据库,包括如下步骤:
获取预设的新增表语句模板、删除表语句模板和修改表语句模板;
根据所述数据库表结构差异信息生成新增表语句、删除表语句和修改表语句;
根据预设的语句组合规则,将生成的语句进行组合,得到第二升级代码;
运行所述第二升级代码升级原版本数据库。
可选地,步骤S500中,所述根据所述数据库表结构差异信息升级原版本数据库,包括如下步骤:
复制原版本数据库中的表集合,得到临时表集合,建立临时表集合中各个表与原版本数据库中各个表的映射关系;
根据所述新增表信息,在所述表集合的副本中新增表;
根据所述修改表信息和临时表集合中各个表与原版本数据库中各个表的映射关系,查找到临时表集合中待修改的表,修改该待修改表的表结构信息;
删除原版本数据库中的表集合,将临时表集合中各个表根据所述目标数据库的表结构信息重命名。
可选地,步骤S400中,所述运行所述第一升级代码升级原版本数据库之后,还包括如下步骤:
监控所述第一升级代码运行状态,如果运行发生异常,则停止当前升级进程,根据所述数据库表结构差异信息升级原版本数据库。
可选地,步骤S100,包括如下步骤:
接收升级包;
判断待升级的数据库的当前版本与升级包的最新版本之间是否存在至少一个中间版本;
如果是,则依次将待升级的数据库的当前版本作为原版本,将原版本的高一级版本作为目标版本,从所述升级包中提取原版本到目标版本的第一升级代码和表结构信息,然后循环执行步骤S200~S500,直至待升级的数据库的当前版本升级至升级包的最新版本;
否则,将待升级的数据库的当前版本作为原版本,将升级包的最新版本作为目标版本,从所述升级包中提取原版本到目标版本的第一升级代码和表结构信息,然后执行步骤S200~S500。
可选地,所述匹配规则G1包括如下子规则:
G11:判断所述新增表语句中是否存在判断表是否不存在的语句,如果是,则匹配成功,否则匹配失败;
G12:判断所述新增表语句中增加表的名称和表结构信息与所述新增表信息是否一致,如果是,则匹配成功,否则匹配失败;
匹配子规则G11和G12中至少一个匹配失败时,匹配规则G1匹配失败;
所述匹配规则G3包括如下子规则:
G31:判断修改表语句中是否存在判断表是否存在的语句,如果是,则匹配成功,否则匹配失败;
G32:判断修改表语句中修改表的名称与所述修改表信息是否一致,如果是,则匹配成功,否则匹配失败;
G33:判断修改表语句中修改表的表结构信息与所述修改表信息是否是否一致,如果是,则匹配成功,否则匹配失败;
匹配规则G31、G32和G33中至少一个匹配失败时,匹配规则G3匹配失败。
可选地,所述数据库为Sqlite数据库,所述匹配所述第一升级代码和数据库表结构差异信息,还包括如下匹配规则:
G4:判断所述升级代码中是否包括Sqlite数据库不支持的语句,如果是,则匹配失败,否则匹配成功;
匹配规则G1、匹配规则G2、匹配规则G3和匹配规则G4中至少一个匹配失败时,判定所述第一升级代码无法实现将原版本数据库更新为目标版本数据库。
本发明实施例还提供一种数据库升级系统,应用于所述的数据库升级方法,所述系统包括:
数据接收模块,用于接收目标版本数据库的第一升级代码和表结构信息;
数据比较模块,用于比较原版本数据库的表结构信息和目标版本数据库的表结构信息,得到数据库表结构差异信息;
升级代码匹配模块,用于匹配所述第一升级代码和数据库表结构差异信息,判断第一升级代码的语句是否能够实现将原版本数据库更新为目标版本数据库,如果是,则匹配成功,否则匹配失败;
数据库升级模块,用于根据升级代码匹配模块的匹配结果选择升级方法,如果匹配成功,则运行所述第一升级代码升级原版本数据库,如果匹配失败,则根据所述数据库表结构差异信息升级原版本数据库。
本发明实施例还提供一种数据库升级设备,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行所述的数据库升级方法的步骤。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现所述的数据库升级方法的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
本发明所提供的数据库升级方法、系统、设备及存储介质具有下列优点:
本发明在使用发布的升级代码进行数据库升级之前,首先进行语句判断,如果出错则直接采用数据库差异信息进行升级,避免了升级代码有误时引起升级异常,实现了数据库升级容错保护;进一步地,在采用升级代码进行升级时,也对升级过程进行监控,如果升级出现异常则及时停止,并重新根据数据库差异信息进行升级,全面保障数据库升级过程的安全可靠,避免数据丢失和应用使用异常。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
图1是本发明的数据库升级方法的流程图;
图2是本发明一实施例的数据库升级方法的流程图;
图3是本发明另一实施例的数据库升级方法的流程图;
图4是本发明再一实施例的数据库升级方法的流程图;
图5是本发明一实施例的数据库升级系统的结构示意图;
图6是本发明一实施例的数据库升级设备的结构示意图;
图7是本发明一实施例的计算机可读存储介质的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
如图1所示,本发明提供一种数据库升级方法,所述方法包括如下步骤:
S100:接收目标版本数据库的第一升级代码和表结构信息;
S200:比较原版本数据库的表结构信息和目标版本数据库的表结构信息,得到数据库表结构差异信息;
S300:匹配所述第一升级代码和数据库表结构差异信息,判断第一升级代码的语句是否能够实现将原版本数据库更新为目标版本数据库;
S400:如果是,则运行所述第一升级代码升级原版本数据库;
S500:否则,根据所述数据库表结构差异信息升级原版本数据库。
因此,本发明在使用发布的升级代码进行数据库升级之前,首先进行语句判断,如果出错则直接采用数据库差异信息进行升级,避免了升级代码有误时引起升级异常,实现了数据库升级容错保护。
本发明的数据库可以是安卓应用的Sqlite数据库,安卓应用在客户端产生的数据需要保护,通过采用本发明的数据库升级方法,即使遇到数据库升级代码有异常时也能够通过客户端自己的代码逻辑保护用户数据不丢失并且不影响继续使用。在实际应用中,本发明不限于此,该数据库升级方法可以应用于安卓应用的数据库中,也可以应用于其他系统的数据库中,可以由客户端本身执行,也可以由应用本身执行,也可以应用于其他类型的如MySQL数据库等等,均属于本发明的保护范围之内。
在本发明一实施例中,步骤S100中,所述接收目标版本数据库的第一升级代码和表结构信息,包括如下步骤:
接收目标版本数据库的第一升级代码和数据库配置文件;
从所述数据库配置文件中提取目标版本数据库的表结构信息。
所述表结构信息包括数据库中表的名称和表包括的列的名称。因此,所述原版本数据库的表结构信息包括原版本数据库的表集合中各个表的名称和各个表包括的列的名称,可以从本地客户端缓存中获取。所述目标版本数据库的表结构信息包括目标版本数据库的表集合中各个表的名称和各个表包括的列的名称,可以从目标版本数据库的数据库配置文件databaseconfig中提取。
对比两个版本数据库的表结构信息可以得到两个版本数据库的增减情况,数据库的增减包括三种情况:新增表、删除表、修改表的表结构信息,因此所述数据库表结构差异信息包括新增表信息、删除表信息和修改表信息,其中:
所述新增表信息包括目标版本数据库相比于原版本数据库新增的表的表结构信息;
所述删除表信息包括目标版本数据库相比于原版本数据库删除的表的名称;
所述修改表信息包括分别处于原版本的数据库中的第一表和目标版本数据库中的第二表之间的表差异信息,所述第一表和所述第二表的名称相同且表结构信息不同。
如图2所示,为本发明一实施例的数据库升级方法的流程图。在该实施例中,所述步骤S500:根据所述数据库表结构差异信息升级原版本数据库,包括如下步骤:
S511:根据所述数据库表结构差异信息生成第二升级代码;
S512:运行所述第二升级代码升级原版本数据库。
生成第二升级代码后,为了保证代码的正确,也可以再采用步骤S300对第二升级代码的准确性进行验证,判断第二升级代码是否能够实现原版本向目标版本的升级。
其中,步骤S511生成第二升级代码包括如下步骤:
获取预设的新增表语句模板、删除表语句模板和修改表语句模板;
根据所述数据库表结构差异信息生成新增表语句、删除表语句和修改表语句;
根据预设的语句组合规则,将生成的语句进行组合,得到第二升级代码。
采用该种方法,不必依赖于接收到的升级包中的第一升级代码,在第一升级代码可以正常使用时,才使用第一升级代码进行升级,当第一升级代码出现错误时,直接根据数据库表结构差异信息生成新的第二升级代码,采用正确的第二升级代码进行升级,保护用户数据不丢失并且不影响继续使用。
如图3所示,为本发明另一实施例的数据库升级方法的流程图。在该实施例中,步骤S500中,所述根据所述数据库表结构差异信息升级原版本数据库,包括如下步骤:
S521:创建临时表集合,对临时表集合中的表结构信息进行修改;
S522:删除原版本数据库中的表集合,将临时表集合中各个表根据所述目标数据库的表结构信息重命名。
其中,步骤S521创建临时表集合,对临时表集合中的表结构信息进行修改,包括如下步骤:
复制原版本数据库中的表集合,得到临时表集合,建立临时表集合中各个表与原版本数据库中各个表的映射关系;临时表集合中各个表的命名可以采用原版本表集合的表名称加上一个标识符,以与原表进行区分,并且也可以很容易得到与原表的映射关系;
根据所述新增表信息,在所述表集合的副本中新增表;
根据所述修改表信息和临时表集合中各个表与原版本数据库中各个表的映射关系,查找到临时表集合中待修改的表,修改该待修改表的表结构信息。
在应用中,一般不删除表集合中多余的表,即采用该实施例的方法时,无需根据删除表信息将临时表集合中的对应表删除,然而,本发明不限于此,在获得临时表集合之后,也可以根据所述删除表信息以及临时表集合中各个表与原版本数据库中各个表的映射关系,在临时表中修改对应的表。
进一步地,在图2和图3的实施例中,所述数据库方法进一步包括在升级过程中进行状态监控和异常处理的步骤。具体地,在步骤S400中,所述运行所述第一升级代码升级原版本数据库之后,还包括如下步骤:
S600:监控所述第一升级代码运行状态,判断升级是否发生异常;
如果运行发生异常,则停止当前升级进程,然后继续步骤S500;
如果运行正常,则S700升级到目标版本的数据库并上报升级结果。
此处升级发生异常指的是升级过程意外中断或升级过程主动报错。在升级发生异常时,捕获发生的异常情况,并作为升级结果上报给上位机的服务器。
在升级完成后,需要保存升级后的数据库的表集合中表的表结构信息。
进一步地,在实际数据库升级过程中,还可能会出现跨版本升级的情况,因此,在本发明再一实施例中,步骤S100,包括如下步骤:
接收升级包;
判断待升级的数据库的当前版本与升级包的最新版本之间是否存在至少一个中间版本;
如果是,则依次将待升级的数据库的当前版本作为原版本,将原版本的高一级版本作为目标版本,从所述升级包中提取原版本到目标版本的第一升级代码和表结构信息,然后循环执行步骤S200~S500,直至待升级的数据库的当前版本升级至升级包的最新版本;
否则,将待升级的数据库的当前版本作为原版本,将升级包的最新版本作为目标版本,从所述升级包中提取原版本到目标版本的第一升级代码和表结构信息,然后执行步骤S200~S500。
具体地,如图4所示,为本发明再一实施例的数据库升级方法的流程图。在该实施例中,所述数据库升级方法包括如下步骤:
S110:接收升级包;
S120:将待升级数据库的当前版本作为原版本,将原版本的高一级版本作为目标版本;
S130:接收目标版本数据库的第一升级代码和表结构信息,然后继续步骤S200~S500;
S400和S500执行完之后,继续步骤S800:判断待升级数据库的当前版本是否为升级包中的最高版本,如果是,则升级结束,否则重新跳转至步骤S120,执行新一轮数据库升级。
上述三个实施例也可以组合使用,例如在图4示出的实施例中,步骤S500可以替换为图2中实施例的步骤S511和步骤S512,或者可以替换为图3中实施例的步骤S521和步骤S522。在图4中步骤S400的执行中,也可以进一步增加图2和图3的实施例中的步骤S600,对采用第一升级代码进行升级的过程进行监控。
在本发明一实施例中,步骤S300中,根据如下匹配规则匹配所述第一升级代码和数据库表结构差异信息:
G1:采用正则匹配查找第一升级代码的语句中的新增表语句,判断新增表语句是否能实现所述新增表信息中表的增加,如果是,则匹配成功,否则匹配失败;
G2:采用正则匹配查找第一升级代码的语句中的删除表语句,判断删除表语句是否能实现所述删除表信息中表的删除,如果是,则匹配成功,否则匹配失败;
G3:采用正则匹配查找第一升级代码的语句中的修改表语句,判断修改表语句是否能实现所述修改表信息中表结构信息的修改,如果是,则匹配成功,否则匹配失败;
匹配规则G1、匹配规则G2和匹配规则G3中至少一个匹配失败时,判定所述第一升级代码无法实现将原版本数据库更新为目标版本数据库。
此处采用正则匹配,即采用固定的正则表达式在升级代码中进行查找。正则表达式可以包括固定的新增表的表达式、删除表的表达式、修改表的表达式等等,与升级代码的语句进行匹配。
进一步地,所述匹配规则G1包括如下子规则:
G11:判断所述新增表语句中是否存在判断表是否不存在的语句,例如使用正则匹配所有新增表的操作中是否有if not exists,如果是,则匹配成功,否则匹配失败;
G12:判断所述新增表语句中增加表的名称和表结构信息与所述新增表信息是否一致,如果是,则匹配成功,否则匹配失败;
如果要匹配成功,首先,新增表语句中表的名称和表结构信息需要与新增表信息中新增表的名称和表结构相同,其次,新增表语句中表的名称必须在原版本的数据库中不存在,而存在于目标版本的数据库。如果有对表重命名的操作,则重命名后的名称也需要满足在原版本的数据库中不存在,而存在于目标版本的数据库中。
匹配子规则G11和G12中至少一个匹配失败时,匹配规则G1匹配失败;
所述匹配规则G3包括如下子规则:
G31:判断修改表语句中是否存在判断表是否存在的语句,即使用正则匹配所有修改表操作中是否存在有if exists,如果是,则匹配成功,否则匹配失败;
G32:判断修改表语句中修改表的名称与所述修改表信息是否一致,如果是,则匹配成功,否则匹配失败;
如果要匹配成功,修改表语句中表的名称需要同时存在于原版本数据库和目标版本数据库中。
G33:判断修改表语句中修改表的表结构信息与所述修改表信息是否是否一致,如果是,则匹配成功,否则匹配失败;
如果要匹配成功,修改表语句中的表的名称与表结构信息的映射关系与修改表信息中的表的名称和表结构信息的映射关系需要一致,表结构信息的内容也要一致。
匹配规则G31、G32和G33中至少一个匹配失败时,匹配规则G3匹配失败。
进一步地,在该实施例中,所述数据库为Sqlite数据库,所述匹配所述第一升级代码和数据库表结构差异信息,还包括如下匹配规则:
G4:判断所述升级代码中是否包括Sqlite数据库不支持的语句,如果是,则匹配失败,否则匹配成功;
匹配规则G1、匹配规则G2、匹配规则G3和匹配规则G4中至少一个匹配失败时,判定所述第一升级代码无法实现将原版本数据库更新为目标版本数据库。
例如,由于Sqlite数据库不支持修改列属性,则使用正则匹配查看升级代码中是否包括列属性修改的语句,如果是,则匹配失败。
其他Sqlite数据库中不支持的操作也可以使用固定的正则表达式去匹配查找。也可以设定允许的语句名单,使用正则匹配去查找升级代码,如果出现在允许的语句名单之外的操作,也属于匹配失败。
如图5所示,本发明实施例还提供一种数据库升级系统,应用于所述的数据库升级方法,所述系统包括:
数据接收模块M100,用于接收目标版本数据库的第一升级代码和表结构信息;
数据比较模块M200,用于比较原版本数据库的表结构信息和目标版本数据库的表结构信息,得到数据库表结构差异信息;
升级代码匹配模块M300,用于匹配所述第一升级代码和数据库表结构差异信息,判断第一升级代码的语句是否能够实现将原版本数据库更新为目标版本数据库,如果是,则匹配成功,否则匹配失败;
数据库升级模块M400,用于根据升级代码匹配模块的匹配结果选择升级方法,如果匹配成功,则运行所述第一升级代码升级原版本数据库,如果匹配失败,则根据所述数据库表结构差异信息升级原版本数据库。
因此,本发明在使用发布的升级代码进行数据库升级之前,首先进行语句判断,如果出错则直接采用数据库差异信息进行升级,避免了升级代码有误时引起升级异常,实现了数据库升级容错保护。本发明的数据库升级系统可以设置于本地客户端,也可以设置于数据库对应的应用内。数据库升级模块M400进一步还可以对采用第一升级代码进行的升级过程进行监控,当升级出现异常时,停止第一升级代码的升级进程,然后重新生成第二升级代码或者直接对数据库的表集合进行增删改操作。
本发明实施例还提供一种数据库升级设备,包括处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行所述的数据库升级方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
下面参照图6来描述根据本发明的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现所述的数据库升级方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
参考图7所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本发明所提供的数据库升级方法、系统、设备及存储介质具有下列优点:
本发明在使用发布的升级代码进行数据库升级之前,首先进行语句判断,如果出错则直接采用数据库差异信息进行升级,避免了升级代码有误时引起升级异常,实现了数据库升级容错保护;进一步地,在采用升级代码进行升级时,也对升级过程进行监控,如果升级出现异常则及时停止,并重新根据数据库差异信息进行升级,全面保障数据库升级过程的安全可靠,避免数据丢失和应用使用异常。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (11)

1.一种数据库升级方法,其特征在于,所述方法包括如下步骤:
S100:接收目标版本数据库的第一升级代码和表结构信息,所述表结构信息包括数据库中表的名称和表包括的列的名称;
S200:比较原版本数据库的表结构信息和目标版本数据库的表结构信息,得到数据库表结构差异信息,所述数据库表结构差异信息包括新增表信息、删除表信息和修改表信息,所述新增表信息包括所述目标版本数据库相比于所述原版本数据库新增的表的表结构信息,所述删除表信息包括所述目标版本数据库相比于所述原版本数据库删除的表的名称,所述修改表信息包括分别处于所述原版本数据库中的第一表和所述目标版本数据库中的第二表之间的表差异信息,所述第一表和所述第二表的名称相同且表结构信息不同;
S300:匹配所述第一升级代码和数据库表结构差异信息,判断第一升级代码的语句是否能够实现将原版本数据库更新为目标版本数据库;
S400:如果是,则运行所述第一升级代码升级原版本数据库;
S500:否则,根据所述数据库表结构差异信息升级原版本数据库;
步骤S500中,所述根据所述数据库表结构差异信息升级原版本数据库,包括如下步骤:
复制原版本数据库中的表集合,得到临时表集合,建立临时表集合中各个表与原版本数据库中各个表的映射关系;
根据所述新增表信息,在所述临时表集合中新增表;
根据所述修改表信息和所述临时表集合中各个表与原版本数据库中各个表的映射关系,查找到所述临时表集合中待修改的表,修改该待修改的表的表结构信息;
删除所述原版本数据库中的表集合,将所述临时表集合中各个表根据所述目标版本数据库的表结构信息重命名。
2.根据权利要求1所述的数据库升级方法,其特征在于,步骤S100中,所述接收目标版本数据库的第一升级代码和表结构信息,包括如下步骤:
接收目标版本数据库的第一升级代码和数据库配置文件;
从所述数据库配置文件中提取目标版本数据库的表结构信息。
3.根据权利要求1所述的数据库升级方法,其特征在于,步骤S300中,根据如下匹配规则匹配所述第一升级代码和数据库表结构差异信息:
G1:查找第一升级代码的语句中的新增表语句,判断新增表语句是否能实现所述新增表信息中表的增加,如果是,则匹配成功,否则匹配失败;
G2:查找第一升级代码的语句中的删除表语句,判断删除表语句是否能实现所述删除表信息中表的删除,如果是,则匹配成功,否则匹配失败;
G3:查找第一升级代码的语句中的修改表语句,判断修改表语句是否能实现所述修改表信息中表结构信息的修改,如果是,则匹配成功,否则匹配失败;
匹配规则G1、匹配规则G2和匹配规则G3中至少一个匹配失败时,判定所述第一升级代码无法实现将原版本数据库更新为目标版本数据库。
4.根据权利要求1所述的数据库升级方法,其特征在于,步骤S500中,所述根据所述数据库表结构差异信息升级原版本数据库,包括如下步骤:
获取预设的新增表语句模板、删除表语句模板和修改表语句模板;
根据所述数据库表结构差异信息生成新增表语句、删除表语句和修改表语句;
根据预设的语句组合规则,将生成的语句进行组合,得到第二升级代码;
运行所述第二升级代码升级原版本数据库。
5.根据权利要求1所述的数据库升级方法,其特征在于,步骤S400中,所述运行所述第一升级代码升级原版本数据库之后,还包括如下步骤:
监控所述第一升级代码运行状态,如果运行发生异常,则停止当前升级进程,根据所述数据库表结构差异信息升级原版本数据库。
6.根据权利要求1所述的数据库升级方法,其特征在于,步骤S100,包括如下步骤:
接收升级包;
判断待升级的数据库的当前版本与升级包的最新版本之间是否存在至少一个中间版本;
如果是,则依次将待升级的数据库的当前版本作为原版本,将原版本的高一级版本作为目标版本,从所述升级包中提取原版本到目标版本的第一升级代码和表结构信息,然后循环执行步骤S200~S500,直至待升级的数据库的当前版本升级至升级包的最新版本;
否则,将待升级的数据库的当前版本作为原版本,将升级包的最新版本作为目标版本,从所述升级包中提取原版本到目标版本的第一升级代码和表结构信息,然后执行步骤S200~S500。
7.根据权利要求3所述的数据库升级方法,其特征在于,所述匹配规则G1包括如下子规则:
G11:判断所述新增表语句中是否存在判断表是否不存在的语句,如果是,则匹配成功,否则匹配失败;
G12:判断所述新增表语句中增加表的名称和表结构信息与所述新增表信息是否一致,如果是,则匹配成功,否则匹配失败;
匹配子规则G11和G12中至少一个匹配失败时,匹配规则G1匹配失败;
所述匹配规则G3包括如下子规则:
G31:判断修改表语句中是否存在判断表是否存在的语句,如果是,则匹配成功,否则匹配失败;
G32:判断修改表语句中修改表的名称与所述修改表信息是否一致,如果是,则匹配成功,否则匹配失败;
G33:判断修改表语句中修改表的表结构信息与所述修改表信息是否是否一致,如果是,则匹配成功,否则匹配失败;
匹配规则G31、G32和G33中至少一个匹配失败时,匹配规则G3匹配失败。
8.根据权利要求3所述的数据库升级方法,其特征在于,所述数据库为Sqlite数据库,所述匹配所述第一升级代码和数据库表结构差异信息,还包括如下匹配规则:
G4:判断所述升级代码中是否包括Sqlite数据库不支持的语句,如果是,则匹配失败,否则匹配成功;
匹配规则G1、匹配规则G2、匹配规则G3和匹配规则G4中至少一个匹配失败时,判定所述第一升级代码无法实现将原版本数据库更新为目标版本数据库。
9.一种数据库升级系统,其特征在于,应用于权利要求1至8中任一项所述的数据库升级方法,所述系统包括:
数据接收模块,用于接收目标版本数据库的第一升级代码和表结构信息;
数据比较模块,用于比较原版本数据库的表结构信息和目标版本数据库的表结构信息,得到数据库表结构差异信息;
升级代码匹配模块,用于匹配所述第一升级代码和数据库表结构差异信息,判断第一升级代码的语句是否能够实现将原版本数据库更新为目标版本数据库,如果是,则匹配成功,否则匹配失败;
数据库升级模块,用于根据升级代码匹配模块的匹配结果选择升级方法,如果匹配成功,则运行所述第一升级代码升级原版本数据库,如果匹配失败,则根据所述数据库表结构差异信息升级原版本数据库。
10.一种数据库升级设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至8中任一项所述的数据库升级方法的步骤。
11.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被执行时实现权利要求1至8中任一项所述的数据库升级方法的步骤。
CN201810989332.5A 2018-08-28 2018-08-28 数据库升级方法、系统、设备及存储介质 Active CN110865829B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810989332.5A CN110865829B (zh) 2018-08-28 2018-08-28 数据库升级方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810989332.5A CN110865829B (zh) 2018-08-28 2018-08-28 数据库升级方法、系统、设备及存储介质

Publications (2)

Publication Number Publication Date
CN110865829A CN110865829A (zh) 2020-03-06
CN110865829B true CN110865829B (zh) 2024-04-16

Family

ID=69651883

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810989332.5A Active CN110865829B (zh) 2018-08-28 2018-08-28 数据库升级方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110865829B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113391829B (zh) * 2021-05-24 2022-09-09 杭州新中大科技股份有限公司 一种应对高频率迭代数据的调试方法
CN113741931B (zh) * 2021-08-18 2023-07-25 苏州浪潮智能科技有限公司 软件升级方法、装置、电子设备及可读存储介质
CN116700763B (zh) * 2023-08-07 2023-10-27 长扬科技(北京)股份有限公司 Clickhouse数据库的版本升级方法及装置

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287700A (ja) * 2003-03-20 2004-10-14 Hitachi Information Systems Ltd エラー処理方法
CN1971556A (zh) * 2005-11-26 2007-05-30 华为技术有限公司 在后台管理系统中实现数据库升级的系统和方法
CN101174222A (zh) * 2006-10-31 2008-05-07 中兴通讯股份有限公司 数据版本升级方法
CN101676908A (zh) * 2008-09-17 2010-03-24 中兴通讯股份有限公司 检测数据库对象完整性的方法及装置
CN102402559A (zh) * 2010-09-16 2012-04-04 中兴通讯股份有限公司 一种数据库升级脚本的生成方法和装置
CN102402596A (zh) * 2011-11-07 2012-04-04 北京搜狗科技发展有限公司 一种主从分离数据库的读写方法和系统
CN103810257A (zh) * 2014-01-24 2014-05-21 华为技术有限公司 一种升级软件数据库的方法、装置及设备
CN103995854A (zh) * 2014-05-13 2014-08-20 大唐移动通信设备有限公司 一种设备跨版本升级方法和装置
CN104965735A (zh) * 2015-06-18 2015-10-07 北京京东尚科信息技术有限公司 用于生成升级sql脚本的装置
CN106325902A (zh) * 2015-06-24 2017-01-11 中兴通讯股份有限公司 数据库软件升级检测方法及装置
US9588871B1 (en) * 2015-04-14 2017-03-07 Don Estes & Associates, Inc. Method and system for dynamic business rule extraction
CN107179926A (zh) * 2017-04-28 2017-09-19 国家电网公司 基于动态规划算法的数据库软件升级检测系统及方法
CN107766353A (zh) * 2016-08-17 2018-03-06 阿里巴巴集团控股有限公司 一种数据库统计信息迁移的方法和设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7333992B2 (en) * 2003-05-22 2008-02-19 Microsoft Corporation System and method for identifying and storing changes made to a table
US9483245B2 (en) * 2013-01-23 2016-11-01 Red Hat Israel, Ltd. Matching database schema with application code using dependency management
US10248408B2 (en) * 2014-09-18 2019-04-02 Sap Se Handling table deltas during zero downtime upgrade

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004287700A (ja) * 2003-03-20 2004-10-14 Hitachi Information Systems Ltd エラー処理方法
CN1971556A (zh) * 2005-11-26 2007-05-30 华为技术有限公司 在后台管理系统中实现数据库升级的系统和方法
CN101174222A (zh) * 2006-10-31 2008-05-07 中兴通讯股份有限公司 数据版本升级方法
CN101676908A (zh) * 2008-09-17 2010-03-24 中兴通讯股份有限公司 检测数据库对象完整性的方法及装置
CN102402559A (zh) * 2010-09-16 2012-04-04 中兴通讯股份有限公司 一种数据库升级脚本的生成方法和装置
CN102402596A (zh) * 2011-11-07 2012-04-04 北京搜狗科技发展有限公司 一种主从分离数据库的读写方法和系统
CN103810257A (zh) * 2014-01-24 2014-05-21 华为技术有限公司 一种升级软件数据库的方法、装置及设备
CN103995854A (zh) * 2014-05-13 2014-08-20 大唐移动通信设备有限公司 一种设备跨版本升级方法和装置
US9588871B1 (en) * 2015-04-14 2017-03-07 Don Estes & Associates, Inc. Method and system for dynamic business rule extraction
CN104965735A (zh) * 2015-06-18 2015-10-07 北京京东尚科信息技术有限公司 用于生成升级sql脚本的装置
CN106325902A (zh) * 2015-06-24 2017-01-11 中兴通讯股份有限公司 数据库软件升级检测方法及装置
CN107766353A (zh) * 2016-08-17 2018-03-06 阿里巴巴集团控股有限公司 一种数据库统计信息迁移的方法和设备
CN107179926A (zh) * 2017-04-28 2017-09-19 国家电网公司 基于动态规划算法的数据库软件升级检测系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Web服务的异构数据库共享及同步机制;王玉标;文俊浩;赵瑞锋;饶锡如;;计算机工程与设计(24);全文 *

Also Published As

Publication number Publication date
CN110865829A (zh) 2020-03-06

Similar Documents

Publication Publication Date Title
US11392461B2 (en) Method and apparatus for processing information
CN110865829B (zh) 数据库升级方法、系统、设备及存储介质
CN110515647B (zh) 一种静态资源管理方法、装置、设备和存储介质
US9250889B2 (en) Assigning severity to a software update
US20170199737A1 (en) Efficient detection of architecture related bugs during the porting process
US10048978B2 (en) Apparatus and method for identifying a virtual machine having changeable settings
JP5825123B2 (ja) 制御装置、制御システムおよび制御方法
CN108647300B (zh) 数据库访问中间系统、方法、设备及存储介质
US8799716B2 (en) Heap dump occurrence detection
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN111966382A (zh) 机器学习模型的在线部署方法、装置及相关设备
CN114064113A (zh) 主机版本控制方法及装置
CN104731641A (zh) 用于复制计算系统的批量作业的方法与系统
CN111708681B (zh) 一种日志处理方法、装置、设备及存储介质
CN111026531A (zh) 任务重复发送处理方法、装置、计算机设备及存储介质
CN111427588A (zh) 中止固件包的安装
CN111897557B (zh) 一种业务系统的更新方法、装置、设备及存储介质
CN109918231B (zh) 数据重整的异常修复方法、装置、设备和存储介质
CN112114811A (zh) 一种编译方法、装置和设备
CN113836114B (zh) 数据迁移方法、系统、设备及存储介质
CN116149707B (zh) 分布式系统的升级风险检测和规避方法及装置
US20230252107A1 (en) Management device, management method, and storage medium
US20220413955A1 (en) Information processing apparatus and method of monitoring operation
US11941432B2 (en) Processing system, processing method, higher-level system, lower-level system, higher-level program, and lower-level program
JP4937387B2 (ja) 自動書き換えプログラムおよび自動書き換え装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: Jingdong Digital Technology Holding Co.,Ltd.

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Digital Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone, 100176

Applicant before: BEIJING JINGDONG FINANCIAL TECHNOLOGY HOLDING Co.,Ltd.

GR01 Patent grant
GR01 Patent grant