CN117171139A - 一种数据库变更方法及系统、电子设备、存储介质 - Google Patents
一种数据库变更方法及系统、电子设备、存储介质 Download PDFInfo
- Publication number
- CN117171139A CN117171139A CN202311230153.0A CN202311230153A CN117171139A CN 117171139 A CN117171139 A CN 117171139A CN 202311230153 A CN202311230153 A CN 202311230153A CN 117171139 A CN117171139 A CN 117171139A
- Authority
- CN
- China
- Prior art keywords
- change
- script
- verification
- rollback
- information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000008859 change Effects 0.000 claims abstract description 432
- 238000013515 script Methods 0.000 claims abstract description 182
- 238000012795 verification Methods 0.000 claims abstract description 118
- 238000004458 analytical method Methods 0.000 claims abstract description 20
- 238000012550 audit Methods 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 11
- 238000002715 modification method Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库变更方法及系统、电子设备、存储介质,获取针对目标数据库的变更工单,并提取变更工单中的变更信息;基于预设的语义分析规则对变更信息进行正确性校验;若通过,则基于变更信息,生成变更脚本、验证脚本和回退脚本;执行变更脚本对目标数据库进行变更;执行验证脚本判断目标数据库变更是否成功;若是,确定目标数据库变更完成;若否,执行回退脚本,将目标数据库回退到执行变更脚本前的状态。在本方案中,执行变更脚本对目标数据库进行变更,执行验证脚本判断目标数据库变更是否成功,若变更不成功执行回退脚本进行变更回退,从而实现了自动化执行数据库变更、变更验证和变更回退的目的,解决了耗费人力效率低下的问题。
Description
技术领域
本发明涉及数据库变更技术领域,一种数据库变更方法及系统、电子设备、存储介质。
背景技术
随着云计算和大数据技术的不断发展,MPP云数据仓库支撑业务规模越来越庞大,应用开发人员在全行生产运行环境中对于数据库变更的需求日益增多。
现有技术中,数据库的变更、变更验证和变更回退自动化程度较低,依靠人工编写脚本执行,耗费人力并且效率低下。
因此,如何实现数据库变更、变更验证和变更回退的自动化,是目前急需解决的问题。
发明内容
有鉴于此,本发明实施例提供一种数据库变更方法及系统、电子设备、存储介质,以实现自动化执行数据库变更、变更验证和变更回退的目的。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例第一方面公开了一种数据库变更方法,所述方法包括:
获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;
基于预设的语义分析规则对所述变更信息进行正确性校验;
若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;
执行所述变更脚本对所述目标数据库进行变更;
执行所述验证脚本判断所述目标数据库变更是否成功;
若是,确定所述目标数据库变更完成;
若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。
优选的,所述变更信息至少包括主机IP、变更场景、变更类型、变更对象名称和各个变更参数值,所述针基于预设的语义分析规则对所述变更信息进行正确性校验,包括:
验证所述主机IP是否存在;
若所述主机IP存在,针对每一所述变更参数值,获取对应的验证信息,判断所述变更参数值与所述验证信息是否匹配;
若每一所述变更参数值均与对应的验证信息匹配,则基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本;
执行所述审核脚本,判断所述目标数据库中是否存在所述变更对象名称对应的变更对象;
若是,并且所述变更类型为修改或删除,则确定所述变更信息通过所述正确性校验;
若否,并且所述变更类型为新增,则确定所述变更信息通过所述正确性校验。
优选的,所述基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本,包括:
获取所述变更场景对应的预设查询语句集合;
从所述预设查询语句集合中获取所述变更类型对应的查询语句;
将所述变更对象名称与所述查询语句进行拼接,得到完整的查询语句;
基于完整的查询语句生成审核脚本。
优选的,所述若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本,包括:
若所述变更信息通过所述正确性校验,则基于变更信息,从预设语句集合中分别提取相应的变更语句、验证语句和回退语句;
基于变更信息,对所述变更语句、所述验证语句和所述回退语句分别进行拼接,得到完整的所述变更语句、所述验证语句和所述回退语句;
基于完整的所述变更语句、所述验证语句和所述回退语句,分别生成变更脚本、验证脚本和回退脚本。
优选的,所述方法还包括:
若执行所述变更脚本或所述验证脚本过程中产生错误信息,则展示所述错误信息;
当接收到用户输入的回退指令时,执行所述回退脚本将所述目标数据库回退到执行所述变更脚本前的状态。
本发明实施例第二方面公开了一种数据库变更系统,所述系统包括:
获取模块,用于获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;
校验模块,用于基于预设的语义分析规则对所述变更信息进行正确性校验;
生成模块,用于若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;
执行模块,用于执行所述变更脚本对所述目标数据库进行变更;执行所述验证脚本判断所述目标数据库变更是否成功;若是,确定所述目标数据库变更完成;若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。
优选的,所述变更信息至少包括主机IP、变更场景、变更类型、变更对象名称和各个变更参数值,所述校验模块,包括:
验证单元,用于验证所述主机IP是否存在;若所述主机IP存在,针对每一所述变更参数值,获取对应的验证信息,判断所述变更参数值与所述验证信息是否匹配;
生成单元,用于若每一所述变更参数值均与对应的验证信息匹配,则基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本;
执行单元,用于执行所述审核脚本,判断所述目标数据库中是否存在所述变更对象名称对应的变更对象;若是,并且所述变更类型为修改或删除,则确定所述变更信息通过所述正确性校验;若否,并且所述变更类型为新增,则确定所述变更信息通过所述正确性校验。
优选的,所述生成单元,具体用于:
获取所述变更场景对应的预设查询语句集合;
从所述预设查询语句集合中获取所述变更类型对应的查询语句;
将所述变更对象名称与所述查询语句进行拼接,得到完整的查询语句;
基于完整的查询语句生成审核脚本。
本发明实施例第三方面公开了一种存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如本发明实施例第一方面任一所述的数据库变更方法。
本发明实施例第四方面公开了一种电子设备,包括:存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序,具体用于实现如本发明实施例第一方面任一所述的数据库变更方法。
基于上述本发明实施例提供的一种数据库变更方法及系统、电子设备、存储介质,获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;基于预设的语义分析规则对所述变更信息进行正确性校验;若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;执行所述变更脚本对所述目标数据库进行变更;执行所述验证脚本判断所述目标数据库变更是否成功;若是,确定所述目标数据库变更完成;若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。在本方案中,基于变更工单中的变更信息生成变更脚本、验证脚本和回退脚本,执行变更脚本对目标数据库进行变更,执行验证脚本判断目标数据库变更是否成功,若变更不成功执行回退脚本进行变更回退,从而实现了自动化执行数据库变更、变更验证和变更回退的目的,解决了耗费人力效率低下的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种数据库变更方法的流程图;
图2为本发明实施例公开的利用语义分析进行正确性校验的流程图;
图3为本发明实施例公开的生成审核脚本的流程图;
图4为本发明实施例公开的生成变更脚本的流程图;
图5为本发明实施例公开的生成回退脚本的流程图;
图6为本发明实施例公开的一种数据库变更系统的架构图;
图7为本发明实施例公开的一种电子设备的架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了便于理解本发明的技术方案,对本发明中出现的技术术语进行说明:
MPP云数仓:大规模并行处理云数据仓库(Massive Parallel Processing,MPP),是企业级管理决策数据的唯一整合点,也是目前金融科技架构下管理分析类最重要、最基础的支撑平台,现在已逐渐替代传统的GreenPlum(GP)数据仓库产品。相比于GP数据仓库,MPP云数仓具有以下几个优势:1、采用虚拟化技术,可以有效避免硬件故障导致的高可用问题;2、存储与计算分离,分级存储,能够有效降低数据冗余度;3、服务可灵活扩展,可以有效解决GP单集群规模上限的问题。
数据库变更:对数据库实施相关的变更操作,来实现应用开发人员提出的数据库相关的新增/修改对象、权限等需求,保证数据库上下游应用的开发作业正常运转。
由背景技术可知,现有技术中,通过人工审核应用开发人员提交的变更工单,审核通过后,生成脚本实施数据库变更,但是变更的验证阶段和回退阶段仍依靠人工编写脚本验证和回退,耗费人力并且效率低下。
因此,本发明实施例公开的一种数据库变更方法及系统、电子设备及存储介质,在本方案中,基于变更工单中的变更信息生成变更脚本、验证脚本和回退脚本,执行变更脚本对目标数据库进行变更,执行验证脚本判断目标数据库变更是否成功,若变更不成功执行回退脚本进行变更回退,从而实现了自动化执行数据库变更、变更验证和变更回退的目的,解决了耗费人力效率低下的问题。
如图1所示,为本发明实施例公开的一种数据库变更方法的流程图,主要包括以下步骤:
步骤S101:获取针对目标数据库的变更工单,并提取变更工单中的变更信息。
需要说明的是,目标数据库具体为MPP云数仓,MPP云数仓与普通数据库相较之下,MPP云数仓对表空间变更、schema变更(即模式变更)之类的自动化变更需求度较高,而MPP云数仓对于数据库表、视图、索引、列之类的变更需求度较低,因为这些可以由表的所属用户自行更改。
因此,本发明实施例所提及对于数据库的变更操作,均以表空间变更为例进行说明,但不限于表空间变更。
在步骤S101中,变更工单由应用开发人员发起,示例性的,以表空间变更为例,其变更工单包含的变更信息如下:
其中,变更信息的具体说明如下:
“主机IP”:“xxx.xxx.xxx.xxx”表明此次变更应在IP为xxx.xxx.xxx.xxx的主机上实施。
“变更场景”表明此需求表单的变更场景为”表空间变更”。
“需求明细”的值是一个列表,携带了此次变更的各项需求,包括:
“变更类型”:“新建”,表示此次变更类型是新建表空间。
“表空间名称”:“tbs_test_example_01”,表示新建表空间的名称必须为tbs_test_example_01。
“预存表数量(张)”:”10000”,表示该表空间预计存储的表的总张数为10000张。
“预存数据总量(TB)”:“150”,表示该表空间预计存储的存储量为150TB。
“cos租户信息”,是一个字典类型,表示该表空间需求建在该cos租户的bucket下。
需要说明的是,bucket(桶)是数据库中存储数据的基本元素,可以理解为数据库中的一个存储单元。
cos租户的细节信息如下:
ACCOUNT:user1@company.com,表示cos租户的账户名称为user1@company.com。
PATH:“user1_path”,表示表空间需要存在user1_path这个路径下。
KEY:[“user1_key_id”,“user1_key”],用于cos验证,表示该cos账户的key_id为user1_key_id,key为user1_key。
COMMENT:“user1数仓-金融知识图谱应用”,表示创建的该表空间路径在cos上的备注为“user1数仓-金融知识图谱应用”。
步骤S102:基于预设的语义分析规则对变更信息进行正确性校验。
在步骤S102的具体实现过程中,若变更信息至少包括主机IP、变更场景、变更类型、变更对象名称和各个变更参数值,则正确性校验的具体过程如下:
步骤S11:验证主机IP是否存在。
需要说明的是,数据库运行于主机中,变更信息中需包括主机IP,以寻找到待变更的目标数据库,因此,需要验证主机IP是否存在,以确保找到目标数据库。
步骤S12:若主机IP存在,针对每一变更参数值,获取对应的验证信息,判断变更参数值与验证信息是否匹配。
需要说明的是,若主机IP不存在,则生成并展示主机IP不存在的报错信息。
变更参数值用于表征变更的需求,不同的变更场景对应的变更参数值也不同,例如上述表空间变更场景对应的变更信息内“需求明细”中的“预存表数量(张)”、“预存数据总量(TB)”和“cos租户信息”的具体值,为变更参数值。
每个变更参数值均有对应的验证信息,例如,“预存表数量(张)”对应的验证信息为预先设定的预存表数量阈值。
相应的,判断变更参数值与验证信息是否匹配,即判断预存表数量是否超过预存表数量的阈值,若超过,则不匹配,若不超过,则匹配。
步骤S13:若每一变更参数值均与对应的验证信息匹配,则基于变更场景、变更类型和变更对象,生成审核脚本。
需要说明的是,若任一变更参数值均与对应的验证信息匹配,则生成并展示对应该变更参数值的报错信息。
在步骤S13的具体实现过程中,包括:
1、获取变更场景对应的预设查询语句集合。
2、从预设查询语句集合中获取变更类型对应的查询语句。
例如,变更类型为新增、修改、删除对应的查询语句均为查询变更对象是否存在与目标数据库中的查询语句。
3、将变更对象名称与查询语句进行拼接,得到完整的查询语句。
例如,在表空间变更中,变更对象为表空间,则采用表空间名称与查询语句进行拼接。
4、基于完整的查询语句生成审核脚本。
步骤S14:执行审核脚本,判断目标数据库中是否存在变更对象名称对应的变更对象,若是,并且变更类型为修改或删除,则确定变更信息通过正确性校验,若否,并且变更类型为新增,则确定变更信息通过正确性校验。
在步骤S14的具体实现过程中,基于主机IP连接到目标数据库,执行审核脚本,查询目标数据库中是否存在变更对象名称对应的变更对象。
可以理解的是,当变更类型为修改或删除时,需要目标数据库中存在变更对象名称对应的变更对象,才能对变更对象进行修改或删除。
当变更类型为修改或删除时,目标数据库中不存在变更对象名称对应的变更对象,生成并展示不存在修改或删除的对象的报错信息。
当变更类型为新增时,需要目标数据库中不存在变更对象名称对应的变更对象,避免重复新增的问题。
当变更类型为新增时,目标数据库中存在变更对象名称对应的变更对象,生成并展示重复新增对象的报错信息。
以上述举例的变更工单中的变更信息进行正确性校验为例,如图2所示,为本发明实施例公开的利用语义分析进行正确性校验的流程图,通过语义分析和规则匹配技术,分析表单各个参数值的正确性,若不正确,则直接生成相应的报错信息,具体流程为:
(1)从变更信息中获取变更场景,通过“变更场景”识别为表空间变更,并赋给SCENARIO_TYPE变量。
(2)按列表进行语义分析。
需要说明的是,一个变更工单可能多个变更信息,多个变更信息通过列表的形式存储,语义分析按照列表中的顺序进行。
语义分析包括以下过程:
(2.1)过滤变更信息中的空格。
(2.2)获取变更信息中的主机IP,判断主机IP是否存在。
若现有IP列表中有主机IP,则继续以下流程,否则报错主机IP错误MASTER_IP_ERROR。
(2.3)获取变更信息对应的目标数据库名称DB_NAME,判断现有数据库列表DB_LIST中有无目标数据库名称DB_NAME。
若现有数据库列表DB_LIST中有目标数据库名称DB_NAME,则继续以下流程,否则报错目标数据库名称错误DB_NAME_ERROR。
(2.4)获取变更信息中的cos租户,判断现有用户列表USER_LIST中有无cos租户COS_USER。
若现有用户列表USER_LIST中有cos租户COS_USER,则继续以下流程,否则报错cos租户信息错误COS_USER_ERROR。
(2.5)获取变更信息中的预存表数量EXP_TABLE_COUNT,判断预存表数量EXP_TABLE_COUNT是否低于阈值,若是,则继续以下流程,否则报错预存表数量错误EXP_TABLE_COUNT_ERROR。
(2.6)获取变更信息中的数据总量EXP_DATA_VOL,判断预存数据总量EXP_DATA_VOL是否低于阈值,若是,则继续以下流程,否则报错预存数据总量错误EXP_DATA_VOL_ERROR。
(2.7)确认上述过程无报错后,从变更信息获取表空间名称TBS_NAME和变更类型TBS_ALTER_TYPE。
接着,基于变更场景SCENARIO_TYPE、表空间名称TBS_NAME和变更类型TBS_ALTER_TYPE生成审核脚本。
通过主机IP连接主机,通过目标数据库名称DB_NAME实时连接目标数据库执行审核脚本,来查询表空间名称TBS_NAME对应的表空间是否已经存在。
若是,生成指示表空间重复的TBS_NAME_ERROR报错信息。
若否,确定变更信息通过正确性校验,结束语义分析。
如图3所示,为本发明实施例公开的生成审核脚本的流程图。
从变更信息获取变更场景和变更类型,并分别赋给SCENARIO_TYPE变量和TBS_ALTER_TYPE变量。
其中,以变更场景为表空间变更,变更类型为新增举例。
并根据SCENARIO_TYPE变量中的表空间变更场景,获取对应的预设查询语句集合SELECT STATEMENT,根据TBS_ALTER_TYPE变量中的变更类型,从预设查询语句集合SELECTSTATEMENT选择对应的查询语句SELECT*FROM pg_tablespace。
从变更信息获取表空间名称并赋值给TBS_NAME变量,基于TBS_NAME变量与查询语句SELECT*FROM pg_tablespace,拼接为完整的查询语句:
SELECT*FROM pg_tablespace WHERE spcname=’TBS_NAME’。
基于完整的查询语句生成审核脚本。
步骤S103:若变更信息通过正确性校验,则基于变更信息,生成变更脚本、验证脚本和回退脚本。
在步骤S103的具体实现过程中,包括:
若变更信息通过正确性校验,则基于变更信息,从预设语句集合中分别提取相应的变更语句、验证语句和回退语句。
基于变更信息,对变更语句、验证语句和回退语句分别进行拼接,得到完整的变更语句、验证语句和回退语句。
基于完整的变更语句、验证语句和回退语句,分别生成变更脚本、验证脚本和回退脚本。
需要说明的是,验证脚本与上述的审核脚本执行原理相同,均用于查询目标数据库中是否存在变更对象,验证脚本和审核脚本的均利用查询语句生成,生成过程也相同,因此,验证脚本的生成过程参照审核脚本的生成过程,这里不再赘述。
本发明实施例分别说明生成变更脚本和回退脚本具体过程,如下:
如图4所示,为本发明实施例公开的生成变更脚本的流程图。
从变更信息获取变更场景和变更类型,并分别赋给SCENARIO_TYPE变量和TBS_ALTER_TYPE变量。
其中,以变更场景为表空间变更,变更类型为新增举例。
并根据SCENARIO_TYPE变量中的表空间变更场景,获取对应的预设新建语句集合CREATE TABLESPACE STATEMENT,根据TBS_ALTER_TYPE变量中的变更类型,从预设新建语句集合CREATE TABLESPACE STATEMENT选择对应的新建语句CREATE TABLESPACE。
从变更信息获取表空间名称,cos租户名称,预存表数量,预存数据总量,并分别赋值给TBS_NAME变量、COS_USER变量、EXP_TABLE_COUNT变量和EXP_DATA_VOL变量。
并根据EXP_TABLE_COUNT变量和EXP_DATA_VOL变量计算出最佳的bucket数量赋给BUCKET_NUM变量。
基于新建语句CREATE TABLESPACE、BUCKET_NUM变量、TBS_NAME变量、COS_USER变量、EXP_TABLE_COUNT变量和EXP_DATA_VOL变量,拼接为完整的新建语句:
CREATE TABLESPACE TBS_NAME LOCATION COS_USER.PATH WITH COS_USER.KEYbucket_num=BUCKET_NUM。
需要说明的是,bucket(桶)是数据库中存储数据的基本元素,可以理解为数据库中的一个存储单元。
如图5所示,为本发明实施例公开的生成回退脚本的流程图。
从变更信息获取变更场景和变更类型,并分别赋给SCENARIO_TYPE变量和TBS_ALTER_TYPE变量。
其中,以变更场景为表空间变更,变更类型为新增举例。
并根据SCENARIO_TYPE变量中的表空间变更场景,获取对应的预设回退语句集合DROP STATEMENT,根据TBS_ALTER_TYPE变量中的变更类型,从预设回退语句集合DROPSTATEMENT选择对应的回退语句DROP TABLESPACE。
从变更信息获取表空间名称并赋值给TBS_NAME变量,基于TBS_NAME变量与回退语句DROP TABLESPACE,拼接为完整的回退语句:DROP TABLESPACE TBS_NAME。
基于完整的回退语句生成审核脚本。
步骤S104:执行变更脚本对目标数据库进行变更。
在步骤S104中,变更脚本依据变更信息对目标数据库进行变更,目标数据库的变更主要包括:新建、删除和修改用户、用户组、表空间、模式(Schema),数据库用户权限等。
在一实施例中,若变更脚本执行过程中产生错误信息,则向用户展示错误信息,当接收到用户输入的回退指令时,执行回退脚本将目标数据库回退到执行变更脚本前的状态。
步骤S105:执行验证脚本判断目标数据库变更是否成功。若是,执行步骤S106,若否执行步骤S107。
在步骤S105中,验证脚本通过查询目标数据库中变更对象是否存在,是否修改,从而验证数据库变更是否成功。
例如,若变更脚本执行后新增表空间,则验证脚本查询该表空间在目标数据库中是否存在,若存在,则变更成功,若不存在,则变更失败。
在一实施例中,若验证脚本执行过程中产生错误信息,则向用户展示错误信息,当接收到用户输入的回退指令时,执行回退脚本将目标数据库回退到执行变更脚本前的状态。
步骤S106:确定目标数据库变更完成。
步骤S107:执行回退脚本,将目标数据库回退到执行变更脚本前的状态。
在一实施例中,在一实施例中,若验证脚本执行过程中产生错误信息,则向用户展示错误信息,从而通知用户回退失败。
基于上述本发明实施例公开的一种数据库变更方法,获取针对目标数据库的变更工单,并提取变更工单中的变更信息;基于预设的语义分析规则对变更信息进行正确性校验;若变更信息通过正确性校验,则基于变更信息,生成变更脚本、验证脚本和回退脚本;执行变更脚本对目标数据库进行变更;执行验证脚本判断目标数据库变更是否成功;若是,确定目标数据库变更完成;若否,执行回退脚本,将目标数据库回退到执行变更脚本前的状态。在本方案中,基于变更工单中的变更信息生成变更脚本、验证脚本和回退脚本,执行变更脚本对目标数据库进行变更,执行验证脚本判断目标数据库变更是否成功,若变更不成功执行回退脚本进行变更回退,从而实现了自动化执行数据库变更、变更验证和变更回退的目的,解决了耗费人力效率低下的问题。
基于上述本发明实施例公开的一种数据库变更方法,如图6所示,为本发明实施例公开的一种数据库变更系统的架构图,数据库变更系统600包括:获取模块601、校验模块602、生成模块603和执行模块604。
其中,获取模块601,用于获取针对目标数据库的变更工单,并提取变更工单中的变更信息。
校验模块602,用于基于预设的语义分析规则对变更信息进行正确性校验。
在一实施例中,变更信息至少包括主机IP、变更场景、变更类型、变更对象名称和各个变更参数值,相应的,校验模块602,包括:
验证单元,用于验证主机IP是否存在;若主机IP存在,针对每一变更参数值,获取对应的验证信息,判断变更参数值与验证信息是否匹配;
生成单元,用于若每一变更参数值均与对应的验证信息匹配,则基于变更场景、变更类型和变更对象名称,生成审核脚本;
在一实施例中,生成单元,具体用于:
获取变更场景对应的预设查询语句集合;
从预设查询语句集合中获取变更类型对应的查询语句;
将变更对象名称与查询语句进行拼接,得到完整的查询语句;
基于完整的查询语句生成审核脚本。
执行单元,用于执行审核脚本,判断目标数据库中是否存在变更对象名称对应的变更对象;若是,并且变更类型为修改或删除,则确定变更信息通过正确性校验;若否,并且变更类型为新增,则确定变更信息通过正确性校验。
生成模块603,用于若变更信息通过正确性校验,则基于变更信息,生成变更脚本、验证脚本和回退脚本。
在一实施例中,生成模块603,具体用于:
若变更信息通过正确性校验,则基于变更信息,从预设语句集合中分别提取相应的变更语句、验证语句和回退语句;
基于变更信息,对变更语句、验证语句和回退语句分别进行拼接,得到完整的变更语句、验证语句和回退语句;
基于完整的变更语句、验证语句和回退语句,分别生成变更脚本、验证脚本和回退脚本。
执行模块604,用于执行变更脚本对目标数据库进行变更;执行验证脚本判断目标数据库变更是否成功;若是,确定目标数据库变更完成;若否,执行回退脚本,将目标数据库回退到执行变更脚本前的状态。
在一实施例中,数据库变更系统600还包括:
报错模块,用于若执行变更脚本或验证脚本过程中产生错误信息,则展示错误信息;
当接收到用户输入的回退指令时,执行回退脚本将目标数据库回退到执行变更脚本前的状态。
基于上述本发明实施例公开的一种数据库变更系统,获取针对目标数据库的变更工单,并提取变更工单中的变更信息;基于预设的语义分析规则对变更信息进行正确性校验;若变更信息通过正确性校验,则基于变更信息,生成变更脚本、验证脚本和回退脚本;执行变更脚本对目标数据库进行变更;执行验证脚本判断目标数据库变更是否成功;若是,确定目标数据库变更完成;若否,执行回退脚本,将目标数据库回退到执行变更脚本前的状态。在本方案中,基于变更工单中的变更信息生成变更脚本、验证脚本和回退脚本,执行变更脚本对目标数据库进行变更,执行验证脚本判断目标数据库变更是否成功,若变更不成功执行回退脚本进行变更回退,从而实现了自动化执行数据库变更、变更验证和变更回退的目的,解决了耗费人力效率低下的问题。
本发明实施例还提供一种电子设备,请参考图7,该电子设备包括存储器701和处理器702。
其中,存储器701用于存储计算机程序;
处理器702用于执行计算机程序,具体用于实现本申请任一实施例所提供的一种数据库变更方法。
本申请还提供一种计算机存储介质,用于存储计算机程序,计算机程序被执行时,具体用于实现本申请任一实施例所提供的一种数据库变更方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据库变更方法,其特征在于,所述方法包括:
获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;
基于预设的语义分析规则对所述变更信息进行正确性校验;
若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;
执行所述变更脚本对所述目标数据库进行变更;
执行所述验证脚本判断所述目标数据库变更是否成功;
若是,确定所述目标数据库变更完成;
若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。
2.根据权利要求1所述的方法,其特征在于,所述变更信息至少包括主机IP、变更场景、变更类型、变更对象名称和各个变更参数值,所述针基于预设的语义分析规则对所述变更信息进行正确性校验,包括:
验证所述主机IP是否存在;
若所述主机IP存在,针对每一所述变更参数值,获取对应的验证信息,判断所述变更参数值与所述验证信息是否匹配;
若每一所述变更参数值均与对应的验证信息匹配,则基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本;
执行所述审核脚本,判断所述目标数据库中是否存在所述变更对象名称对应的变更对象;
若是,并且所述变更类型为修改或删除,则确定所述变更信息通过所述正确性校验;
若否,并且所述变更类型为新增,则确定所述变更信息通过所述正确性校验。
3.根据权利要求2所述的方法,其特征在于,所述基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本,包括:
获取所述变更场景对应的预设查询语句集合;
从所述预设查询语句集合中获取所述变更类型对应的查询语句;
将所述变更对象名称与所述查询语句进行拼接,得到完整的查询语句;
基于完整的查询语句生成审核脚本。
4.根据权利要求1所述的方法,其特征在于,所述若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本,包括:
若所述变更信息通过所述正确性校验,则基于变更信息,从预设语句集合中分别提取相应的变更语句、验证语句和回退语句;
基于变更信息,对所述变更语句、所述验证语句和所述回退语句分别进行拼接,得到完整的所述变更语句、所述验证语句和所述回退语句;
基于完整的所述变更语句、所述验证语句和所述回退语句,分别生成变更脚本、验证脚本和回退脚本。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若执行所述变更脚本或所述验证脚本过程中产生错误信息,则展示所述错误信息;
当接收到用户输入的回退指令时,执行所述回退脚本将所述目标数据库回退到执行所述变更脚本前的状态。
6.一种数据库变更系统,其特征在于,所述系统包括:
获取模块,用于获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;
校验模块,用于基于预设的语义分析规则对所述变更信息进行正确性校验;
生成模块,用于若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;
执行模块,用于执行所述变更脚本对所述目标数据库进行变更;执行所述验证脚本判断所述目标数据库变更是否成功;若是,确定所述目标数据库变更完成;若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。
7.根据权利要求6所述的系统,其特征在于,所述变更信息至少包括主机IP、变更场景、变更类型、变更对象名称和各个变更参数值,所述校验模块,包括:
验证单元,用于验证所述主机IP是否存在;若所述主机IP存在,针对每一所述变更参数值,获取对应的验证信息,判断所述变更参数值与所述验证信息是否匹配;
生成单元,用于若每一所述变更参数值均与对应的验证信息匹配,则基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本;
执行单元,用于执行所述审核脚本,判断所述目标数据库中是否存在所述变更对象名称对应的变更对象;若是,并且所述变更类型为修改或删除,则确定所述变更信息通过所述正确性校验;若否,并且所述变更类型为新增,则确定所述变更信息通过所述正确性校验。
8.根据权利要求7所述的系统,其特征在于,所述生成单元,具体用于:
获取所述变更场景对应的预设查询语句集合;
从所述预设查询语句集合中获取所述变更类型对应的查询语句;
将所述变更对象名称与所述查询语句进行拼接,得到完整的查询语句;
基于完整的查询语句生成审核脚本。
9.一种存储介质,其特征在于,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如权利要求1至5任意一项所述的数据库变更方法。
10.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器用于存储计算机程序;
所述处理器用于执行所述计算机程序,具体用于实现如权利要求1至5任意一项所述的数据库变更方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311230153.0A CN117171139A (zh) | 2023-09-22 | 2023-09-22 | 一种数据库变更方法及系统、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311230153.0A CN117171139A (zh) | 2023-09-22 | 2023-09-22 | 一种数据库变更方法及系统、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117171139A true CN117171139A (zh) | 2023-12-05 |
Family
ID=88941203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311230153.0A Pending CN117171139A (zh) | 2023-09-22 | 2023-09-22 | 一种数据库变更方法及系统、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117171139A (zh) |
-
2023
- 2023-09-22 CN CN202311230153.0A patent/CN117171139A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
CN102236672B (zh) | 一种数据导入方法及装置 | |
US8019795B2 (en) | Data warehouse test automation framework | |
US20140379667A1 (en) | Data quality assessment | |
CN110162516B (zh) | 一种基于海量数据处理的数据治理的方法及系统 | |
CN103514223A (zh) | 一种数据仓库数据同步方法和系统 | |
CN111324606B (zh) | 数据分片的方法及装置 | |
CN109726244A (zh) | 数据导入方法及装置 | |
CN110704475A (zh) | 一种etl加载表结构的比对方法及系统 | |
CN111240968A (zh) | 一种自动测试管理方法及系统 | |
CN112579578A (zh) | 基于元数据的数据质量管理方法、装置、系统及服务器 | |
CN111597118A (zh) | 测试用例生成方法、装置、计算机设备及存储介质 | |
CN107229681A (zh) | 一种数据库操作方法及装置 | |
CN111190814A (zh) | 软件测试用例的生成方法、装置、存储介质及终端 | |
CN106708897B (zh) | 一种数据仓库质量保障方法、装置和系统 | |
US11314489B1 (en) | Automated authoring of software solutions by first analyzing and resolving anomalies in a data model | |
JP2006268661A (ja) | データインポート方法およびデータインポート装置 | |
US11567808B2 (en) | Dependency handling for configuration transport | |
CN112783916A (zh) | Sql语句审核方法及装置、存储介质及电子设备 | |
CN115809228A (zh) | 数据比对方法、装置、存储介质及电子设备 | |
CN117171139A (zh) | 一种数据库变更方法及系统、电子设备、存储介质 | |
CN115757479A (zh) | 数据库的查询优化方法、机器可读存储介质与计算机设备 | |
US20160070698A1 (en) | Database Management System Tools for An Automated Work to Stage Process | |
CN112817931B (zh) | 一种增量版本文件的生成方法及装置 | |
CN112286910A (zh) | 一种数据校验方法及装置 |
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 |