用于生成数据库的版本包的方法、装置、介质及电子设备与流程

文档序号:32311911发布日期:2022-11-23 11:58阅读:49来源:国知局
用于生成数据库的版本包的方法、装置、介质及电子设备与流程

1.本技术涉及数据库,特别涉及一种用于生成数据库的版本包的方法、装置、介质、电子设备、计算机程序产品。


背景技术:

2.随着互联网和信息化技术的不断发展,应用软件的版本发布频率也越来越快,应用软件的每个版本对应的项目包含多个子应用,每个子应用又调取若干数据库,每个数据库包含了数据库实例(dbname)、数据库所有者(dbowner)、表和数据存储过程。应用软件的版本发布实际上是将当前版本下所有变更的表、数据存储过程和代码等程序打包成新的版本包,利用推送工具将代码推送至版本库,对版本库进行部署从而实现版本变更。
3.在对数据库的版本包进行制作的过程中,随着基线(上线版本的时间)越来越多,使得变更的表的数目也在飞速增长,目前靠人工来识别并制作版本包会降低版本发布速率。


技术实现要素:

4.本技术实施例提供了用于生成数据库的版本包的方法、装置、介质、电子设备、计算机程序产品。
5.第一方面,本技术实施例提供了一种用于生成数据库的版本包的方法,所述方法包括:
6.获取步骤,获取所述数据库中的至少一个变更表名称和对应的变更内容,并获取与至少一个所述变更表名称相关联的表配置文件、表结构定义文件以及主键和索引文件;
7.ddl生成步骤,根据所述变更内容,基于所述表配置文件、表结构定义文件以及主键和索引文件,生成用于当前版本包的多个当前ddl;
8.识别步骤,将所述多个当前ddl与用于先前版本包的多个先前ddl进行比较,以识别出与所述变更内容对应的至少一个变更ddl;
9.版本包生成步骤,调用与每个所述变更ddl对应的脚本语言,以生成所述当前版本包。
10.在上述第一方面的一种可能的实现中,所述ddl生成步骤进一步包括:
11.修改步骤,根据所述变更内容,对所述主键和索引文件进行修改,并将修改后的所述主键和索引文件更新到所述表配置文件;
12.第一生成步骤,基于更新后的所述表配置文件以及所述表结构定义文件,按照预定分片分区规则,生成所述多个当前ddl。
13.在上述第一方面的一种可能的实现中,所述版本包生成步骤进一步包括:
14.第二生成步骤,生成与每个所述变更ddl对应的脚本语言;
15.第三生成步骤,调用每个所述脚本语言,以生成所述当前版本包。
16.在上述第一方面的一种可能的实现中,所述脚本语言是shell脚本语言。
17.在上述第一方面的一种可能的实现中,每个所述变更表名称具有对应的变更时间,
18.其中,在所述获取步骤中,基于输入的变更时间,获取与输入的变更时间对应的至少一个变更表名称和对应的变更内容。
19.在上述第一方面的一种可能的实现中,进一步包括:
20.检查步骤,基于生成的所述当前版本包中的至少一个文件夹,对所述当前版本包进行检查。
21.第二方面,本技术实施例提供了一种用于生成数据库的版本包的装置,所述装置包括:
22.获取单元,获取所述数据库中的至少一个变更表名称和对应的变更内容,并获取与至少一个所述变更表名称相关联的表配置文件、表结构定义文件以及主键和索引文件;
23.ddl生成单元,根据所述变更内容,基于所述表配置文件、表结构定义文件以及主键和索引文件,生成用于当前版本包的多个当前ddl;
24.识别单元,将所述多个当前ddl与用于先前版本包的多个先前ddl进行比较,以识别出与所述变更内容对应的至少一个变更ddl;
25.版本包生成单元,调用与每个所述变更ddl对应的脚本语言,以生成所述当前版本包。
26.上述获取单元、ddl生成单元、识别单元、版本包生成单元可以通过电子设备中具有这些模块或单元功能的处理器实现。
27.在上述第二方面的一种可能的实现中,所述ddl生成单元进一步包括:
28.修改单元,根据所述变更内容,对所述主键和索引文件进行修改,并将修改后的所述主键和索引文件更新到所述表配置文件;
29.第一生成单元,基于更新后的所述表配置文件以及所述表结构定义文件,按照预定分片分区规则,生成所述多个当前ddl。
30.在上述第二方面的一种可能的实现中,所述版本包生成单元进一步包括:
31.第二生成单元,生成与每个所述变更ddl对应的脚本语言;
32.第三生成单元,调用每个所述脚本语言,以生成所述当前版本包。
33.在上述第二方面的一种可能的实现中,所述脚本语言是shell脚本语言。
34.在上述第二方面的一种可能的实现中,每个所述变更表名称具有对应的变更时间,
35.其中,所述获取单元基于输入的变更时间,获取与输入的变更时间对应的至少一个变更表名称和对应的变更内容。
36.在上述第二方面的一种可能的实现中,所述装置进一步包括:
37.检查单元,基于生成的所述当前版本包中的至少一个文件夹,对所述当前版本包进行检查。
38.第三方面,本技术实施例提供了一种计算机可读存储介质,所述存储介质上存储有指令,所述指令在计算机上执行时使所述计算机执行上述第一方面中的用于生成数据库的版本包的方法。
39.第四方面,本技术实施例提供了一种电子设备,包括:一个或多个处理器;一个或
多个存储器;所述一个或多个存储器存储有一个或多个程序,当所述一个或者多个程序被所述一个或多个处理器执行时,使得所述电子设备执行上述第一方面中的用于生成数据库的版本包的方法。
40.第五方面,本技术实施例提供了一种计算机程序产品,包括计算机可执行指令,其特征在于,所述指令被处理器执行以实施述第一方面中的用于生成数据库的版本包的方法。
41.本发明中,无需人工即可实现版本包的制作,大幅度地降低了人工制作版本包的时间,减少了人工操作的不确定性,增强了准确性。进一步,通过对制作出的当前版本包进行检查,以判断当前版本包是否正确,从而进一步增强了准确性。
附图说明
42.图1根据本技术的实施例,示出了用于生成数据库的版本包的方法的第一流程示意图;
43.图2根据本技术的实施例,示出了用于生成数据库的版本包的方法的第二流程示意图;
44.图3根据本技术的实施例,示出了用于生成数据库的版本包的方法的第三流程示意图;
45.图4根据本技术的实施例,示出了用于生成数据库的版本包的装置的第一结构图;
46.图5根据本技术的实施例,示出了用于生成数据库的版本包的装置的第二结构图;
47.图6根据本技术的实施例,示出了用于生成数据库的版本包的装置的第三结构图;
48.图7根据本技术的实施例,示出了一种电子设备的框图。
具体实施方式
49.本技术的说明性实施例包括但不限于用于生成数据库的版本包的方法、装置、介质及电子设备。
50.本技术技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
51.下面将结合附图对本技术的实施例作进一步地详细描述。
52.如图1所示,为本技术实施例提供的数据处理方法的流程图,该方法用于电子设备。电子设备例如是计算机、服务器、移动终端等等。
53.在获取步骤s11,获取数据库中的至少一个变更表名称和对应的变更内容,并获取与至少一个变更表名称相关联的表配置文件、表结构定义文件以及主键和索引文件。
54.在数据库中的一些表进行修改(上线)的时候,会将这些表的表名称、变更内容以及对应的变更时间输入到例如上线评审表中,对变更内容进行评审,在评审通过后会保留在上线评审表中。可以理解的是,评审未通过的变更内容以及对应的表名称和变更时间不会保留在上线评审表中。
55.基于输入的变更时间,获取与输入的变更时间对应的至少一个变更表名称和对应的变更内容。
56.例如,输入的变更时间是两个变更时间(即,两个基线,date1和date2),从上线评
审表中获取与两个基线分别对应的变更表名称和变更内容,如下表1所示。
57.表1
58.变更表名称变更内容基线a增加字段date1b删除数据date2
59.表1中与每个基线对应的变更表名称和变更内容仅仅用于示例,可以理解的是,与每个基线对应的变更表名称和变更内容可以是任意的。
60.接着,获取与表a和表b各自相关联的表配置文件(以下称为da文件)、表结构定义文件(以下成为ds文件)以及主键和索引文件(以下成为db文件)。
61.da文件是分布式表dd(数据定义)配置文件,定义了每张表的分片方式,分片字段,分区方式,分区字段,分区数,归属库名等详细信息,用于代码生成ddl(data definition language,数据定义语言)使用。
62.db文件是主键与索引文件,包含了每张表的主键与索引。
63.ds文件是表结构定义文件,包括每张表的字段,字段属性,comment等。
64.在ddl生成步骤s12,根据上述表1中的变更内容,基于表配置文件、表结构定义文件以及主键和索引文件,生成用于当前版本包的多个当前ddl(数据定义语言)。
65.具体的,如图2所示,ddl生成步骤s12进一步包括修改步骤s121和第一生成步骤s122。
66.在修改步骤s121,根据上述表1中的变更内容,对表a的db文件进行修改,并将修改后的db文件更新到表a的da文件。同样,对表b的db文件进行修改,并将修改后的db文件更新到表b的da文件。
67.在第一生成步骤s122,基于上述更新后的da文件以及ds文件,按照预定分片分区规则,生成多个当前ddl。
68.可以理解的是,db文件中的索引是ddl很重要的一部分,由于db文件被更新到da文件中,而在生成ddl的时候会调用读取更新后的da文件,所以通过更新后的da文件,可以生成相应的索引。
69.另外,在生成ddl的时候,会读取ds文件,用于生成整个表中所有字段的定义。
70.预定分片分区规则是预先设定的分片规则和分区规则,其中,分片是指数据根据一定规则被拆分成子集,并分别部署到不同的节点上;分区是一种物理数据库设计技术,在分片里将数据根据一定规则进行进一步拆分。
71.例如,预定分片规则例如是范围分片,即,按照不同的省份进行分片。对于一个省内的数据进行分区,预定分区规则例如是按照分区号。
72.可以理解的是,上述预定分片规则和预定分区规则仅仅用于示例,其他的规则同样适用于本发明。
73.在识别步骤s13,将多个当前ddl与用于先前版本包的多个先前ddl进行比较,以识别出与表1中的变更内容对应的至少一个变更ddl。
74.多个当前ddl例如是10个当前ddl,先前版本包的多个先前ddl例如是10个先前ddl,将10个当前ddl和10个先前ddl进行比较,从而识别出与表1中的变更内容对应的两个变更ddl,例如ddl1(对应于“增加字段”),ddl2(对应于“删除数据”)。
75.可以理解的是,ddl1和ddl2是10个当前ddl中的两个ddl,并且与10个先前ddl中的先前两个ddl不同。也就是说,将10个当前ddl中与10个先前ddl不同的ddl作为变更ddl。
76.在版本包生成步骤s14,调用与每个变更ddl对应的脚本语言,以生成当前版本包。
77.具体的,如图2所示,版本包生成步骤s14进一步包括第二生成步骤s141和第三生成步骤s142。
78.在第二生成步骤s141,生成与每个变更ddl对应的脚本语言。脚本语言是shell脚本语言。
79.具体的,使用例如java工具,生成与ddl1对应的shell脚本1、以及与ddl2对应的shell脚本2。
80.在第三生成步骤s142,调用shell脚本1和shell脚本2,从而生成当前版本包。
81.由于shell脚本已经做好了一系列的封装,所以只需将其按照固定的版本框架,进行调用,即可制作出当前版本包。
82.图3示出了根据本发明的用于生成数据库的版本包的方法的第三流程图。如图3所示,在版本包生成步骤s14之后,进一步包括检查步骤s15,基于生成的当前版本包中的至少一个文件夹,对当前版本包进行检查。
83.制作出的当前版本包中包括alter文件夹(假设有alter表结构的情况才会存在该文件夹)、ddl文件夹、log文件夹(记录所有脚本执行的日志)、script文件夹(包含所有要执行的脚本),loaddata文件夹(假设存在删表重建需要保留数据的情况需要对表中数据执行上下档操作)。
84.其中,script文件夹中包含:
85.1.总控脚本,负责调起所有其他的所有脚本
86.2.备份标准目录脚本、更新标准目录脚本、更新版本目录脚本
87.3.数据库版本脚本(执行变表、新增表等实际数据库执行脚本)
88.4.日志检核脚本
89.5.shlist清单,包含了所有脚本的编号,如果脚本执行成功,则从shlist清单中删除,而执行失败的脚本依旧保留在shlist清单中。该shlist清单为了假设在版本执行过程中遇到报错,在解决问题后能支持直接重提00脚本。
90.判断alter文件夹(假设有alter表结构的情况才需要检核该文件夹情况)和ddl文件夹是否为空,如果不为空,则表示当前版本包正确,否则表示当前版本包不正确。
91.检查shlist清单里的脚本编号,判断是否包含所有脚本,如果包含,则表示当前版本包正确,否则表示当前版本包不正确。
92.本发明中,无需人工即可实现版本包的制作,大幅度地降低了人工制作版本包的时间,减少了人工操作的不确定性,增强了准确性。进一步,通过对制作出的当前版本包进行检查,以判断当前版本包是否正确,从而进一步增强了准确性。
93.本发明还提供用于生成数据库的版本包的装置40,如图4所示,装置40包括:获取单元41,获取所述数据库中的至少一个变更表名称和对应的变更内容,并获取与至少一个所述变更表名称相关联的表配置文件、表结构定义文件以及主键和索引文件;ddl生成单元42,根据所述变更内容,基于所述表配置文件、表结构定义文件以及主键和索引文件,生成用于当前版本包的多个当前ddl;识别单元43,将所述多个当前ddl与用于先前版本包的多
个先前ddl进行比较,以识别出与所述变更内容对应的至少一个变更ddl;版本包生成单元44,调用与每个所述变更ddl对应的脚本语言,以生成所述当前版本包。
94.可以理解的是,获取单元41、ddl生成单元42、识别单元43、版本包生成单元44可以通过图7中的电子设备100中具有这些模块或单元功能的处理器102来实现。
95.如图5所示,ddl生成单元42进一步包括修改单元421,根据所述变更内容,对所述主键和索引文件进行修改,并将修改后的所述主键和索引文件更新到所述表配置文件;第一生成单元422,基于更新后的所述表配置文件以及所述表结构定义文件,按照预定分片分区规则,生成所述多个当前ddl。版本包生成单元44进一步包括第二生成单元441,生成与每个所述变更ddl对应的脚本语言;第三生成单元442,调用每个所述脚本语言,以生成所述当前版本包。
96.可以理解的是,修改单元421、第一生成单元422、第二生成单元441、第三生成单元442可以通过图7中的电子设备100中具有这些模块或单元功能的处理器102来实现。
97.如图6所示,装置40进一步包括检查单元45,基于生成的所述当前版本包中的至少一个文件夹,对所述当前版本包进行检查。可以理解的是,检查单元45可以通过图7中的电子设备100中具有这些模块或单元功能的处理器102来实现。
98.本发明还提供一种计算机可读存储介质,存储介质上存储有指令,该指令在计算机上执行时使计算机执行图1中所示的用于生成数据库的版本包的方法。
99.本发明还提供一种计算机程序产品,包括计算机可执行指令,指令被处理器102执行以实施本发明的数据处理方法。
100.现在参考图7,图7示意性地示出了根据本发明的实施例的示例电子设备1400。在一个实施例中,系统1400可以包括一个或多个处理器1404,与处理器1404中的至少一个连接的系统控制逻辑1408,与系统控制逻辑1408连接的系统内存1412,与系统控制逻辑1408连接的非易失性存储器(nvm)1416,以及与系统控制逻辑1408连接的网络接口1420。
101.在一些实施例中,处理器1404可以包括一个或多个单核或多核处理器。在一些实施例中,处理器1404可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在系统1400采用enb(evolved node b,增强型基站)101或ran(radio access network,无线接入网)控制器102的实施例中,处理器1404可以被配置为执行各种符合的实施例,例如,如图1所示的实施例。
102.在一些实施例中,系统控制逻辑1408可以包括任意合适的接口控制器,以向处理器1404中的至少一个和/或与系统控制逻辑1408通信的任意合适的设备或组件提供任意合适的接口。
103.在一些实施例中,系统控制逻辑1408可以包括一个或多个存储器控制器,以提供连接到系统内存1412的接口。系统内存1412可以用于加载以及存储数据和/或指令。在一些实施例中系统1400的内存1412可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(dram)。
104.nvm/存储器1416可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,nvm/存储器1416可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如hdd(hard disk drive,硬盘驱动器),cd(compact disc,光盘)驱动器,dvd(digital versatile disc,数字通用光盘)驱动
器中的至少一个。
105.nvm/存储器1416可以包括安装系统1400的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口1420通过网络访问nvm/存储器1416。
106.特别地,系统内存1412和nvm/存储器1416可以分别包括:指令1424的暂时副本和永久副本。指令1424可以包括:由处理器1404中的至少一个执行时导致电子设备1400实施如图2所示的方法的指令。在一些实施例中,指令1424、硬件、固件和/或其软件组件可另外地/替代地置于系统控制逻辑1408,网络接口1420和/或处理器1404中。
107.网络接口1420可以包括收发器,用于为系统1400提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(如前端模块,天线等)进行通信。在一些实施例中,网络接口1420可以集成于系统1400的其他组件。例如,网络接口1420可以集成于处理器1404的,系统内存1412,nvm/存储器1416,和具有指令的固件设备(未示出)中的至少一种,当处理器1404中的至少一个执行所述指令时,电子设备1400实现如图1所示的方法。
108.网络接口1420可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口1420可以是网络适配器,无线网络适配器,电话调制解调器和/或无线调制解调器。
109.在一个实施例中,处理器1404中的至少一个可以与用于系统控制逻辑1408的一个或多个控制器的逻辑封装在一起,以形成系统封装(sip)。在一个实施例中,处理器1404中的至少一个可以与用于系统控制逻辑1408的一个或多个控制器的逻辑集成在同一管芯上,以形成片上系统(soc)。
110.电子设备1400可以进一步包括:输入/输出(i/o)设备1432。i/o设备1432可以包括用户界面,使得用户能够与电子设备1400进行交互;外围组件接口的设计使得外围组件也能够与电子设备1400交互。在一些实施例中,电子设备1400还包括传感器,用于确定与电子设备1400相关的环境条件和位置信息的至少一种。
111.在一些实施例中,用户界面可包括但不限于显示器(例如,液晶显示器,触摸屏显示器等),扬声器,麦克风,一个或多个相机(例如,静止图像照相机和/或摄像机),手电筒(例如,发光二极管闪光灯)和键盘。
112.本技术公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本技术的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
113.可将程序代码应用于输入指令,以执行本技术描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本技术的目的,处理系统包括具有诸如例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器之类的处理器的任何系统。
114.程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本技术中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
115.在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所
公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(cd-rom)、磁光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
116.在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
117.需要说明的是,本技术各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本技术所提出的技术问题的关键。此外,为了突出本技术的创新部分,本技术上述各设备实施例并没有将与解决本技术所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
118.需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
119.虽然通过参照本技术的某些优选实施例,已经对本技术进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本技术的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1