CN113778997A - 一种数据库版本管理方法、系统及设备 - Google Patents

一种数据库版本管理方法、系统及设备 Download PDF

Info

Publication number
CN113778997A
CN113778997A CN202111130125.2A CN202111130125A CN113778997A CN 113778997 A CN113778997 A CN 113778997A CN 202111130125 A CN202111130125 A CN 202111130125A CN 113778997 A CN113778997 A CN 113778997A
Authority
CN
China
Prior art keywords
ddl
updated
database
file
current
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.)
Granted
Application number
CN202111130125.2A
Other languages
English (en)
Other versions
CN113778997B (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.)
DBAPPSecurity Co Ltd
Original Assignee
DBAPPSecurity 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 DBAPPSecurity Co Ltd filed Critical DBAPPSecurity Co Ltd
Priority to CN202111130125.2A priority Critical patent/CN113778997B/zh
Publication of CN113778997A publication Critical patent/CN113778997A/zh
Application granted granted Critical
Publication of CN113778997B publication Critical patent/CN113778997B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据库版本管理方法、系统及设备,首先将多个待更新DDL文件中的一个作为当前待更新DDL文件,根据预设的数据库的DDL语法与数据库的对应关系和待更新数据库将当前待更新DDL文件解析成DDL语句在待更新数据库中执行,若执行失败,则会记录当前待更新DDL文件的版本号,然后将下一个待更新DDL文件作为当前待更新DDL文件进行解析,直至所有待更新DDL文件全部被解析完毕。使得在多人协同开发的情况下,DDL语句执行失败以后,用户根据记录的执行失败的当前待更新DDL文件的版本号能够准确的定位,提高了工作效率且适用于行式数据库和列式数据库的版本管理。

Description

一种数据库版本管理方法、系统及设备
技术领域
本发明涉及数据管理领域,特别是涉及一种数据库版本管理方法、系统及设备。
背景技术
随着企业业务的迅速拓展,单一数据库难以满足业务需求,往往需要引入不同的数据库,例如,使用ElasticSearch实现大数据下的全文检索,使用ClickHouse实现大宽表的快速查询和分析等。企业在对待更新数据库进行版本管理时,通过在待更新数据库中执行待更新DDL(Data Definition Language,数据库模式定义语言)文件解析成的DDL语句对待更新数据库中的文件进行操作。企业在对新版行式数据库及列式数据库进行多人协同开发时,会上传多个待更新DDL文件,执行失败后,系统仅会报错而无法定位执行失败的待更新DDL文件,产生了大量的排查任务,降低了工作效率。
发明内容
本发明的目的是提供一种数据库版本管理方法、系统及设备,在多人协同开发的情况下,DDL语句执行失败以后,用户根据记录的执行失败的当前待更新DDL文件的版本号能够准确的定位,提高了工作效率且适用于行式数据库和列式数据库的版本管理。
为解决上述技术问题,本发明提供了一种数据库版本管理方法,包括:
S1:确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件;
S2:根据预设的数据库的DDL语法与数据库的对应关系和所述待更新数据库对所述当前待更新DDL文件进行解析,得到DDL语句;
S3:在所述待更新数据库中执行所述DDL语句;
S4:判断所述DDL语句是否执行成功,若是,进入S5,若否,进入S7;
S5:判断多个所述待更新DDL文件是否全部解析完毕,若否,进入S6,否则,进入S8;
S6:从多个所述待更新DDL文件中未执行的所述待更新DDL文件中确定下一个DDL文件作为所述当前待更新DDL文件,返回S2;
S7:记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,返回S5;
S8:结束更新。
优选的,记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,包括:
记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录到所述待更新数据库中的版本管理模块中。
优选的,S4与S5之间还包括:
若判定所述DDL语句执行成功,则将所述当前待更新DDL文件的版本号记录到所述版本管理模块中作为历史版本号。
优选的,在S1之前,还包括:
获取预设目录下的所述待更新数据库的所有DDL文件的版本号;所有所述DDL文件包括已更新DDL文件和/或待更新DDL文件;
获取所述待更新数据库的所有所述历史版本号;
判断是否存在版本号与所有所述历史版本号均不同的DDL文件;
若是,则将版本号与所有所述历史版本号均不同的DDL文件作为所述待更新DDL文件。
优选的,在S4与S5之间还包括:
若判定所述DDL语句执行成功,则将所述当前待更新DDL文件的MD5值记录到所述版本管理模块中
判断是否存在版本号与所有所述历史版本号均不同的DDL文件之后,还包括:
若存在版本号与所述历史版本号相同的DDL文件,则判断版本号与所述历史版本号相同的DDL文件的MD5值和所述版本管理模块中储存的版本号与所述历史版本号相同的DDL文件的MD5值是否相同;
若不同,则判定版本号与所述历史版本号相同的DDL文件已被修改并将被修改的DDL文件的版本号记录至版本冲突模块中。
优选的,在S1之前,还包括:
判断所述待更新数据库中是否存在所述版本管理模块;
若是,则进入S1;
若否,则创建所述版本管理模块。
优选的,在S2之后,还包括:
根据预设的待更新数据库的DDL语法判断所述DDL语句的DDL语法是否正确,若是,则进入S3,若否,则进入S9;
S9:记录所述当前待更新DDL文件的版本号及DDL语句的DDL语法错误的操作记录,返回S5。
优选的,记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录之后,还包括:
根据预设配置判断是否跳过所述当前待更新DDL文件,若是,则返回S5,若否,则进入S8;
和/或,
记录所述当前待更新DDL文件的版本号及DDL语句语法错误的操作记录之后,还包括:
根据所述预设配置判断是否跳过所述当前待更新DDL文件,若是,则返回S5,若否,则进入S8。
为解决上述问题,本发明还提供了一种数据库版本管理系统,包括:
第一当前待更新DDL文件确定单元,用于确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件;
解析单元,用于根据预设的数据库的DDL语法与数据库的对应关系和所述待更新数据库对所述当前待更新DDL文件进行解析,得到DDL语句;
执行单元,用于在所述待更新数据库中执行所述DDL语句;
执行判断单元,用于判断所述DDL语句是否执行成功,若是,触发解析判断单元,若否,触发执行失败记录单元;
所述解析判断单元,用于判断多个所述待更新DDL文件是否全部解析完毕,若否,触发第二当前待更新DDL文件确定单元,否则,结束更新;
所述第二当前待更新DDL文件确定单元,用于从多个所述待更新DDL文件中未执行的所述待更新DDL文件中确定下一个DDL文件作为所述当前待更新DDL文件,触发所述解析单元;
所述执行失败记录单元,用于记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,触发解析判断单元。
为解决上述问题,本发明还提供了一种数据库版本管理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述数据库版本管理方法的步骤。
本发明提供了一种数据库版本管理方法、系统及设备,首先将多个待更新DDL文件中的一个作为当前待更新DDL文件,根据预设的数据库的DDL语法与数据库的对应关系和待更新数据库将当前待更新DDL文件解析成DDL语句在待更新数据库中执行,若执行失败,则会记录当前待更新DDL文件的版本号,然后将下一个待更新DDL文件作为当前待更新DDL文件进行解析,直至所有待更新DDL文件全部被解析完毕。使得在多人协同开发的情况下,DDL语句执行失败以后,用户根据记录的执行失败的当前待更新DDL文件的版本号能够准确的定位,提高了工作效率且适用于行式数据库和列式数据库的版本管理。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种数据库版本管理方法的流程图;
图2为本发明提供的一种数据库版本管理系统的结构示意图;
图3为本发明提供的一种数据库版本管理设备的结构示意图。
具体实施方式
本发明的核心是提供一种数据库版本管理方法、系统及设备,在多人协同开发的情况下,DDL语句执行失败以后,用户根据记录的执行失败的当前待更新DDL文件的版本号能够准确的定位,提高了工作效率且适用于行式数据库和列式数据库的版本管理。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
具体请参照图1,图1为本发明提供的一种数据库版本管理方法的流程图。
该数据库版本管理方法,包括:
S1:确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件;
S2:根据预设的数据库的DDL语法与数据库的对应关系和待更新数据库对当前待更新DDL文件进行解析,得到DDL语句;
S3:在待更新数据库中执行DDL语句;
S4:判断DDL语句是否执行成功,若是,进入S5,若否,进入S7;
S5:判断多个待更新DDL文件是否全部解析完毕,若否,进入S6,否则,进入S8;
S6:从多个待更新DDL文件中未执行的待更新DDL文件中确定下一个DDL文件作为当前待更新DDL文件,返回S2;
S7:记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,返回S5;
S8:结束更新。
企业在对待更新数据库进行版本更新时,技术人员根据在待更新数据库中执行的操作和待更新数据库的DDL语法编写待更新DDL文件,通过在待更新数据库中执行待更新DDL文件解析成的DDL语句对待更新数据库中的文件进行操作,在多人协同开发时,会上传多个待更新DDL文件并行执行,由于现有的版本管理方法不支持新版行式数据库以及列式数据库,对新版行式数据库以及列式数据库进行版本更新时,若待更新DDL文件执行失败,系统仅会报告出错,而不能准确的定位执行失败的待更新DDL文件,导致产生大量的排查任务,降低了工作效率。
为解决上述技术问题,在本实施例中,通过将待更新数据库的多个待更新DDL文件逐个执行,在执行失败时记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,且预设了各类型数据库的语法,能将待更新数据库的待更新DDL文件解析成符合待更新数据库的DDL语法的DDL语句,因此能够对行式数据库以及列式数据库进行更新时执行失败的待更新DDL文件进行定位。
具体的,首先确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件,例如,可以根据多个待更新DDL文件的上传时间的顺序或版本号的新旧来选择当前待更新DDL文件,本实施例在此不作特别的限定。此外,这里的待更新数据库可以为行式数据库,例如Mysql,也可以为列式数据库,例如ClickHouse。系统根据待更新数据库和预设的数据库的DDL语法与数据库的对应关系对当前待更新DDL文件进行解析,得到能在待更新数据库中执行的DDL语句,例如,对于行式数据库,DDL语句可以并行执行也可以逐个执行,对于列式数据库,DDL语句逐个执行。然后在待更新数据库中执行DDL语句,对于ClickHouse来说,执行DDL语句可以为建表、删表、删改表结构或者数据的增删改;若执行成功,则判断是否所有的待更新DDL文件都已解析完毕,若是,结束更新,若否,从多个待更新DDL文件中未执行的待更新DDL文件中确定下一个DDL文件作为当前待更新DDL文件,返回根据预设的数据库的DDL语法与数据库的对应关系和待更新数据库对当前待更新DDL文件进行解析,得到DDL语句的步骤;若执行失败,则先记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,再判断是否所有的待更新DDL文件都已解析完毕,若是,结束更新,若否,从多个待更新DDL文件中未执行的待更新DDL文件中确定下一个DDL文件作为当前待更新DDL文件,返回根据预设的数据库的DDL语法与数据库的对应关系和待更新数据库对当前待更新DDL文件进行解析,得到DDL语句的步骤。
此外,此处的DDL语句可以但不限于通过JDBC(Java Database Connectivity,Java数据库连接)技术与待更新数据库之间进行通信,只要能实现DDL语句与待更新数据库之间的通信即可。
综上,本实施例通过逐个执行待更新DDL文件,在执行失败时记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,且预设各类型数据库的DDL语法,因此实现了对行式数据库以及列式数据库的版本管理,在待更新DDL文件执行失败能够定位执行失败的待更新DDL文件,实现了接口化设计,提高了工作效率。
在上述实施例的基础上:
作为一种优选的实施例,记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,包括:
记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录到待更新数据库中的版本管理模块中。
在本实施例中,在当前待更新DDL文件执行失败后,将当前待更新DDL文件的版本号及DDL语句执行失败的操作记录到待更新数据库中的版本管理模块中,能够更加快速的根据待更新数据库的版本管理模块中的信息定位错误,且由于各个数据库的版本管理模块中只储存各自的执行失败的当前待更新DDL文件的版本号和DDL语句执行失败的操作记录,不容易造成数据混乱,方便对各个数据库进行管理,提高工作效率。此处的版本管理模块可以但不限于是版本管理表。
作为一种优选的实施例,S4与S5之间还包括:
若判定DDL语句执行成功,则将当前待更新DDL文件的版本号记录到版本管理模块中。
考虑到企业在对待更新数据库进行更新时,需要排除已经在待更新数据库中执行成功的DDL文件不再执行,进而确定待更新DDL文件,基于上述问题,在本实施例中,在DDL语句执行成功后,会将当前待更新DDL文件的版本号记录到版本管理模块中。企业在对待更新数据库进行更新时,可根据版本管理模块中记录的执行成功的DDL文件的版本号确定待更新DDL文件,同时便于后续对待更新数据库进行数据迁移时进行校验。
作为一种优选的实施例,在S1之前,还包括:
获取预设目录下的待更新数据库的所有DDL文件的版本号;所有DDL文件包括已更新DDL文件和/或待更新DDL文件;
获取待更新数据库的所有历史版本号;
判断是否存在版本号与所有历史版本号均不同的DDL文件;
若是,则将版本号与所有历史版本号均不同的DDL文件作为待更新DDL文件。
考虑到通过人工比对历史版本号和所有DDL文件的版本号来确定待更新DDL文件的方法效率低下且容易出错,在本实施例中,系统会自动获取预设目录下的待更新数据库的所有DDL文件的版本号和待更新数据库的历史版本号,通过对比预设目录下的待更新数据库的所有DDL文件的版本号和待更新数据库的历史版本号来确定待更新DDL文件。
具体的,系统先获取获取预设目录下的待更新数据库的所有DDL文件的版本号和待更新数据库的历史版本号,判断是否存在判断是否存在版本号与所有历史版本号均不同的DDL文件,若是,则说明该DDL文件未在待更新数据库中执行过,属于对待更新数据库进行版本迭代的待更新DDL文件,系统判定版本号与所有历史版本号均不同的DDL文件为待更新DDL文件,若存在版本号与历史版本号相同的DDL文件,说明该文件为已更新DDL文件,已经在待更新数据库中执行过,不需要再次在待更新数据中执行。
此外,所有DDL文件包括已更新DDL文件和/或待更新DDL文件,若待更新数据库为首次更新,那么所有DDL文件均为待更新的DDL文件,若待更新数据库非首次更新,那么所有DDL文件中包括已更新DDL文件和待更新DDL文件,若待更新数据库当前不进行更新,那么所有DDL文件均为已更新DDL文件。
综上,通过系统自动获取预设目录下的待更新数据库的所有DDL文件的版本号和待更新数据库的历史版本号,对比预设目录下的待更新数据库的所有DDL文件的版本号和待更新数据库的历史版本号来确定待更新DDL文件,实实现了自动化确定待更新DDL文件的过程,无需人工确认,提高了效率的同时不容易出错。
作为一种优选的实施例,在S4与S5之间还包括:
若判定DDL语句执行成功,则将当前待更新DDL文件的MD5值记录到版本管理模块中
判断是否存在版本号与所有历史版本号均不同的DDL文件之后,还包括:
若存在版本号与历史版本号相同的DDL文件,则判断版本号与历史版本号相同的DDL文件的MD5值和版本管理模块中储存的版本号与历史版本号相同的DDL文件的MD5值是否相同;
若不同,则判定版本号与历史版本号相同的DDL文件已被修改并将被修改的DDL文件的版本号记录至版本冲突模块中。
考虑到因为技术人员的误操作,有时会在已更新DDL文件中进行修改,导致已更新DDL文件对应的历史版本与该已更新DDL文件中保存的版本不一致,造成版本冲突,为解决上述问题,在本实施例中,基于MD5值能够反映文件内容是否发生变化,若文件内容被修改,则MD5值会发生改变的原理,通过比较已更新DDL文件的MD5值和版本管理模块中保存的该已更新DDL文件的MD5值是否一致,来判断该已更新DDL文件是否被修改,若该已更新DDL文件被修改,则记录该DDL文件的版本号到版本冲突模块。
具体的,系统在判定DDL语句执行成功后,还会记录当前待更新文件的MD5值到版本管理模块中,在判断是否存在版本号与所有历史版本号均不同的DDL文件之后之后,若存在版本号与历史版本号相同的DDL文件,说明该版本号与历史版本号相同的DDL文件为已更新DDL文件,系统会判断版本号与历史版本号相同的DDL文件的MD5值和版本管理模块中储存的版本号与历史版本号相同的DDL文件的MD5值是否相同,若相同,表示该版本号与历史版本号相同的DDL文件未被修改,若不同,说明该版本号与历史版本号相同的DDL文件已被修改,也即已更新DDL文件已被修改。导致已更新DDL文件对应的历史版本与该已更新DDL文件中保存的版本不一致,造成版本冲突,系统会将已被修改的版本号与历史版本号相同的DDL文件的版本号记录到版本冲突模块中,后续技术人员可根据版本冲突模块中的记录的版本号定位到被修改的已更新DDL文件,从而将被修改的已更新DDL文件还原。
综上,本实施例通过记录执行成功的DDL语句对应的当前待更新DDL文件的MD5值到版本管理模块中,比较版本号与历史版本号相同的DDL文件的MD5值和版本管理模块中储存的版本号与历史版本号相同的DDL文件的MD5值是否相同来判断版本号与历史版本号相同的DDL文件是否被修改,并将被修改的版本号与历史版本号相同的DDL文件记录到版本冲突模块,能够精准的排查出由于技术人员误操作,修改了已更新DDL文件导致的版本不一致的问题,提高了数据的准确性。此外,此处的版本冲突模块可以但不限于是版本冲突表。
作为一种优选的实施例,在S1之前,还包括:
判断待更新数据库中是否存在版本管理模块;
若是,则进入S1;
若否,则创建版本管理模块。
考虑到对于企业刚投入使用的数据库,可能还未在数据库中创建版本管理模块,可能会导致程序无法正常运行,因此,在本实施例中,在确定待更新数据库的待更新DDL文件之前,系统会先判断待更新数据库中是否存在版本管理模块,若不存在,则会创建管理模块,若存在,则进入确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件的步骤,避免了因待更新数据库中不存在版本管理模块导致程序无法正常的记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,提高了版本管理的稳定性。
作为一种优选的实施例,在S2之后,还包括:
根据预设的待更新数据库的DDL语法判断DDL语句的DDL语法是否正确,若是,则进入S3,若否,则进入S9;
S9:记录当前待更新DDL文件的版本号及DDL语句的DDL语法错误的操作记录,返回S5。
考虑到技术人员在编写待更新DDL文件时,可能会存在DDL语法错误,使得系统对存在DDL语法错误的待更新DDL文件解析后得到的DDL语句无法在待更新数据库中执行,导致执行失败,因此,在本实施例中,在根据预设的数据库的DDL语法与数据库的对应关系和待更新数据库对当前待更新DDL文件进行解析,得到DDL语句之后,系统还会根据预设的待更新数据库的DDL语法判断DDL语句的DDL语法是否正确,若判定DDL语句的DDL语法正确,则进入在待更新数据库中执行DDL语句的步骤,若判定DDL语句的语法错误,则会记录当前待更新DDL文件的版本号及DDL语句的DDL语法错误的操作记录,并返回S5,以便于技术人员改正当前待更新DDL文件的语法错误,并且无需执行DDL语法错误的DDL语句,简化了流程,对于由于DDL语法错误而无法执行成功的DDL语句,能够更快的记录。
作为一种优选的实施例,记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录之后,还包括:
根据预设配置判断是否跳过当前待更新DDL文件,若是,则返回S5,若否,则进入S8;
和/或,
记录当前待更新DDL文件的版本号及DDL语句语法错误的操作记录之后,还包括:
根据预设配置判断是否跳过当前待更新DDL文件,若是,则返回S5,若否,则进入S8。
考虑到当前待更新DDL文件执行失败或由于DDL语法错误未执行后,可能影响下一个待更新DDL文件的正常执行,导致下一个待更新DDL文件执行失败,例如,当前待更新DDL文件执行的操作为创建A表格,下一个待更新DDL文件执行的操作为删除A表格,但是由于当前待更新DDL文件解析成的DDL语句的DDL语法有误,导致当前待更新DDL文件未执行,在待更新数据库中未成功创建A表格,在执行下一个待更新DDL文件时,由于待更新数据库中无A表格,因此无法执行删除A表格的操作,导致下一个待更新DDL文件执行失败。
基于上述问题,在本实施例中,在当前待更新DDL文件执行失败时,在记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录之后,系统会根据预设配置判断是否跳过当前待更新DDL文件,若是,则返回S5,若否,则进入S8;
同理,在当前待更新DDL文件解析成的DDL语句的DDL语法错误时,在记录当前待更新DDL文件的版本号及DDL语句语法错误的操作记录之后,系统会根据预设配置判断是否跳过当前待更新DDL文件,若是,则返回S5,若否,则进入S8。此处的预设配置可以但不限于由技术人员根据实际需要自行设置,若根据预设配置选择结束更新,则用户可根据版本管理模块中的记录修正当前待更新DDL文件的错误后重新启动程序,使待更新数据库正常更新。
综上,在本实施例中,通过增加预设配置使得在当前待更新DDL文件执行失败或当前待更新DDL文件解析成的DDL语句的DDL语法错误时,能够选择跳过错误或结束更新,提高了应用场景的灵活性,使得在当前待更新DDL文件出错时能及时结束更新,以便技术人员修正当前待更新DDL文件,以免对后续待更新DDL文件造成影响。
本发明还提供了一种数据库版本管理系统,具体请参照图2,图2为本发明提供的一种数据库版本管理系统的结构示意图,包括:
第一当前待更新DDL文件确定单元21,用于确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件;
解析单元22,用于根据预设的数据库的DDL语法与数据库的对应关系和待更新数据库对当前待更新DDL文件进行解析,得到DDL语句;
执行单元23,用于在待更新数据库中执行DDL语句;
执行判断单元24,用于判断DDL语句是否执行成功,若是,触发解析判断单元25,若否,触发执行失败记录单元27;
解析判断单元25,用于判断多个待更新DDL文件是否全部解析完毕,若否,触发第二当前待更新DDL文件确定单元26,否则,结束更新;
第二当前待更新DDL文件确定单元26,用于从多个待更新DDL文件中未执行的待更新DDL文件中确定下一个DDL文件作为当前待更新DDL文件,触发解析单元22;
执行失败记录单元27,用于记录当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,触发解析判断单元25。
关于该数据库版本管理系统的相关介绍,请参照上述实施例,本申请在此不再赘述。
本发明还提供了一种数据库版本管理设备,具体请参照图3,图3为本发明提供的一种数据库版本管理设备的结构示意图包括:
存储器31,用于存储计算机程序;
处理器32,用于执行计算机程序时实现如上述的数据库版本管理方法的步骤。
关于该数据库版本管理设备的相关介绍,请参照上述实施例,本申请在此不再赘述。
需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种数据库版本管理方法,其特征在于,包括:
S1:确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件;
S2:根据预设的数据库的DDL语法与数据库的对应关系和所述待更新数据库对所述当前待更新DDL文件进行解析,得到DDL语句;
S3:在所述待更新数据库中执行所述DDL语句;
S4:判断所述DDL语句是否执行成功,若是,进入S5,若否,进入S7;
S5:判断多个所述待更新DDL文件是否全部解析完毕,若否,进入S6,否则,进入S8;
S6:从多个所述待更新DDL文件中未执行的所述待更新DDL文件中确定下一个DDL文件作为所述当前待更新DDL文件,返回S2;
S7:记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,返回S5;
S8:结束更新。
2.如权利要求1所述数据库版本管理方法,其特征在于,记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,包括:
记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录到所述待更新数据库中的版本管理模块中。
3.如权利要求2所述数据库版本管理方法,其特征在于,S4与S5之间还包括:
若判定所述DDL语句执行成功,则将所述当前待更新DDL文件的版本号记录到所述版本管理模块中作为历史版本号。
4.如权利要求3所述数据库版本管理方法,其特征在于,在S1之前,还包括:
获取预设目录下的所述待更新数据库的所有DDL文件的版本号;所有所述DDL文件包括已更新DDL文件和/或待更新DDL文件;
获取所述待更新数据库的所有所述历史版本号;
判断是否存在版本号与所有所述历史版本号均不同的DDL文件;
若是,则将版本号与所有所述历史版本号均不同的DDL文件作为所述待更新DDL文件。
5.如权利要求4所述数据库版本管理方法,其特征在于,在S4与S5之间还包括:
若判定所述DDL语句执行成功,则将所述当前待更新DDL文件的MD5值记录到所述版本管理模块中;
判断是否存在版本号与所有所述历史版本号均不同的DDL文件之后,还包括:
若存在版本号与所述历史版本号相同的DDL文件,则判断版本号与所述历史版本号相同的DDL文件的MD5值和所述版本管理模块中储存的版本号与所述历史版本号相同的DDL文件的MD5值是否相同;
若不同,则判定版本号与所述历史版本号相同的DDL文件已被修改并将被修改的DDL文件的版本号记录至版本冲突模块中。
6.如权利要求2所述数据库版本管理方法,其特征在于,在S1之前,还包括:
判断所述待更新数据库中是否存在所述版本管理模块;
若是,则进入S1;
若否,则创建所述版本管理模块。
7.如权利要求1至6任一项所述的数据库版本管理方法,其特征在于,在S2之后,还包括:
根据预设的待更新数据库的DDL语法判断所述DDL语句的DDL语法是否正确,若是,则进入S3,若否,则进入S9;
S9:记录所述当前待更新DDL文件的版本号及DDL语句的DDL语法错误的操作记录,返回S5。
8.如权利要求7所述数据库版本管理方法,其特征在于,记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录之后,还包括:
根据预设配置判断是否跳过所述当前待更新DDL文件,若是,则返回S5,若否,则进入S8;
和/或,
记录所述当前待更新DDL文件的版本号及DDL语句语法错误的操作记录之后,还包括:
根据所述预设配置判断是否跳过所述当前待更新DDL文件,若是,则返回S5,若否,则进入S8。
9.一种数据库版本管理系统,其特征在于,包括:
第一当前待更新DDL文件确定单元,用于确定待更新数据库的多个待更新DDL文件中的一个作为当前待更新DDL文件;
解析单元,用于根据预设的数据库的DDL语法与数据库的对应关系和所述待更新数据库对所述当前待更新DDL文件进行解析,得到DDL语句;
执行单元,用于在所述待更新数据库中执行所述DDL语句;
执行判断单元,用于判断所述DDL语句是否执行成功,若是,触发解析判断单元,若否,触发执行失败记录单元;
所述解析判断单元,用于判断多个所述待更新DDL文件是否全部解析完毕,若否,触发第二当前待更新DDL文件确定单元,否则,结束更新;
所述第二当前待更新DDL文件确定单元,用于从多个所述待更新DDL文件中未执行的所述待更新DDL文件中确定下一个DDL文件作为所述当前待更新DDL文件,触发所述解析单元;
所述执行失败记录单元,用于记录所述当前待更新DDL文件的版本号及DDL语句执行失败的操作记录,触发解析判断单元。
10.一种数据库版本管理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述数据库版本管理方法的步骤。
CN202111130125.2A 2021-09-26 2021-09-26 一种数据库版本管理方法、系统及设备 Active CN113778997B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111130125.2A CN113778997B (zh) 2021-09-26 2021-09-26 一种数据库版本管理方法、系统及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111130125.2A CN113778997B (zh) 2021-09-26 2021-09-26 一种数据库版本管理方法、系统及设备

Publications (2)

Publication Number Publication Date
CN113778997A true CN113778997A (zh) 2021-12-10
CN113778997B CN113778997B (zh) 2024-02-02

Family

ID=78853565

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111130125.2A Active CN113778997B (zh) 2021-09-26 2021-09-26 一种数据库版本管理方法、系统及设备

Country Status (1)

Country Link
CN (1) CN113778997B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107682436A (zh) * 2017-10-09 2018-02-09 武汉斗鱼网络科技有限公司 一种更新文件的方法、装置和设备
CN108491218A (zh) * 2018-03-12 2018-09-04 浙江中控技术股份有限公司 一种数据库变更文件生成的方法和装置
CN109460409A (zh) * 2018-11-01 2019-03-12 泰康保险集团股份有限公司 数据访问方法和装置
US20200210395A1 (en) * 2018-12-28 2020-07-02 Stephen Molini Control Versioning of Temporal Tables to Reduce Data Redundancy

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107682436A (zh) * 2017-10-09 2018-02-09 武汉斗鱼网络科技有限公司 一种更新文件的方法、装置和设备
CN108491218A (zh) * 2018-03-12 2018-09-04 浙江中控技术股份有限公司 一种数据库变更文件生成的方法和装置
CN109460409A (zh) * 2018-11-01 2019-03-12 泰康保险集团股份有限公司 数据访问方法和装置
US20200210395A1 (en) * 2018-12-28 2020-07-02 Stephen Molini Control Versioning of Temporal Tables to Reduce Data Redundancy

Also Published As

Publication number Publication date
CN113778997B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
US9996341B2 (en) Infrastructure for the automation of the assembly of schema maintenance scripts
EP3265916B1 (en) A method for identifying a cause for a failure of a test
US7774772B2 (en) Method and apparatus to perform an application software migration
CN109189852B (zh) 一种数据同步的方法及用于数据同步的装置
CN112100194A (zh) 一种数据库版本管理方法及系统
US10592400B2 (en) System and method for creating variants in a test database during various test stages
CN111444208B (zh) 一种数据更新方法及相关设备
CN113778997B (zh) 一种数据库版本管理方法、系统及设备
CN112783916A (zh) Sql语句审核方法及装置、存储介质及电子设备
CN115238655A (zh) 一种json数据编辑方法和装置
CN116089394A (zh) 数据库的数据回滚方法、存储介质与设备
CN113792026B (zh) 数据库脚本的部署方法、装置及计算机可读存储介质
CN111240891A (zh) 基于数据库多表间数据一致性的数据恢复方法及装置
CN114840489A (zh) 数据库版本更迭方法及装置、存储介质及电子装置
CN114089965A (zh) 基于单体式代码仓库Monorepo的程序开发项目管理方法、装置
KR102464740B1 (ko) 빅데이터 분석용 dbms를 위한 테스트 자동화 프레임워크 및 테스트 자동화 방법
CN116149707B (zh) 分布式系统的升级风险检测和规避方法及装置
US8150821B2 (en) System and method for using generic utilities to perform database utilities on mainframe operated DB2 databases
CN117348916B (zh) 脚本生成方法、装置、设备及存储介质
CN112749156A (zh) 数据处理方法、数据库管理系统和数据处理设备
CN113204566B (zh) Sql脚本的执行方法及装置
CN111597165B (zh) 一种数据库管理方法、终端及存储介质
CN116339717B (zh) 一种数据执行方法、装置、设备和介质
CN116700763B (zh) Clickhouse数据库的版本升级方法及装置
AU2020100309B4 (en) Techniques for Controlling Interaction with an Application Database

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
GR01 Patent grant
GR01 Patent grant