CN112817931B - 一种增量版本文件的生成方法及装置 - Google Patents
一种增量版本文件的生成方法及装置 Download PDFInfo
- Publication number
- CN112817931B CN112817931B CN201911128674.9A CN201911128674A CN112817931B CN 112817931 B CN112817931 B CN 112817931B CN 201911128674 A CN201911128674 A CN 201911128674A CN 112817931 B CN112817931 B CN 112817931B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- data table
- attribute
- database
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000009434 installation Methods 0.000 claims description 29
- 238000012217 deletion Methods 0.000 claims description 10
- 230000037430 deletion Effects 0.000 claims description 10
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种增量版本文件的生成方法及装置,其中方法包括:从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。本申请有助于降低人工成本,提高增量升级的效率和准确度。
Description
技术领域
本申请涉及数据库技术领域,特别是涉及一种增量版本文件的生成方法及装置。
背景技术
数据库的数据升级分为全量升级和增量升级。其中,全量升级将全部数据进行升级,而增量升级仅对部分数据进行升级。增量升级较全量升级对系统的影响较小。
现有技术中,增量升级需要开发人员分析升级前和升级后的表结构、表数据、存储过程等,以确定增量版本文件,并采用增量版本文件对数据库进行增量升级。
可以看出,现有的增量升级消耗的人工成本较高、效率和准确度均较低。
发明内容
鉴于上述问题,提出了本申请以便提供解决上述问题或者至少部分地解决上述问题的一种增量版本文件的生成方法及装置。
依据本申请的第一方面,提供了一种增量版本文件的生成方法,包括:
从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;
将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;
将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。
可选地,所述增量版本文件包括:第一删除文件、第一增加文件,所述目标升级信息还包括:无延展性表,所述将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件,包括:
对于所述第二数据库中的每个第二数据表,从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表;
对于所述第一数据表中的每条第一数据,若所述第一数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第一数据的关键属性不存在于所述第二数据表中,则生成删除所述第一数据的第一删除文件;
对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第二数据的关键属性不存在于所述第一数据表中,则生成增加所述第二数据的第一增加文件。
可选地,所述增量版本文件还包括:第二删除文件、第二增加文件、第一升级文件、第二升级文件、第三升级文件,所述方法还包括:
对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则根据所述第一数据中不存在于所述第二数据中的属性,生成删除所述属性的第二删除文件,以及,根据所述第二数据中不存在于所述第一数据中的属性,生成增加所述属性的第二增加文件,以及,生成将所述第一数据中的第一目标属性升级为所述第二数据中的第二目标属性的第一升级文件,所述第一目标属性与所述第二目标属性对应相同的属性标识但对应不同的属性类型;
对于所述第二数据表中的每条第二数据,若所述第二数据表为所述无延展性表之外的第二类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第二升级文件,所述第二升级文件用于将所述第一数据升级为所述第二数据;
对于所述第二数据表中的每条第二数据,若所述第二数据表为所述第三类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第三升级文件,所述第三升级文件用于删除所述第一数据之后增加所述第二数据。
可选地,所述增量版本文件还包括:第四升级文件,所述从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表之后,所述方法还包括:
若所述第一数据表为第四类数据表或所述无延展性表,则生成第四升级文件,所述第四升级文件用于清空所述第一数据表中的数据之后,增加所述第二数据表中的数据。
可选地,所述目标升级信息还包括:增量输出路径,将所述第一数据库和第二数据库中的数据表分别进行对比,得到增量版本文件之后,所述方法还包括:
根据所述增量版本文件生成安装启动文件;
将所述增量版本文件和所述安装启动文件添加至所述增量输出路径中。
依据本申请的第二方面,提供了一种增量版本文件的生成装置,包括:
升级信息获取模块,用于从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;
全量版本安装模块,用于将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;
增量版本文件生成模块,用于将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。
可选地,所述增量版本文件包括:第一删除文件、第一增加文件,所述目标升级信息还包括:无延展性表,所述增量版本文件生成模块,包括:
第一数据表获取子模块,用于对于所述第二数据库中的每个第二数据表,从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表;
第一删除文件生成子模块,用于对于所述第一数据表中的每条第一数据,若所述第一数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第一数据的关键属性不存在于所述第二数据表中,则生成删除所述第一数据的第一删除文件;
第一增加文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第二数据的关键属性不存在于所述第一数据表中,则生成增加所述第二数据的第一增加文件。
可选地,所述增量版本文件还包括:第二删除文件、第二增加文件、第一升级文件、第二升级文件、第三升级文件,所述增量版本文件生成模块还包括:
第二脚本生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则根据所述第一数据中不存在于所述第二数据中的属性,生成删除所述属性的第二删除文件,以及,根据所述第二数据中不存在于所述第一数据中的属性,生成增加所述属性的第二增加文件,以及,生成将所述第一数据中的第一目标属性升级为所述第二数据中的第二目标属性的第一升级文件,所述第一目标属性与所述第二目标属性对应相同的属性标识但对应不同的属性类型;
第二升级文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为所述无延展性表之外的第二类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第二升级文件,所述第二升级文件用于将所述第一数据升级为所述第二数据;
第三升级文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为所述第三类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第三升级文件,所述第三升级文件用于删除所述第一数据之后增加所述第二数据。
可选地,所述增量版本文件还包括:第四升级文件,所述增量版本文件生成模块还包括:
第四升级文件生成子模块,用于若所述第一数据表为第四类数据表或所述无延展性表,则生成第四升级文件,所述第四升级文件用于清空所述第一数据表中的数据之后,增加所述第二数据表中的数据。
可选地,所述目标升级信息还包括:增量输出路径,所述装置还包括:
安装启动文件生成模块,用于根据所述增量版本文件生成安装启动文件;
输出模块,用于将所述增量版本文件和所述安装启动文件添加至所述增量输出路径中。
本申请实施例具有如下优点:
根据本申请实施例的一种增量版本文件的生成方法及装置,所述方法包括:从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。本申请的实施例可以将升级前和升级后的版本文件安装至第一数据库和第二数据库中,并通过机器分析得到增量版本文件,有助于降低人工成本,提高增量升级的效率和准确度。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本申请的一种增量版本文件的生成方法实施例一的步骤流程图;
图2示出了根据本申请的一种增量版本文件的生成装置实施例二的结构框图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
实施例一
参照图1,示出了根据本申请的一种增量版本文件的生成方法实施例一的步骤流程图,具体可以包括如下步骤:
步骤101,从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库。
本申请的实施例可以应用于对数据库的升级,其中,数据库可以包括但不限于:SQL(Structured Query Language,结构化查询语言)数据库、ORACLE数据库。在实际应用中,可以设置一个计算机,与第一数据库和第二数据库通信连接。该计算机负责本申请的实施例中步骤的执行。
步骤101中的版本升级配置表用于存储生成增量版本文件的升级信息,需要在升级前预先在该版本升级配置表中填写升级信息,表中每条升级信息对应一次升级,每次升级可以针对一个或多个数据表。当然可以一次性进行多个升级。
在本申请的实施例中,目标升级信息为其中一个升级信息,具体可以为升级状态为未升级标记的升级信息,或,指定的升级信息。参照表1,升级信息除包括升级状态之外,还可以包括但不限于:升级编号、原版本名称、原版本路径、目标版本名称、目标版本路径、升级名称、增量输出路径、无延展性表。
表1
其中,升级编号为关键属性,设置为数值型,用于唯一标识升级信息。在实际应用中,可以按照顺序编号。例如,在每次新增一条升级信息之前,可以在版本升级配置表中的最后一条升级信息的编号基础上加1,作为新增的升级编号。
原版本名称和目标版本名称用于区分升级前版本和升级后版本,可以均设置为64位字符型。
原版本路径为存储升级前的全量版本文件的路径,目标版本路径为存储升级后的全量版本文件的路径,可以均设置为256位字符型。
升级名称为对升级的说明,可以设置为64位字符型。具体可以将原版本名称和目标版本名称按照一定规则拼接得到。从而可以直接根据升级名称获取到升级是从哪个版本升级至哪个版本,方便区分不同的升级信息。
增量输出路径为存储增量版本文件的路径,预先在版本升级配置表设置,用户可以根据自身需求设置。增量输出路径可以设置为256位字符型。
无延展性表是无法进行增量升级的一个或多个表,多个无延展性表之间可以用预设符号分隔。无延展性表可以为对象类型,例如,在SQL数据库中可以为CLOB(CharacterLarge Object,字符大对象)。
升级状态可以为数值型。例如,用0代表未升级标记,即:未生成增量版本文件,用1代表升级标记,即:已生成增量版本文件。
第一数据库用于安装升级前的全量版本文件,第二数据库用于安装升级后的全量版本文件。第一数据库可以为数据库的访问路径,设置为256位字符型。当然,在实际应用中,第一数据库还可以用于安装升级后的全量版本文件,从而第二数据库用于安装升级前的全量版本文件,但后续逻辑均要调整。本申请的实施例对安装全量版本文件的数据库不加以限制。
步骤102,将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中。
其中,全量版本文件用于升级全量数据,包括但不限于:用于升级表结构的全量版本文件、用于升级数据表中数据的全量版本文件、用于升级索引的全量版本文件、用于升级定时任务的全量版本文件、用于升级约束的全量版本文件、用于升级存储过程的全量版本文件、用于升级触发器的全量版本文件。
具体地,可以执行原版本路径中的安装启动文件,以将原版本路径中的全量版本文件安装至第一数据库,以及,执行目标版本路径中的安装启动文件,以将目标版本路径中的全量版本文件安装至第二数据库。其中,安装启动文件可以为脚本的形式,例如,可以为install.sh文件。
步骤103,将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。
其中,数据表可以包括但不限于:用于存储业务数据的业务数据表,以及,用于存储控制数据的元数据表。例如,在日志数据库中,业务数据表可以为存储用户访问日志的数据表;而元数据表可以为存储业务数据表结构的数据表,或,存储触发器的数据表,或,存储定时任务的数据表,或,存储存储过程的数据表,或,存储索引的数据表,或,存储约束的数据表。
增量版本文件为用于增量升级数据表中的数据,从而可以根据第一数据库库中的数据表和第二数据库中的数据表之间的差异数据生成。具体地,对于存在于第一数据库中的数据表,但不存在于第二数据库中的数据表中的数据,则可以生成删除该数据的版本文件;对于存在于第二数据库中的数据表,但不存在于第一数据库中的数据表中的数据,则可以生成增加该数据的版本文件;对于存在于第一数据库中的数据表的一条数据,第二数据库中的数据表中存在对应的数据,但不相同,则可以生成修改该数据的版本文件。
可选地,在本申请的另一种实施例中,所述增量版本文件包括:第一删除文件、第一增加文件,所述目标升级信息还包括:无延展性表,所述步骤103包括子步骤A1至A3:
子步骤A1,对于所述第二数据库中的每个第二数据表,从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表。
可以理解,数据表在数据库中存在唯一的标识,从而同一标识可以认为对应同一张数据表。
在本申请的实施例中,第一数据表为第二数据表升级之前的表,第二数据表为第一数据表升级之后的表,两者为同一张数据表,只是存储的数据不同。
子步骤A2,对于所述第一数据表中的每条第一数据,若所述第一数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第一数据的关键属性不存在于所述第二数据表中,则生成删除所述第一数据的第一删除文件。
其中,第一类数据表、第二类数据表、第三类数据表中的数据可以进行增量升级,例如,增加新的数据,或删除旧数据,或修改变更的数据。第一类数据表可以为存储业务数据表结构的数据表;第二类数据表为业务数据表,从而无延展性表之外的第二类数据表为具有延展性的业务数据表;第三类数据表为用于存储约束或索引的数据表。
关键属性是数据表中每条数据的唯一标识,在同一数据表中不会存在关键属性相同的两条数据。从而,对于可以进行增量升级的第一数据表,第一删除文件可以直接删除第一数据表中不存在于第二数据表中的数据。例如,若第一数据表中存在关键属性“员工编号”为“10”的第一数据,但第二数据表中不存在关键属性“员工编号”为“10”的第二数据,则可以生成用于删除该关键属性“员工编号”为“10”的第一数据的脚本,得到第一删除文件。
子步骤A3,对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第二数据的关键属性不存在于所述第一数据表中,则生成增加所述第二数据的第一增加文件。
可以理解,第一数据表和第二数据表为同一数据表,从而第一数据表为第一类数据表、第二类数据表、第三类数据表中的其中一种,也即第二数据表为第一类数据表、第二类数据表、第三类数据表中的其中一种;第二数据表为第一类数据表、第二类数据表、第三类数据表中的其中一种,也即第一数据表为第一类数据表、第二类数据表、第三类数据表中的其中一种。
对于可以进行增量升级的第一数据表,可以直接增加第二数据表中不存在于第一数据表中的数据。例如,若第二数据表中存在关键属性“员工编号”为“10”的第二数据,但第一数据表中不存在关键属性“员工编号”为“10”的第一数据,则可以生成用于增加该关键属性“员工编号”为“10”的第二数据的脚本,得到第一增加文件。
本申请的实施例可以对支持增量升级的数据表进行删除和增加数据。
可选地,在本申请的另一种实施例中,所述增量版本文件还包括:第二删除文件、第二增加文件、第一升级文件、第二升级文件、第三升级文件,所述方法还包括子步骤B1至B3:
子步骤B1,对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则根据所述第一数据中不存在于所述第二数据中的属性,生成删除所述属性的第二删除文件,以及,根据所述第二数据中不存在于所述第一数据中的属性,生成增加所述属性的第二增加文件,以及,生成将所述第一数据中的第一目标属性升级为所述第二数据中的第二目标属性的第一升级文件,所述第一目标属性与所述第二目标属性对应相同的属性标识但对应不同的属性类型。
其中,非关键属性为数据表中所述关键属性之外的属性,同一数据表中可以存在同一非关键属性相同的两条数据。
可以理解,若关键属性相同,则代表第一数据和第二数据对应同一条数据,但其中一个非关键属性不同,则代表第一数据和第二数据不相同,此时需要生成将第一数据升级为第二数据的文件。若关键属性相同,则代表第一数据和第二数据对应同一条数据,且其中所有非关键属性均相同,则代表第一数据和第二数据相同,此时不需要生成将第一数据升级为第二数据的文件。
在本申请的实施例中,确定非关键属性是否为同一属性可以通过属性标识判断,同一条数据中不会存在属性标识相同的两个属性。从而,对于第一数据中的一个属性,若其在第二数据中不存在属性标识相同的对应属性,则需要生成删除该属性的脚本,得到第二删除文件。例如,对于存储业务数据表结构的数据表,若第一数据中存在属性标识“员工绩效”的属性,第二数据中不存在属性标识为“员工绩效”的属性,则需要生成删除属性“员工绩效”的脚本。
对于第二数据中的一个属性,若其在第一数据中不存在属性标识相同的对应属性,则需要生成增加该属性的脚本得到第二增加文件。例如,对于存储业务数据表结构的数据表,若第二数据中存在属性标识“员工绩效”的属性,第一数据中不存在属性标识为“员工绩效”的属性,则需要生成增加属性“员工绩效”的脚本。
对于第一数据中的一个属性,若其在第二数据中存在属性标识相同的对应属性,但其属性类型不同,则需要生成更新该属性的脚本得到第一更新文件。例如,对于存储业务数据表结构的数据表,若第一数据中存在属性标识为“员工绩效”的属性,其属性类型为字符型;而第二数据中同样存在属性标识为“员工绩效”的属性,但其属性标识为数值型,则需要生成将属性“员工绩效”从字符型修改为“数值型”的脚本,得到第一升级文件。
子步骤B2,对于所述第二数据表中的每条第二数据,若所述第二数据表为所述无延展性表之外的第二类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第二升级文件,所述第二升级文件用于将所述第一数据升级为所述第二数据。
其中,第二类数据表的每条数据可以直接修改内容,从而可以直接通过更新脚本将第一数据更新为第二数据。可以理解,具有延展性的存储业务数据的业务数据表可以灵活的修改每条数据中的每个属性,而不需要删除该条数据之后再重新写入数据。
子步骤B3,对于所述第二数据表中的每条第二数据,若所述第二数据表为所述第三类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第三升级文件,所述第三升级文件用于删除所述第一数据之后增加所述第二数据。
其中,第三类数据表中的每条数据中的属性无法直接修改,从而只能先将第一数据删除之后再重新增加第二数据。可以理解,用于存储约束、索引的数据表需要首先删除数据才能重新写入关键属性相同的新数据。
本申请的实施例可以根据属性是否可以直接修改灵活的生成增量升级文件。
可选地,在本申请的另一种实施例中,所述增量版本文件还包括:第四升级文件,所述子步骤A1之后,所述方法还包括:
子步骤C,若所述第一数据表为第四类数据表或所述无延展性表,则生成第四升级文件,所述第四升级文件用于清空所述第一数据表中的数据之后,增加所述第二数据表中的数据。
其中,第四类数据表中的数据无法增量升级,只能先清空之后再重新写入新的数据。例如,用于存储触发器的数据表、存储定时任务的数据表、存储存储过程的数据表。
本申请的实施例可以对预先指定的无延展性表和第四类数据表进行清空后增量升级。
可选地,在本申请的另一种实施例中,所述目标升级信息还包括:增量输出路径,所述步骤103之后,所述方法还包括步骤D1至D2:
步骤D1,根据所述增量版本文件生成安装启动文件。
其中,安装启动文件用于将增量版本文件安装至目标数据库,其中,目标数据库为升级数据库。安装启动文件与原版本路径、目标版本路径中的安装启动文件相同,仅安装的文件不同,具体可以参照步骤102中对安装启动文件的说明,在此不再赘述。
步骤D2,将所述增量版本文件和所述安装启动文件添加至所述增量输出路径中。
可以理解,在将增量版本文件和安装启动文件添加至增量输出路径中之后,可以在该增量输出路径中查看增量版本文件和安装启动文件,或直接将增量版本文件和安装启动文件从该路径中拷贝至目标数据库,并执行该安装启动文件,以将增量版本文件安装至目标数据库。
本申请的实施例可以将生成的增量版本文件和安装启动文件统一输出至指定的增量输出路径中,不仅保证了增量版本文件的输出可指定性,还可以实现自动化的增量升级。
本申请的实施例提供了一种增量版本文件的生成方法,包括:从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。本申请的实施例可以将升级前和升级后的版本文件安装至第一数据库和第二数据库中,并通过机器分析得到增量版本文件,有助于降低人工成本,提高增量升级的效率和准确度。
实施例二
参照图2,示出了根据本申请的一种增量版本文件的生成装置实施例二的结构框图,具体可以包括如下模块:
升级信息获取模块201,用于从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库。
全量版本安装模块202,用于将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中。
增量版本文件生成模块203,用于将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。
可选地,在本申请的另一种实施例中,所述增量版本文件包括:第一删除文件、第一增加文件,所述目标升级信息还包括:无延展性表,所述增量版本文件生成模块203包括第一数据表获取子模块、第一删除文件生成子模块、第一增加文件生成子模块:
第一数据表获取子模块,用于对于所述第二数据库中的每个第二数据表,从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表;
第一删除文件生成子模块,用于对于所述第一数据表中的每条第一数据,若所述第一数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第一数据的关键属性不存在于所述第二数据表中,则生成删除所述第一数据的第一删除文件;
第一增加文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第二数据的关键属性不存在于所述第一数据表中,则生成增加所述第二数据的第一增加文件。
可选地,在本申请的另一种实施例中,所述增量版本文件还包括:第二删除文件、第二增加文件、第一升级文件、第二升级文件、第三升级文件,所述增量版本文件生成模块203还包括第二脚本生成子模块、第二升级文件生成子模块、第三升级文件生成子模块:
第二脚本生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则根据所述第一数据中不存在于所述第二数据中的属性,生成删除所述属性的第二删除文件,以及,根据所述第二数据中不存在于所述第一数据中的属性,生成增加所述属性的第二增加文件,以及,生成将所述第一数据中的第一目标属性升级为所述第二数据中的第二目标属性的第一升级文件,所述第一目标属性与所述第二目标属性对应相同的属性标识但对应不同的属性类型;
第二升级文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为所述无延展性表之外的第二类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第二升级文件,所述第二升级文件用于将所述第一数据升级为所述第二数据;
第三升级文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为所述第三类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第三升级文件,所述第三升级文件用于删除所述第一数据之后增加所述第二数据。
可选地,在本申请的另一种实施例中,所述增量版本文件还包括:第四升级文件,所述增量版本文件生成模块203还包括第四升级文件生成子模块:
第四升级文件生成子模块,用于若所述第一数据表为第四类数据表或所述无延展性表,则生成第四升级文件,所述第四升级文件用于清空所述第一数据表中的数据之后,增加所述第二数据表中的数据。
可选地,在本申请的另一种实施例中,所述目标升级信息还包括:增量输出路径,所述装置还包括安装启动文件生成模块、输出模块:
安装启动文件生成模块,用于根据所述增量版本文件生成安装启动文件。
输出模块,用于将所述增量版本文件和所述安装启动文件添加至所述增量输出路径中。
本申请的实施例提供了一种增量版本文件的生成装置,包括:升级信息获取模块,用于从预设的版本升级配置表中获取目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;全量版本安装模块,用于将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;增量版本文件生成模块,用于将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件。本申请的实施例可以将升级前和升级后的版本文件安装至第一数据库和第二数据库中,并通过机器分析得到增量版本文件,有助于降低人工成本,提高增量升级的效率和准确度。
对于基站实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以基于此示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本申请也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请的内容,并且上面对特定语言所做的描述是为了披露本申请的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本申请并帮助理解各个发明方面中的一个或多个,在上面对本申请的示例性实施例的描述中,本申请的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本申请的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例的增量版本文件的生成设备中的一些或者全部部件的一些或者全部功能。本申请还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者基站程序(例如,计算机程序和计算机程序产品)。这样的实现本申请的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本申请进行说明而不是对本申请进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干基站的单元权利要求中,这些基站中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (8)
1.一种增量版本文件的生成方法,其特征在于,包括:
从预设的版本升级配置表中获取用于生成增量版本文件的目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;
将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;
将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件;
其中,所述目标升级信息还包括:增量输出路径,将所述第一数据库和第二数据库中的数据表分别进行对比,得到增量版本文件之后,所述方法还包括:
根据所述增量版本文件生成安装启动文件;
将所述增量版本文件和所述安装启动文件添加至所述增量输出路径中。
2.根据权利要求1所述的方法,其特征在于,所述增量版本文件包括:第一删除文件、第一增加文件,所述目标升级信息还包括:无延展性表,所述将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件,包括:
对于所述第二数据库中的每个第二数据表,从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表;
对于所述第一数据表中的每条第一数据,若所述第一数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第一数据的关键属性不存在于所述第二数据表中,则生成删除所述第一数据的第一删除文件;
对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第二数据的关键属性不存在于所述第一数据表中,则生成增加所述第二数据的第一增加文件。
3.根据权利要求2所述的方法,其特征在于,所述增量版本文件还包括:第二删除文件、第二增加文件、第一升级文件、第二升级文件、第三升级文件,所述方法还包括:
对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则根据所述第一数据中不存在于所述第二数据中的属性,生成删除所述属性的第二删除文件,以及,根据所述第二数据中不存在于所述第一数据中的属性,生成增加所述属性的第二增加文件,以及,生成将所述第一数据中的第一目标属性升级为所述第二数据中的第二目标属性的第一升级文件,所述第一目标属性与所述第二目标属性对应相同的属性标识但对应不同的属性类型;
对于所述第二数据表中的每条第二数据,若所述第二数据表为所述无延展性表之外的第二类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第二升级文件,所述第二升级文件用于将所述第一数据升级为所述第二数据;
对于所述第二数据表中的每条第二数据,若所述第二数据表为所述第三类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第三升级文件,所述第三升级文件用于删除所述第一数据之后增加所述第二数据。
4.根据权利要求2所述的方法,其特征在于,所述增量版本文件还包括:第四升级文件,所述从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表之后,所述方法还包括:
若所述第一数据表为第四类数据表或所述无延展性表,则生成第四升级文件,所述第四升级文件用于清空所述第一数据表中的数据之后,增加所述第二数据表中的数据。
5.一种增量版本文件的生成装置,其特征在于,包括:
升级信息获取模块,用于从预设的版本升级配置表中获取用于生成增量版本文件的目标升级信息,所述目标升级信息至少包括:原版本路径、目标版本路径、第一数据库、第二数据库;
全量版本安装模块,用于将所述原版本路径中的全量版本文件安装至所述第一数据库中,以及,将所述目标版本路径中的全量版本文件安装至所述第二数据库中;
增量版本文件生成模块,用于将所述第一数据库中的数据表和第二数据库中的数据表分别进行对比,得到增量版本文件;
其中,所述目标升级信息还包括:增量输出路径,所述装置还包括:
安装启动文件生成模块,用于根据所述增量版本文件生成安装启动文件;
输出模块,用于将所述增量版本文件和所述安装启动文件添加至所述增量输出路径中。
6.根据权利要求5所述的装置,其特征在于,所述增量版本文件包括:第一删除文件、第一增加文件,所述目标升级信息还包括:无延展性表,所述增量版本文件生成模块,包括:
第一数据表获取子模块,用于对于所述第二数据库中的每个第二数据表,从所述第一数据库中获取与所述第二数据表具有相同标识的第一数据表;
第一删除文件生成子模块,用于对于所述第一数据表中的每条第一数据,若所述第一数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第一数据的关键属性不存在于所述第二数据表中,则生成删除所述第一数据的第一删除文件;
第一增加文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表、所述无延展性表之外的第二类数据表、第三类数据表中的其中一种,且所述第二数据的关键属性不存在于所述第一数据表中,则生成增加所述第二数据的第一增加文件。
7.根据权利要求6所述的装置,其特征在于,所述增量版本文件还包括:第二删除文件、第二增加文件、第一升级文件、第二升级文件、第三升级文件,所述增量版本文件生成模块还包括:
第二脚本生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为第一类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则根据所述第一数据中不存在于所述第二数据中的属性,生成删除所述属性的第二删除文件,以及,根据所述第二数据中不存在于所述第一数据中的属性,生成增加所述属性的第二增加文件,以及,生成将所述第一数据中的第一目标属性升级为所述第二数据中的第二目标属性的第一升级文件,所述第一目标属性与所述第二目标属性对应相同的属性标识但对应不同的属性类型;
第二升级文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为所述无延展性表之外的第二类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第二升级文件,所述第二升级文件用于将所述第一数据升级为所述第二数据;
第三升级文件生成子模块,用于对于所述第二数据表中的每条第二数据,若所述第二数据表为所述第三类数据表,且所述第二数据的关键属性与所述第一数据的关键属性相同,且所述第一数据的非关键属性和所述第二数据的非关键属性不同,则生成第三升级文件,所述第三升级文件用于删除所述第一数据之后增加所述第二数据。
8.根据权利要求6所述的装置,其特征在于,所述增量版本文件还包括:第四升级文件,所述增量版本文件生成模块还包括:
第四升级文件生成子模块,用于若所述第一数据表为第四类数据表或所述无延展性表,则生成第四升级文件,所述第四升级文件用于清空所述第一数据表中的数据之后,增加所述第二数据表中的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911128674.9A CN112817931B (zh) | 2019-11-18 | 2019-11-18 | 一种增量版本文件的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911128674.9A CN112817931B (zh) | 2019-11-18 | 2019-11-18 | 一种增量版本文件的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112817931A CN112817931A (zh) | 2021-05-18 |
CN112817931B true CN112817931B (zh) | 2024-03-29 |
Family
ID=75852710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911128674.9A Active CN112817931B (zh) | 2019-11-18 | 2019-11-18 | 一种增量版本文件的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112817931B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792026B (zh) * | 2021-08-11 | 2023-08-11 | 深圳力维智联技术有限公司 | 数据库脚本的部署方法、装置及计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1881420A1 (en) * | 2006-07-17 | 2008-01-23 | Nextair Corporation | Mark Up Language Based Database Upgrades |
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
CN101499069A (zh) * | 2008-02-02 | 2009-08-05 | 中兴通讯股份有限公司 | 内存数据库文件的更新方法及更新装置 |
CN103294724A (zh) * | 2012-03-05 | 2013-09-11 | 百度在线网络技术(北京)有限公司 | 一种数据库结构的管理方法及系统 |
CN103902562A (zh) * | 2012-12-26 | 2014-07-02 | 腾讯科技(深圳)有限公司 | 一种终端数据库升级方法及相关装置 |
CN104102511A (zh) * | 2014-07-17 | 2014-10-15 | 福建星海通信科技有限公司 | 一种基于SQL Server的脚本自动升级系统及方法 |
CN104991791A (zh) * | 2015-06-09 | 2015-10-21 | 北京奇虎科技有限公司 | 一种文件的增量升级发布方法和装置 |
CN110069273A (zh) * | 2019-04-30 | 2019-07-30 | 四川长虹教育科技有限公司 | 软件升级包的批量打包方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808284B (zh) * | 2014-12-31 | 2019-10-22 | 广州市动景计算机科技有限公司 | 一种增量升级方法及应用其的服务器 |
-
2019
- 2019-11-18 CN CN201911128674.9A patent/CN112817931B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1881420A1 (en) * | 2006-07-17 | 2008-01-23 | Nextair Corporation | Mark Up Language Based Database Upgrades |
CN101183361A (zh) * | 2006-11-13 | 2008-05-21 | 中兴通讯股份有限公司 | 一种关系数据库应用自动升级的方法 |
CN101499069A (zh) * | 2008-02-02 | 2009-08-05 | 中兴通讯股份有限公司 | 内存数据库文件的更新方法及更新装置 |
CN103294724A (zh) * | 2012-03-05 | 2013-09-11 | 百度在线网络技术(北京)有限公司 | 一种数据库结构的管理方法及系统 |
CN103902562A (zh) * | 2012-12-26 | 2014-07-02 | 腾讯科技(深圳)有限公司 | 一种终端数据库升级方法及相关装置 |
CN104102511A (zh) * | 2014-07-17 | 2014-10-15 | 福建星海通信科技有限公司 | 一种基于SQL Server的脚本自动升级系统及方法 |
CN104991791A (zh) * | 2015-06-09 | 2015-10-21 | 北京奇虎科技有限公司 | 一种文件的增量升级发布方法和装置 |
CN110069273A (zh) * | 2019-04-30 | 2019-07-30 | 四川长虹教育科技有限公司 | 软件升级包的批量打包方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112817931A (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755466B1 (en) | Systems and methods for testing a software application | |
CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
US8065323B2 (en) | Offline validation of data in a database system for foreign key constraints | |
US7401085B2 (en) | System and method for controlling the release of updates to a database configuration | |
US8484638B2 (en) | Infrastructure for the automation of the assembly of schema maintenance scripts | |
CN103810257B (zh) | 一种升级软件数据库的方法、装置及设备 | |
US7593960B2 (en) | System and method for least work publishing | |
US20070245332A1 (en) | Method and apparatus to perform an application software migration | |
US20090222691A1 (en) | Data Migration Manager | |
CN110377649B (zh) | 标签化数据的构建、查询方法、装置、设备及存储介质 | |
US8667010B2 (en) | Database table partitioning allowing overlaps used in full text query | |
US11487742B2 (en) | Consistency checks between database systems | |
CN107368513B (zh) | 客户端数据库更新的方法及装置 | |
CN102110102A (zh) | 数据处理方法及装置、文件识别方法及工具 | |
CN111984659B (zh) | 数据更新方法、装置、计算机设备和存储介质 | |
US10592400B2 (en) | System and method for creating variants in a test database during various test stages | |
CN105550342B (zh) | 一种全透明的分布式数据库的数据处理方法 | |
JP2006178848A (ja) | データベース・システム、データベース・システムのためのコンピュータ実行可能な方法、プログラムおよびデータベース・システムにおける索引テーブルをアップデートする方法 | |
CN112948473A (zh) | 数据仓库的数据处理方法、装置、系统及存储介质 | |
US8131884B1 (en) | Reusing system configuration information and metadata for related operations | |
CN112817931B (zh) | 一种增量版本文件的生成方法及装置 | |
CN108694172B (zh) | 信息输出方法和装置 | |
US20070088684A1 (en) | Partial updating in a database proxy driver | |
US20050114404A1 (en) | Database table version upload | |
CN113792026A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |