一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据库脚本管控方法、系统、设备、存储介质及程序产品与流程

2022-11-30 09:29:55 来源:中国专利 TAG:


1.本技术涉及脚本处理技术领域,尤其涉及一种数据库脚本管控方法、一种数据库脚本管控系统、一种电子设备、一种计算机可读存储介质及一种计算机程序产品。


背景技术:

2.随着系统的持续迭代,数据库脚本需要不断的变更以适应新的业务需求,随着数据库脚本变更的持续增多,加上开发、测试、生产等多种环境,再叠加多个客户不同的生产版本,给数据库脚本管理提出持续的挑战。
3.在数据库脚本管理过程中,主要存在如下问题:
4.1)运维人员现场变更生产环境脚本,造成版本管理失控,这类问题往往无法及时发现,存在较大的安全隐患。
5.2)在系统开发过程,从开发环境到测试环境,再到生产环境,需要通过人工识别和管理版本差异,容易出错,造成数据库脚本差异,影响环境的迁移。
6.3)客户定制化开发,形成新的脚本分支,叠加客户自主开发,造成部分脚本未纳入版本管控,造成版本差异,引发脚本冲突。
7.通常,很大一部分生产事故都因数据库版本不一致引起的,特别是运维人员手工误操作、引表结构、字段类型差异、误删索引、调整分区等等,给实际生产经营带来损失。


技术实现要素:

8.本技术提供了一种数据库脚本管控方法、系统、设备、存储介质及程序产品,以解决相关技术中因数据库版本不一致引起的生产事故的问题。
9.根据本技术的第一方面,提供了一种数据库脚本管控方法,所述方法包括:
10.确定目标环境中的目标数据库脚本,并获取所述目标环境的脚本版本基线序列;
11.确定所述目标数据库脚本对应的目标数据库,并创建与所述目标数据库对应的目标容器;
12.获取所述目标数据库的全量脚本集合,所述全量脚本集合包括一个或多个参考数据库脚本,各参考数据库脚本具有对应的参考脚本版本基线;
13.在所述全量脚本集合中匹配所述脚本版本基线序列中的各脚本版本基线,生成与所述脚本版本基线序列匹配的匹配脚本集合,其中,所述匹配脚本集合中包括与各脚本版本基线匹配的参考脚本版本基线以及对应的参考数据库脚本;
14.在所述目标容器中执行所述匹配脚本集合中的各参考数据库脚本,以获得数据库实例脚本;
15.将所述目标数据库脚本与所述数据库实例脚本进行比较,生成两者的差异信息。
16.根据本技术的第二方面,提供了一种数据库脚本管控系统,所述系统包括:
17.目标数据库脚本确定模块,用于确定目标环境中的目标数据库脚本;
18.基线序列获取模块,用于获取所述目标环境的脚本版本基线序列;
19.目标数据库确定模块,用于确定所述目标数据库脚本对应的目标数据库;
20.目标容器创建模块,用于创建与所述目标数据库对应的目标容器;
21.全量脚本集合获取模块,用于获取所述目标数据库的全量脚本集合,所述全量脚本集合包括一个或多个参考数据库脚本,各参考数据库脚本具有对应的参考脚本版本基线;
22.匹配脚本集合确定模块,用于在所述全量脚本集合中匹配所述脚本版本基线序列中的各脚本版本基线,生成与所述脚本版本基线序列匹配的匹配脚本集合,其中,所述匹配脚本集合中包括与各脚本版本基线匹配的参考脚本版本基线以及对应的参考数据库脚本;
23.脚本执行模块,用于在所述目标容器中执行所述匹配脚本集合中的各参考数据库脚本,以获得数据库实例脚本;
24.脚本差异分析模块,用于将所述目标数据库脚本与所述数据库实例脚本进行比较,生成两者的差异信息。
25.根据本技术的第三方面,提供了一种电子设备,所述电子设备包括:
26.至少一个处理器;以及
27.与所述至少一个处理器通信连接的存储器;其中,
28.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面的方法。
29.根据本技术的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现上述第一方面的方法。
30.根据本技术的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时用于实现上述第一方面的方法。
31.在本实施例中,采用脚本版本基线来维护数据库脚本,当获得目标环境的目标数据库脚本以及对应的脚本版本基线序列以后,可以确定该目标数据库脚本对应的目标数据库,并创建与该目标数据库对应的目标容器。然后从目标数据库的全量脚本集合中匹配出与脚本版本基线序列对应的匹配脚本集合,并通过在目标容器中执行该匹配脚本集合获得数据库实例脚本,比较该数据库实例脚本与目标环境的目标数据库脚本则可以得到两者的差异,从而实现数据库脚本的动态差异化分析,快速识别不同环境数据库的脚本差异,减少差错,为数据环境迁移、版本上线提供基础。还可以满足客户定制化需求,支持客户自主开发数据库脚本后对差异脚本进行识别,防止脚本冲突。
32.另外,本实施例通过上述的自动化识别差异脚本的方式,可以减少人工干预,避免运维人员现场变更生产环境脚本,减少人为判断出错,能够及时发现问题,避免生产事故的产生,可以显著降低生产事件发生概率。
附图说明
33.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1是本技术实施例一提供的一种数据库脚本管控方法实施例的流程图;
35.图2是本技术实施例二提供的一种数据库脚本管控方法实施例的流程图;
36.图3是本技术实施例二提供的一种全量脚本集合生成的实施例的流程图;
37.图4是本技术实施例二提供的一种全量版本基线示意图;
38.图5是本技术实施例二提供的一种版本基线比对的示意图;
39.图6是本技术实施例三提供的一种数据库脚本管控系统实施例的结构框图;
40.图7是本技术实施例四提供的一种电子设备的结构示意图。
具体实施方式
41.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
42.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
43.另外,还需要注意的是,本技术的下述实施例中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
44.实施例一
45.图1为本技术实施例一提供的一种数据库脚本管控方法实施例的流程图。本实施例可以应用于数据库脚本管控系统中,该数据库脚本管控系统可以设置于服务器中,用于对数据库脚本进行管控。
46.如图1所示,本实施例可以包括如下步骤:
47.步骤101,确定目标环境中的目标数据库脚本,并获取所述目标环境的脚本版本基线序列。
48.其中,该目标环境可以为需要进行比对分析的目标数据库环境,可包括开发环境、测试环境、生产环境或特定客户部署的数据库环境等。
49.数据库脚本是用于创建数据库对象的语句的集合,即服务器执行数据库脚本后即生成相应的数据库。在一种实现中,可以从目标环境的脚本文件中导出该目标环境的最新数据库脚本,作为目标数据库脚本。
50.在本实施例中,还可以获取目标环境的脚本版本基线序列,该脚本版本基线序列可以包括多个按时间次序排列的脚本版本基线,各脚本版本基线具有对应的数据库脚本,本实施例通过管理各脚本版本基线来对各版本的数据库脚本进行管理。
51.在一种实现中,可以从目标环境的脚本文件中获取目标数据库脚本以及脚本版本基线序列。
52.步骤102,确定所述目标数据库脚本对应的目标数据库,并创建与所述目标数据库对应的目标容器。
53.在一种实现中,在目标数据库脚本中可以包含数据库标识,因此可以从目标数据库脚本中提取出数据库标识,并将该数据库标识对应的数据库作为目标数据库。
54.当确定目标数据库以后,则可以创建与该目标数据库对应的目标容器。其中,该目标容器为目标数据库所对应的数据库容器环境。
55.目标容器的初始状态包含空白数据库实例,后续可在该空白数据库实例中执行数据库脚本。
56.在一种实现中,可以通过获取目标数据库的容器配置信息来创建对应的目标容器。
57.步骤103,获取所述目标数据库的全量脚本集合。
58.其中,该全量脚本集合中可以包括一个或多个参考数据库脚本,各参考数据库脚本具有对应的参考脚本版本基线。该参考数据库脚本为该目标数据库中加入管控的数据库脚本,例如可以包括初始数据库脚本以及每一次变更的变更数据库脚本。
59.每一次将目标数据库的数据库脚本加入管控时,则可以依据设定的基线生成规则生成该数据库脚本的脚本版本基线,作为参考脚本版本基线。然后将具有参考脚本版本基线的数据库脚本存入全量脚本集合中。
60.其中,脚本版本基线可以携带多种信息,可以根据脚本版本基线携带的信息对各脚本版本基线进行排序。
61.步骤104,在所述全量脚本集合中匹配所述脚本版本基线序列中的各脚本版本基线,生成与所述脚本版本基线序列匹配的匹配脚本集合。
62.当获得全量脚本集合以后,则可以从该全量脚本集合中查找目标环境的脚本版本基线序列中的各脚本版本基线,将找到的对应的参考数据库脚本组成匹配脚本集合,即,匹配脚本集合可以包括与各脚本版本基线匹配的参考脚本版本基线以及对应的参考数据库脚本。
63.步骤105,在所述目标容器中执行所述匹配脚本集合中的各参考数据库脚本,以获得数据库实例脚本。
64.在目标容器中,可以在空白数据库实例中按序执行匹配脚本集合中的各参考数据库脚本,最后得到数据库实例脚本。
65.步骤106,将所述目标数据库脚本与所述数据库实例脚本进行比较,生成两者的差异信息。
66.当获得目标容器导出的数据库实例脚本以后,则可以将目标环境中的目标数据库脚本与该数据库实例脚本进行比较,获得两者的差异信息。
67.示例性地,该差异信息可以包括但不限于:差异报告以及增量脚本的至少一种。
68.基于不同的需求,可生成不同格式的差异报告,如html、xml或json等,用于人工阅读和机器检核。该差异报告可以包括各种类型的脚本的脚本差异。
69.该增量脚本是以目标容器执行后导出的数据库实例脚本为基础,相对目标环境形成的差异而生成的增量脚本,该增量脚本为可执行脚本。
70.在本实施例中,采用脚本版本基线来维护数据库脚本,当获得目标环境的目标数
据库脚本以及对应的脚本版本基线序列以后,可以确定该目标数据库脚本对应的目标数据库,并创建与该目标数据库对应的目标容器。然后从目标数据库的全量脚本集合中匹配出与脚本版本基线序列对应的匹配脚本集合,并通过在目标容器中执行该匹配脚本集合获得数据库实例脚本,比较该数据库实例脚本与目标环境的目标数据库脚本则可以得到两者的差异,从而实现数据库脚本的动态差异化分析,快速识别不同环境数据库的脚本差异,减少差错,为数据环境迁移、版本上线提供基础。还可以满足客户定制化需求,支持客户自主开发数据库脚本后对差异脚本进行识别,防止脚本冲突。
71.另外,本实施例通过上述的自动化识别差异脚本的方式,可以减少人工干预,避免运维人员现场变更生产环境脚本,减少人为判断出错,能够及时发现问题,避免生产事故的产生,可以显著降低生产事件发生概率。
72.实施例二
73.图2为本技术实施例二提供的一种数据库脚本管控方法实施例的流程图,本实施例在实施例一的基础上进行更具体的说明。如图2所示,本实施例可以包括如下步骤:
74.步骤201,确定目标环境中的目标数据库脚本。
75.该目标环境可以为需要进行比对分析的目标数据库环境,可包括开发环境、测试环境、生产环境或特定客户部署的数据库环境等。
76.在一种实现中,可以从目标环境的脚本文件中导出该目标环境的最新数据库脚本,作为目标数据库脚本。其中,数据库脚本是用于创建数据库对象的语句的集合,即服务器执行数据库脚本后即生成相应的数据库。其中,数据库对象可以包括但不限于:数据库、数据表、索引、视图、触发器、函数等。则数据库脚本可以包括但不限于用于建立数据库、数据表、存储过程、触发器的语句,以及用于数据查询和自定义函数的语句等。
77.步骤202,获取所述目标环境的脚本版本基线序列。
78.其中,该脚本版本基线序列可以包括按时间顺序排序的初始数据库脚本以及增量数据库脚本(或称为变更数据库脚本)的脚本版本基线。
79.在一种实现中,可以从目标环境的脚本文件中读取脚本版本基线序列。在一种实施例中,目标环境每次获得数据库脚本时,都可以从该数据库脚本中提取对应的脚本版本基线,并记录该脚本版本基线。在另一种实施例中,若不能在数据库脚本中找到其携带的脚本版本基线,则可以按照设定的基线生成规则生成脚本版本基线并记录该脚本版本基线。
80.在记录脚本版本基线时,可以按照时间顺序记录该记录脚本版本基线。
81.脚本版本基线可以采用脚本版本基线标识来表示,示例性地,脚本版本基线标识至少可以包括如下内容的:数据分类、系统名称、版本号、版本基线建立日期、文件名后缀等。其中,系统名称可以为系统的英文简称或者中文首字母组合,版本号可以根据实际更新频次动态确定,不足前面使用0补齐,后续变更可以累加1。例如,若脚本版本基线标识为m_xxxxx_0001_20210522.sql,则表示数据分类为mysql、系统名称为xxxxx、版本号为0001版本、版本基线建立日期为2021年05月22日,对应的是mysql、xxxxx系统、0001版本、2021年05月22日的版本基线。
82.需要说明的是,脚本版本基线的命名方式可以根据需求而变更,并不限于上述的命名方式,但需要满足连续、有序两个标准。
83.步骤203,确定所述目标数据库脚本对应的目标数据库。
84.在一种实现中,在目标数据库脚本中可以包含数据库标识,因此可以从目标数据库脚本中提取出数据库标识,并将该数据库标识对应的数据库作为目标数据库。
85.步骤204,创建与所述目标数据库对应的目标容器。
86.当确定目标数据库以后,则可以创建与该目标数据库对应的目标容器。其中,该目标容器为目标数据库所对应的数据库容器环境。目标容器的初始状态包含空白数据库实例,这是为了保证脚本完整和可验证,脚本需要在数据库实例中实际运行,因此容器环境需要包含实际数据库实例。
87.需要说明的是,该目标容器可以为动态资源环境,该动态可表述为在需要时动态拉取并启动,启动后数据库实例自动就绪,执行脚本并完成后续步骤后,根据需求进行释放。
88.在一种实施例中,上述创建与目标数据库对应的目标容器的步骤,可以包括如下步骤:
89.执行环境准备指令,以从预设的配置库中拉取与目标数据库相关的容器配置;基于该容器配置执行启动指令,完成容器环境的准备。
90.具体的,可以预先为各数据库配置好对应的容器配置并存储在配置库中,当确定目标数据库以后,则可以通过环境准备指令来触发在配置库中查找该目标数据库对应的容器配置,然后通过启动指令来触发基于该容器配置进行目标容器的创建,从而完成容器环境的准备。
91.步骤205,获取所述目标数据库的全量脚本集合。
92.当确定目标数据库以后,则可以获取该目标数据库预先生成的全量脚本集合,其中,全量脚本集合中可以包括一个或多个参考数据库脚本,且各参考数据库脚本均具有对应的参考脚本版本基线。该参考数据库脚本示例性地可以包括初始数据库脚本以及变更数据库脚本(或增量数据库脚本)。
93.在一种实施例中,如图3所示,目标数据库的全量脚本集合可以采用如下方式生成:
94.s1,获取初始数据库脚本,并基于初始数据库脚本确定初始版本基线,以及将携带初始版本基线的初始数据库脚本加入全量脚本集合。
95.其中,初始数据库脚本为目标数据库结构信息,可以包括数据库名称、表名、视图、字段、字段属性及索引等全量建库脚本,例如,初始数据库脚本中可以包括建库、建表、视图、索引、空间、日志、资源等创建语句。
96.但需要说明的是,本实施例所指的初始数据库脚本不完全等同于系统建设初始阶段的上线脚本,可为系统生命周期内,将脚本纳入本实施例的管控范围所获得的全量脚本,初始数据库脚本的作用是建立初始版本基线,后续变更的脚本版本以此为基础进行增量迭代。
97.在一种实现中,基于初始数据库脚本确定初始版本基线的步骤,进一步可以包括如下步骤:
98.将初始数据库脚本导入预设的配置库中,以在该配置库中建立该初始数据库脚本对应的初始版本基线。
99.将初始数据库脚本导入配置库以后,初始数据库脚本不再发生变化,初始版本基
线也是首次建立的稳定的版本基线。
100.s2,分别获取每次发生变更的变更数据库脚本,并分别基于变更数据库脚本确定对应的变更版本基线,以及将携带对应的变更版本基线的变更数据库脚本加入全量脚本集合中。
101.具体的,在基于变更数据库脚本确定对应的变更版本基线时,可以将变更数据库脚本导入配置库中,以在该配置库中建立该变更数据库脚本对应的变更版本基线。其中,该变更数据库脚本为增量脚本,导入配置库并建立变更版本基线后不再变更。后续迭代仍为增量脚本,并建立新的变更版本基线。
102.变更数据库脚本中可以包括但不限于表、视图、索引、空间、日志、资源等创建语句和变更语句。但需要注意的是,删除语句需要独立管控,防止数据丢失。
103.需要说明的是,该全量脚本集合是动态保持更新的,通过持续收集变更数据库脚本,并生成该变更数据库脚本对应的脚本版本基线,然后将该变更数据库脚本以及对应的脚本版本基线存入全量脚本集合中,实现对数据库脚本的管理。
104.例如,如图4的全量版本基线示意图所示,在2021年5月22日通过初始数据库脚本建立初始版本基线v1,后续每次变更则版本基线累加1,比如在图4中在2021年6月15日在初始数据库脚本的基础上增加变更数据库脚本,则建立对应的变更版本基线v2;然后在2021年7月30日在v2版本的基础上提交变更数据库脚本,则建立该变更数据库脚本对应的变更版本基线v3,以此类推,最后一次提交的变更数据库脚本为2022年1月30日,则建立对应的变更版本基线vn。由于变更数据库脚本具有连续性,初始版本基线建立后,后续所有变更,需要纳入变更版本基线管控范围内,从而实现基线管理。
105.与传统配置管理不同的是,在本实施例中,每次变更不是针对同一数据库脚本文件进行变更,而是建立一个新的变更数据库脚本,并形成该新的变更数据库脚本的版本基线。
106.在实现中,可以通过数据采集单元来连接目标数据库,并获取对应的全量脚本集合,该连接对应的连接信息例如可以包括数据库类别、数据库连接、数据库用户名和登陆密码信息等。
107.步骤206,在所述全量脚本集合中匹配所述脚本版本基线序列中的各脚本版本基线,生成与所述脚本版本基线序列匹配的匹配脚本集合。
108.其中,该匹配脚本集合中包括与各脚本版本基线匹配的参考脚本版本基线以及对应的参考数据库脚本,以及,对应的参考脚本版本基线。
109.步骤206的过程可以在目标容器外完成,也可以在目标容器内完成,当在目标容器内完成时,则在一种实施例中,步骤206可以包括如下步骤:
110.将所述全量脚本集合以及所述脚本版本基线序列发送至所述目标容器中;在所述目标容器中,在所述全量脚本集合中匹配所述脚本版本基线序列中的各脚本版本基线,生成与所述脚本版本基线序列匹配的匹配脚本集合。
111.在该实施例中,在目标容器中确定匹配脚本集合。具体的,是将全量脚本集合以及脚本版本基线序列均导入至目标容器,然后在目标容器中进行基线匹配,从而查找出脚本版本基线序列中的各脚本版本基线匹配的参考数据库脚本,组成匹配脚本集合。
112.在进一步的实施例中,脚本版本基线中携带的信息可以包括版本次序信息(例如
上文中的版本号和基线建立日期),可以利用各脚本版本基线中携带的版本次序信息,确定各脚本版本基线匹配的次序,则该生成匹配脚本集合的步骤进一步可以包括如下过程:
113.按照所述版本次序信息的先后次序,依次在所述全量脚本集合中查找所述脚本版本基线序列中的各脚本版本基线;将在所述全量脚本集合中查找到的与所述脚本版本基线相同的参考脚本版本基线、以及对应的参考数据库脚本,加入到匹配脚本集合中。
114.具体的,可以从第一个脚本版本基线(即初始版本基线)开始匹配,当匹配成功后将对应的参考数据库加入匹配脚本集合中,然后进行第二个脚本版本基线的匹配,依次类推。
115.在进一步的实施例中,若脚本版本基线序列中某脚本版本基线在全量脚本集合中查找不到对应的参考脚本版本基线,则该生成匹配脚本集合的步骤还可以包括如下过程:
116.获取所述匹配脚本集合中位于最后的参考脚本版本基线,在所述全量脚本集合中将所述位于最后的参考脚本版本基线的下一参考版本基线、以及对应的参考数据库脚本加入至所述匹配脚本集合中。
117.也就是将全量脚本集合中下一个待匹配的参考版本基线、以及对应的参考数据库脚本加入至匹配脚本集合中。
118.例如,在图5中,需要进行比对的是目标数据库的全量版本基线(v1、v2、

、vn)以及目标环境的脚本版本基线序列(v1、v2、

、vk)。目标环境的版本基线vk对应的脚本是目标数据库的版本基线vm的脚本变更而来的。在目标环境中对vm进行再变更得到vk,该再变更的内容包括vm新增变更vk以及前述版本中未纳入变更管控范围的未识别变更。
119.在进行基线比对时,首先在全量版本基线中查找脚本版本基线序列中的v1,当找到v1时将v1以及对应的脚本加入匹配脚本集合,继续查找v2,以此类推,当查找到vk时,发现在全量版本基线中不存在vk,则表示vk是基于目标环境进行的再变更,此时从全量版本基线中找到vm与vk对应,则将vm也作为匹配脚本加入匹配脚本集合。
120.步骤207,在目标容器中,基于版本次序信息,按序依次执行各参考数据库脚本,并在匹配脚本集合的所有参考数据库脚本均执行完以后获取目标容器导出的数据库实例脚本。
121.其中,当步骤206在目标容器内完成时,则确定匹配脚本集合以后可以直接进行步骤207的操作。若步骤206在目标容器外完成时,在确定匹配脚本集合以后则需要将该匹配脚本集合导入至目标容器中。
122.在目标容器中,可以在空白数据库实例中按序执行匹配脚本集合中的各参考数据库脚本,最后得到数据库实例脚本。具体的,首先执行初始版本基线对应的初始数据库脚本,然后执行第一次变更后得到的变更版本基线对应的变更数据库脚本,接着执行第二次变更的变更数据库脚本,以此类推,直到最后一个变更数据库脚本执行完毕,得到数据库实例脚本。
123.步骤208,将所述目标数据库脚本与所述数据库实例脚本进行比较,生成差异报告以及增量脚本的至少一种。
124.在一种实施例中,步骤208进一步可以包括如下步骤:
125.分别将目标数据库脚本以及数据库实例脚本进行结构化处理,并对结构化处理后的目标数据库脚本与数据库实例脚本按脚本类型逐一进行比较,以确定各脚本类型的差
异,生成差异报告以及增量脚本的至少一种。
126.示例性地,该脚本类型可以包括但不限于:数据表、视图、字段、索引等。则差异报告中可以包括但不限于如下信息:表名、视图、字段、字段属性及索引等差异信息。需要说明的是,基于不同的需求,可生成不同格式的差异报告,如html、xml或json等,用于人工阅读和机器检核。
127.该增量脚本是以目标容器执行后导出的数据库实例脚本为基础,相对目标环境形成的差异而生成的增量脚本,该增量脚本为可执行脚本。
128.本实施例具有如下有益效果:
129.其一,可以做减少人工干预,避免运维人员现场变更生产环境脚本,及时发现问题,避免生产事故的产生,可以显著降低生产事件发生概率。
130.其二,可以快速识别不同环境数据库脚本差异,减少差错,为数据环境迁移提供基础。
131.其三,同时,可以满足客户定制化需求,支持客户自主开发后差异脚本识别,防止脚本冲突。
132.实施例三
133.图6为本技术实施例三提供的一种数据库脚本管控系统实施例的结构框图,可以包括如下模块:
134.目标数据库脚本确定模块301,用于确定目标环境中的目标数据库脚本;
135.基线序列获取模块302,用于获取所述目标环境的脚本版本基线序列;
136.目标数据库确定模块303,用于确定所述目标数据库脚本对应的目标数据库;
137.目标容器创建模块304,用于创建与所述目标数据库对应的目标容器;
138.全量脚本集合获取模块305,用于获取所述目标数据库的全量脚本集合,所述全量脚本集合包括一个或多个参考数据库脚本,各参考数据库脚本具有对应的参考脚本版本基线;
139.匹配脚本集合确定模块306,用于在所述全量脚本集合中匹配所述脚本版本基线序列中的各脚本版本基线,生成与所述脚本版本基线序列匹配的匹配脚本集合,其中,所述匹配脚本集合中包括与各脚本版本基线匹配的参考脚本版本基线以及对应的参考数据库脚本;
140.脚本执行模块307,用于在所述目标容器中执行所述匹配脚本集合中的各参考数据库脚本,以获得数据库实例脚本;
141.脚本差异分析模块308,用于将所述目标数据库脚本与所述数据库实例脚本进行比较,生成两者的差异信息。
142.在一种实施例中,目标容器创建模块304具体用于:
143.执行环境准备指令,以从预设的配置库中拉取与目标数据库相关的容器配置;
144.基于所述容器配置执行启动指令,完成容器环境的准备。
145.在一种实施例中,所述参考脚本版本基线携带版本次序信息;脚本执行模块307具体用于:
146.在所述目标容器中,基于所述版本次序信息,按序依次执行所述参考数据库脚本,并在所述匹配脚本集合的所有参考数据库脚本均执行完以后获取所述目标容器导出的数
据库实例脚本。
147.在一种实施例中,匹配脚本集合确定模块306还用于:
148.将所述全量脚本集合以及所述脚本版本基线序列发送至所述目标容器中;
149.在所述目标容器中,在所述全量脚本集合中匹配所述脚本版本基线序列中的各脚本版本基线,生成与所述脚本版本基线序列匹配的匹配脚本集合。
150.在一种实施例中,所述脚本版本基线以及所述参考脚本版本基线均具有版本次序信息;匹配脚本集合确定模块306具体用于:
151.按照所述版本次序信息的先后次序,依次在所述全量脚本集合中查找所述脚本版本基线序列中的各脚本版本基线;
152.将在所述全量脚本集合中查找到的与所述脚本版本基线相同的参考脚本版本基线、以及对应的参考数据库脚本,加入到匹配脚本集合中。
153.在一种实施例中,匹配脚本集合确定模块306还用于:
154.若在所述全量脚本集合中查找不到与所述脚本版本基线相同的参考脚本版本基线,则获取所述匹配脚本集合中位于最后的参考脚本版本基线;
155.在所述全量脚本集合中将所述位于最后的参考脚本版本基线的下一参考版本基线、以及对应的参考数据库脚本加入至所述匹配脚本集合中。
156.在一种实施例中,所述差异信息包括差异报告以及增量脚本的至少一种,脚本差异分析模块308具体用于:
157.分别将所述目标数据库脚本以及所述数据库实例脚本进行结构化处理,并对结构化处理后的所述目标数据库脚本与所述数据库实例脚本按脚本类型逐一进行比较,以确定各脚本类型的差异,生成差异报告以及增量脚本的至少一种,其中,所述脚本类型包括数据表、视图、字段、索引。
158.在一种实施例中,目标数据库确定模块303具体用于:
159.从所述目标数据库脚本中获取数据库标识;
160.将所述数据库标识对应的数据库作为目标数据库。
161.在一种实施例中,还可以包括全量脚本集合生成模块,用于:
162.获取初始数据库脚本,并基于所述初始数据库脚本确定初始版本基线,以及将携带所述初始版本基线的初始数据库脚本加入全量脚本集合;
163.分别获取每次发生变更的变更数据库脚本,并分别基于所述变更数据库脚本确定变更版本基线,以及将携带对应的变更版本基线的变更数据库脚本加入所述全量脚本集合中。
164.在一种实施例中,全量脚本集合生成模块还用于:
165.将所述初始数据库脚本导入预设的配置库中,以在所述配置库中建立所述初始数据库脚本对应的初始版本基线。
166.在一种实施例中,基线序列获取模块302具体用于:
167.从所述目标环境的脚本文件中读取所述脚本版本基线序列。
168.本技术实施例所提供的一种数据库脚本管控系统可执行本技术实施例一或实施例二中的一种数据库脚本管控方法,具备执行方法相应的功能模块和有益效果。
169.实施例四
170.图7示出了可以用来实施本技术的方法实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本技术的实现。
171.如图7所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
172.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
173.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如实施例一或实施例二所述的方法。
174.在一些实施例中,实施例一或实施例二所述的方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由rom 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到ram 13并由处理器11执行时,可以执行上文描述的实施例一或实施例二所述的方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行实施例一或实施例二所述的方法。
175.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
176.用于实施本技术的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在
机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
177.在本技术的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
178.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
179.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
180.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
181.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本技术中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本技术的技术方案所期望的结果,本文在此不进行限制。
182.上述具体实施方式,并不构成对本技术保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本技术的精神和原则之内所作的修改、等同替换和改进等,均应包含在本技术保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献