CN113792026A - 数据库脚本的部署方法、装置及计算机可读存储介质 - Google Patents
数据库脚本的部署方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113792026A CN113792026A CN202110921895.2A CN202110921895A CN113792026A CN 113792026 A CN113792026 A CN 113792026A CN 202110921895 A CN202110921895 A CN 202110921895A CN 113792026 A CN113792026 A CN 113792026A
- Authority
- CN
- China
- Prior art keywords
- script
- version number
- incremental
- database
- deployment
- 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
Links
Images
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/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库脚本的部署方法、装置及计算机可读存储介质,方法包括:获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号;根据第一脚本版本号以及第二脚本版本号确定发布包相对于发布对象的增量脚本;在发布对象中部署增量脚本。本发明可提高数据库脚本的部署效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据库脚本的部署方法、装置及计算机可读存储介质。
背景技术
对于数据库脚本的管理,现有的管理方式,所有的脚本按照类型、对象名进行分级存储,同一对象的脚本自成一个文件。随着***版本更新,数据库对象的内容进行变更,存储对象内容的脚本文件始终反映的是对象的最新形态。当数据库脚本增量部署的时候,需要遍历发布对象数据库当前全部内容和待部署脚本发布包的全量脚本内容,实现发布对象数据库与待部署脚本发布包内容的差异性比较,从而“发现差异”并依据差异变更数据库,但在实际应用过程中,需要对数据库进行持续性访问,使得数据库脚本的部署效率低。
发明内容
本发明实施例通过提供一种数据库脚本的部署方法、装置及计算机可读存储介质,旨在解决如何提高数据库脚本的部署效率的技术问题。
本发明实施例提供一种数据库脚本的部署方法,所述数据库脚本的部署方法包括以下步骤:
获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号;
根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本;
在所述发布对象中部署所述增量脚本。
在一实施例中,所述根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本的步骤包括:
将所述第一版本号与所述第二脚本版本号进行版本号匹配,获取未匹配成功的第三版本号;
在所述发布包中将所述第三版本号对应的子发布包作为相对于所述发布对象的增量脚本。
在一实施例中,所述在所述发布对象部署所述增量脚本的步骤包括:
获取所述增量脚本对应的增量脚本信息,所述增量脚本信息包括所述增量脚本的版本号信息、脚本编号以及对象类型;
根据所述增量脚本信息确定所述增量脚本的部署顺序;
根据所述部署顺序在所述发布对象部署所述增量脚本。
在一实施例中,所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤包括:
确定所述增量脚本的版本号信息的部署优先级;
根据所述部署优先级确定所述增量脚本的部署顺序。
在一实施例中,所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤包括:
根据所述对象类型对应的对象优选级确定所述增量脚本的部署顺序。
在一实施例中,所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤包括:
根据所述脚本编号的数值大小确定所述增量脚本的部署顺序。
在一实施例中,所述根据所述部署顺序在所述发布对象部署所述增量脚本的步骤包括:
根据所述部署顺序在所述发布对象依次部署所述增量脚本;
每完成一个所述增量脚本中的子发布包的部署时,在所述增量脚本信息中删除所述子发布包对应的版本号信息、脚本编号以及对象类型;
返回执行所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤;
在所述增量脚本部署完成时,根据所述增量脚本的版本号信息更新所述发布对象对应的已部署脚本版本号。
在一实施例中,所述获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号的步骤之前,所述方法还包括:
确定所述发布对象是否存在所述第二脚本版本号;
在所述发布对象不存在所述第二脚本版本号时,在所述发布对象部署所述发布包;
在所述发布对象存在所述第二脚本版本号时,执行所述获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号的步骤。
本发明实施例还提供一种数据库脚本的部署装置,所述数据库脚本的部署装置包括:存储器、处理器及存储在所述存储器上并可在处理器上运行的数据库脚本的部署的处理程序,所述处理器执行所述数据库脚本的部署的处理程序时实现如上所述的数据库脚本的部署方法的各个步骤。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据库脚本的部署的处理程序,所述数据库脚本的部署的处理程序被处理器执行时实现如上所述的数据库脚本的部署方法的各个步骤。
在本实施例的技术方案中,数据库脚本的部署装置获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号;根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本;在所述发布对象中部署所述增量脚本。由于数据库脚本的部署装置可根据第一脚本版本号以及第二脚本版本号确定针对发布对象的增量脚本,因此,当发布对象以及部署了发布包中的部分脚本时,不需要再根据发布包对发布对象进行全量部署,由于第二脚本版本号是预先记录在数据库脚本的部署装置中的,因此不需要遍历发布对象数据库当前全部内容和待部署脚本发布包的全量脚本内容,可提高数据库脚本的部署效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例涉及的数据库脚本的部署装置的硬件构架示意图;
图2为本发明数据库脚本的部署方法第一实施例的流程示意图;
图2A为本发明数据库脚本的部署方法第一实施例的参考图;
图2B为本发明数据库脚本的部署方法第一实施例的参考图;
图2C为本发明数据库脚本的部署方法第一实施例的参考图;
图2D为本发明数据库脚本的部署方法第一实施例的参考图;
图2E为本发明数据库脚本的部署方法第一实施例的参考图;
图2F为本发明数据库脚本的部署方法第一实施例的参考图;
图2G为本发明数据库脚本的部署方法第一实施例的参考图;
图3为本发明数据库脚本的部署方法第二实施例的流程示意图;
图4为本发明数据库脚本的部署方法第三实施例的流程示意图;
图4A为本发明数据库脚本的部署方法第三实施例的参考图;
图4B为本发明数据库脚本的部署方法第三实施例的参考图;
图4C为本发明数据库脚本的部署方法第三实施例的参考图;
图5为本发明数据库脚本的部署方法第四实施例的流程示意图。
具体实施方式
为了更好的理解上述技术方案,下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的主要解决方案是:数据库脚本的部署装置获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号;根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本;在所述发布对象中部署所述增量脚本。
由于数据库脚本的部署装置可根据第一脚本版本号以及第二脚本版本号确定针对发布对象的增量脚本,因此,当发布对象以及部署了发布包中的部分脚本时,不需要再根据发布包对发布对象进行全量部署,由于第二脚本版本号是预先记录在数据库脚本的部署装置中的,因此不需要遍历发布对象数据库当前全部内容和待部署脚本发布包的全量脚本内容,可提高数据库脚本的部署效率。
作为一种实现方式,数据库脚本的部署装置可以如图1。
本发明实施例方案涉及的是数据库脚本的部署装置,数据库脚本的部署装置包括:处理器101,例如CPU,存储器102,通信总线103。其中,通信总线103用于实现这些组件之间的连接通信。
存储器102可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。如图1,作为一种计算机可读存储介质的存储器103中可以包括检测程序;而处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号;
根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本;
在所述发布对象中部署所述增量脚本。
在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
将所述第一版本号与所述第二脚本版本号进行版本号匹配,获取未匹配成功的第三版本号;
在所述发布包中将所述第三版本号对应的子发布包作为相对于所述发布对象的增量脚本。
在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
获取所述增量脚本对应的增量脚本信息,所述增量脚本信息包括所述增量脚本的版本号信息、脚本编号以及对象类型;
根据所述增量脚本信息确定所述增量脚本的部署顺序;
根据所述部署顺序在所述发布对象部署所述增量脚本。
在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
确定所述增量脚本的版本号信息的部署优先级;
根据所述部署优先级确定所述增量脚本的部署顺序。
在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
根据所述对象类型对应的对象优选级确定所述增量脚本的部署顺序。
在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
根据所述脚本编号的数值大小确定所述增量脚本的部署顺序。
在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
根据所述部署顺序在所述发布对象依次部署所述增量脚本;
每完成一个所述增量脚本中的子发布包的部署时,在所述增量脚本信息中删除所述子发布包对应的版本号信息、脚本编号以及对象类型;
返回执行所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤;
在所述增量脚本部署完成时,根据所述增量脚本的版本号信息更新所述发布对象对应的已部署脚本版本号。
在一实施例中,处理器101可以用于调用存储器102中存储的检测程序,并执行以下操作:
确定所述发布对象是否存在所述第二脚本版本号;
在所述发布对象不存在所述第二脚本版本号时,在所述发布对象部署所述发布包;
在所述发布对象存在所述第二脚本版本号时,执行所述获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号的步骤。
在本实施例的技术方案中,数据库脚本的部署装置获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号;根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本;在所述发布对象中部署所述增量脚本。由于数据库脚本的部署装置可根据第一脚本版本号以及第二脚本版本号确定针对发布对象的增量脚本,因此,当发布对象以及部署了发布包中的部分脚本时,不需要再根据发布包对发布对象进行全量部署,由于第二脚本版本号是预先记录在数据库脚本的部署装置中的,因此不需要遍历发布对象数据库当前全部内容和待部署脚本发布包的全量脚本内容,可提高数据库脚本的部署效率。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
参照图2,图2为本发明数据库脚本的部署方法的第一实施例,方法包括以下步骤:
步骤S10,获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号。
数据库脚本是包含不属于数据库架构定义的Transact-SQL(T-SQL)语句或实用工具(如SQLCMD)的附加文件。可以将数据库脚本用作部署步骤的一部分(预先部署和后期部署脚本),数据库脚本也可以是存储在数据库项目中的常规管理脚本。在对架构对象执行数据库重构操作期间,可以自动更新包含执行该操作期间进行重命名的数据库对象的任何脚本。
在本实施例中,上述发布包即为数据库脚本文件对应的发布包,其中,数据库脚本文件对应有版本号信息,例如:数据库脚本文件的文件名携带版本号信息,数据库脚本的部署装置可基于数据库脚本文件的文件名进行检测得到。容易理解的是,第一脚本版本号为发布对象中的元数据所代表的版本信息,第二脚本版本号为待发布包中的脚本所属的版本号信息。
可选的,整个发布包中各个数据库脚本对应的版本号信息即为上述第一脚本版本号,进一步的,第二脚本版本号是指在发布对象中已经部署的第二脚本对应的版本号信息,其中,第二脚本版本号预先存储于数据库脚本的部署装置。
步骤S20,根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本。
在本实施例中,第一脚本版本号的数据类型与第二脚本版本号的数据类型相同,例如:都为预设格式的字符组成。可进行版本号匹配,具体的,将第一脚本版本号与第二脚本版本号进行字符比对,然后得到第一脚本版本号中的与第二脚本坂本号存在差异的差异版本号,最后可将差异版本号对应的数据库脚本作为发布对象的增量脚本。
可选的,将第一版本号与第二脚本版本号进行版本号匹配,获取未匹配成功的第三版本号,既上述差异版本号。在发布包中将第三版本号对应的子发布包作为相对于所述发布对象的增量脚本。通过版本号匹配即可实现数据库脚本的部署,无需占用过多的计算资源。
步骤S30,在所述发布对象中部署所述增量脚本。
在本实施例中,数据库脚本的部署装置包括静态管理架构、以及动态增量部署模块,通过构建静态管理架构进行增量脚本的部署,静态管理架构可支持多个数据库,主要包括目录管理模块、脚本文件管理模块、元数据管理模块,其中,第二脚本版本号信息可通过元数据管理模块获取,可选的,对于静态管理架构、动态增量部署模块以及发布对象直接的架构图,可参考图2A。
可选的,对于目录管理模块,目录分为至少三级目录,顶层目录为版本号、数据库名称作为2级目录、对象类型作为3级目录;版本号的命名方式为以“***数字”、“.”构成。分为“主版本.子版本.小版本[.bugfix版本]”,版本号按照从小到大累加。在某个版本发布后发现的bug,或者版本发布后引入的bug,在此版本号后加入.bugfix版本进行修复。
可选的,对于脚本文件管理模块,可将目标脚本文件存放在对应目录下,同一目录下的文件按照“脚本执行序号-脚本名称-开发人员代码.sql”命名,其中,“开发人员代码”为可选,可以为其它的用于标记修改记录的命名规则;“脚本执行序号”可选规则一:按照脚本创建时间排序进行编号;“脚本执行序号”可选规则二:按照脚本之间相互依赖关系进行人工编号。
可选的,对于元数据管理模块,在创建发布包时将此版本之前的第二脚本版本号作为元数据打包写入到该元数据管理模块,该元数据管理模块可以是数据库的数据表,或数据文件等具有存储功能的任何形式。
可选的,首次创建发布包,通过发布包对应的第一脚本版本号与元数据管理模块中的第二脚本版本号确定部署方式,其中,元数据管理模块中的第二脚本版本号为空/不存在,则执行全量部署发布包;具体操作方式为:读取发布对象名为metadata_schema的database,并在其中检索名为version的table,并进一步验证version表的内容是否不为空。如果不存在metadata_schema、或者不存在version、或者version表的内容为空。将发布包中的所有脚本加入到待部署脚本列表。如不为空/存在,则为增量部署发布包,在增量部署时,使用部署脚本读取元数据管理模块包含的版本号,并与发布包中的脚本的版本号按预设方式进行比较。
可选的,预设方式为:将发布包中的脚本版本号(下文中以BBHA进行指代)与元数据管理模块中发布对象的版本号列表(下文中以BBHList指代)的每一项进行比较,如果在BBHList找到了一项与BBHA相同的元素项,则认为BBHA对应的脚本已经在发布对象上部署过,可跳过此BBHA对应的全部脚本。如果没有在BBHList中找到与BBHA相同的元素项,则认为BBHA对应的脚本尚未在此发布对象上部署,则将BBHA对应的所有脚本加入待部署脚本列表。
可选的,将本次增量脚本的版本号写入元数据管理模块中,以用于下一次部署时,用于确定第二脚本版本号。
可选的,按照版本号进行管理,属于某个版本的脚本必然在某个版本号中。而不会出现在其它版本中。发布包包含此版本之前的所有版本内容。元数据管理模块随着发布包部署到发布对象数据库中,其中随着部署过程写入了发布到本数据库的所有版本内容的版本号。在增量发布过程中,通过比较发布包中与数据库中已部署的版本号的差异,仅将发布包中不存在于数据库已部署版本号的版本内容按照脚本编号顺序部署到数据库中,达成增量发布的目的。
可选的,本方案可适用于1个或多个发布对象的个性化需求,以发布对象A、B、C为例,发布对象A中未部署任何版本的数据库脚本、发布对象B中已部署版本1.0的数据库脚本;发布对象C中已部署版本1.0数据库脚本、1.1数据库脚本;当前发布包的版本为1.2,
此时,若发布对象A暂未部署数据库,因而元数据管理模块无A对应的第二脚本版本号相关信息。
此时,B对应的元数据表version的内容参考图如图2B所示,其中,通过元数据表version可确定B对应的第二脚本版本号;
此时,C对应的元数据表version的内容参考图如图2C所示,其中,通过元数据表version可确定C对应的第二脚本版本号:
将当前发布包的版本列表与元数据管理模块中各发布对象对应的版本号列表的每一项进行比较,由于发布对象A中不存在对应的版本号列表,则全量部署发布包,及全量发布1.0-1.2发布包;
发布对象B按照预设方式的比对结果为,将部署版本1.1、1.2对应的所有脚本加入待部署脚本列表,按照版本号、脚本类型、脚本编号确定脚本执行顺序的方式确定部署列表顺序,实现准确部署,部署顺序参考图如图2D所示。
发布对象C按照预设方式的比对结果为,将部署版本1.2对应的所有脚本加入待部署脚本列表;具体类似对象B。
按照各自的部署列表分别进行增量部署。
发布完成后,A对应的版本号列表参考图如图2E。
发布完成后,B对应的版本号列表参考图如图2F。
发布完成后,C对应的版本号列表参考图如图2G。
在本实施例的技术方案中,由于数据库脚本的部署装置可根据第一脚本版本号以及第二脚本版本号确定针对发布对象的增量脚本,因此,当发布对象以及部署了发布包中的部分脚本时,不需要再根据发布包对发布对象进行全量部署,由于第二脚本版本号是预先记录在数据库脚本的部署装置中的,因此不需要遍历发布对象数据库当前全部内容和待部署脚本发布包的全量脚本内容,可提高数据库脚本的部署效率。
参照图3,图3为本发明数据库脚本的部署方法的第二实施例,基于第一实施例,步骤S30包括:
步骤S31,获取所述增量脚本对应的增量脚本信息,所述增量脚本信息包括所述增量脚本的版本号信息、脚本编号以及对象类型。
步骤S32,根据所述增量脚本信息确定所述增量脚本的部署顺序。
步骤S33,根据所述部署顺序在所述发布对象部署所述增量脚本。
在本实施例中,将上述生成的待部署脚本列表进行排序,其中,待部署脚本列表即为本实施例增量脚本对应的增量脚本信息,用于指引部署增量脚本,其中,根据特定的排序规则确定所有待部署脚本的先后部署顺序。
可选的,确定所述增量脚本的版本号信息的部署优先级;根据所述部署优先级确定所述增量脚本的部署顺序。
可选的,对于部署优先级,部署顺序的原则可为低版本优先于高版本、各数据库对象类型预设排序顺序、脚本编号从小到大,在确定部署优先级后,按序执行部署,具体可按照如下的详细规则确定所有待部署脚本列表脚本的执行顺序:
约定1:按照前述说明,版本号组成为“主版本.子版本.小版本[.bugfix版本]”。其中按照“.”点号分割为4个部分。“.bugfix”为可选项,如果缺失,则为3个部分。
约定2:对象类型分为TABLES、FUNCTION、PROCEDURE、TRIGGER、DML。按照执行的先后顺序排序为TABLES先于FUNCTION先于PROCEDURE先于TRIGGER先于DML。
比对1:将版本号根据“.”进行分割。按照数字类型比较不同版本的“主版本”内容,较小的顺序先于较大的,并结束比较。如果“主版本”内容相同,则进入到比对2;
比对2:将版本号根据“.”进行分割。按照数字类型比较不同版本的“子版本”内容,较小的顺序先于较大的,并结束比较。如果“子版本”内容相同,则进入到比对3;
比对3:将版本号根据“.”进行分割。按照数字类型比较不同版本的“小版本”内容,较小的顺序先于较大的,并结束比较。如果任一比较方缺失小版本内容,则缺失方顺序先于未缺失方,并结束比较。如果“小版本”内容相同,则进入到比对4;
比对4:将版本号根据“.”进行分割。按照数字类型比较不同版本的“bugfix版本”内容,较小的顺序先于较大的,并结束比较。如果任一比较方缺失bugfix版本内容,则缺失方顺序先于未缺失方,并结束比较。如果“bugfix版本”内容相同,则进入到比对5;
比对5:比较脚本的对象类型,如果对象类型不同,则按照TABLES先于FUNCTION先于PROCEDURE先于TRIGGER先于DML确定先后顺序,并结束比较。如果对象类型相同,则进入到比对6;
比对6:比较对象的脚本编号,脚本编号较小的先于较大的。
可选的,根据所述对象类型对应的对象优选级确定所述增量脚本的部署顺序。
可选的,根据所述脚本编号的数值大小确定所述增量脚本的部署顺序。
在本实施例的技术方案中,可基于版本号信息等数据确定数据库脚本的部署顺序,可防止无法发现差异内容在部署上的依赖顺序,可防止增量发布出现大量错误,提高了数据库脚本的部署准确率。
参照图4,图4为本发明数据库脚本的部署方法的第三实施例,基于第一至第二任一实施例,步骤S32包括:
步骤S321,根据所述部署顺序在所述发布对象依次部署所述增量脚本。
步骤S322,每完成一个所述增量脚本中的子发布包的部署时,在所述增量脚本信息中删除所述子发布包对应的版本号信息、脚本编号以及对象类型。
步骤S323,返回执行所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤。
步骤S324,在所述增量脚本部署完成时,根据所述增量脚本的版本号信息更新所述发布对象对应的已部署脚本版本号。
在本实施例中,每部署完成一个数据库脚本,都将脚本信息从增量脚本信息中删除,其中,增量脚本信息可为scripts表,scripts表用于参照以完成后续部署。对应版本的所有脚本都执行完毕后,将部署完成的各个脚本的版本号写入到记录发布对象对应的第二脚本版本号的列表,其中,上述列表为version表。
可选的,鉴于上文所述方案无法解决发布过程异常中断(主机断电、宕机、数据库crash等)后,发布对象的元数据信息与实际状态不一致的问题:
假定发布包包含内容:
Software/1.1/DB1/TABLES/01_script2_0002.sql;
Software/1.1/DB1/FUNCTION/04_script2_0001.sql;
Software/1.1/DB1/FUNCTION/05_script3_0001.sql;
Software/1.1/DB1/PROCEDURE/03_script2_0003.sql;
Software/1.2/DB1/PROCEDURE/03_script2_0003.sql;
假定发布对象对应的元数据内容的参考图包括如图4A示的。
问题描述1:如果先于脚本执行,将版本号写入元数据库表,此时元数据库表包含的内容的参考图如图4B所示。此后,当脚本有序执行到上述假定发布包中的第二个内容“Software/1.1/DB1/FUNCTION/04_script2_0001.sql”时,主机断电,待主机恢复后再次发布,会因为元数据已经包含1.0,1.1的内容,而导致1.1版本中尚未发布的脚本被跳过执行。
问题描述2:如果等待脚本执行完成后,将版本号写入元数据库表,当执行到脚本“Software/1.1/DB1/FUNCTION/04_script2_0001.sql”时主机断电,待主机恢复后再次发布,因为元数据库表中未包含1.1的内容,此时会导致“Software/1.1/DB1/TABLES/01_script2_0002.sql”脚本被重复执行。
为了解决此处提到的问题,提出如下的扩展方案:
将元数据信息增加填充执行脚本名称,将已执行的脚本名称信息写入元数据库scripts表,元数据库scripts表的参考图如图4C。
在确定待部署脚本列表阶段,则进一步的需要从待部署脚本列表中根据版本号+脚本名称排除掉scripts表记录的脚本信息后,生成新的待部署脚本列表。
在版本内容发布到发布对象的过程中,每执行完成一个脚本,都将脚本信息写入到scripts表。对应版本的所有脚本都执行完毕后,将版本号写入到version表。
在本实施例的技术方案中,通过上述方法,可解决发布过程异常中断(主机断电、宕机、数据库crash等)后,发布对象的元数据信息与实际状态不一致的问题。
参照图5,图5为本发明数据库脚本的部署方法的第四实施例,基于第一至第三任一实施例,步骤S10之前,还包括:
步骤S40,确定所述发布对象是否存在所述第二脚本版本号。
步骤S50,在所述发布对象不存在所述第二脚本版本号时,在所述发布对象部署所述发布包。
步骤S60,在所述发布对象存在所述第二脚本版本号时,执行所述获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号的步骤。
在本实施例的技术方案中,通过直接确定发布对象是否存在对应的第二脚本版本号,可直接在全量部署以及增量部署中做出选择。
为实现上述目的,本发明实施例还提供一种数据库脚本的部署装置,所述数据库脚本的部署装置包括:存储器、处理器及存储在所述存储器上并可在处理器上运行的数据库脚本的部署的处理程序,所述处理器执行所述数据库脚本的部署的处理程序时实现如上所述的数据库脚本的部署方法的各个步骤。
为实现上述目的,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据库脚本的部署的处理程序,所述数据库脚本的部署的处理程序被处理器执行时实现如上所述的数据库脚本的部署方法的各个步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或数据库脚本的部署的处理程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的网络配置产品程序的形式。
本发明是参照根据本发明实施例的方法、装置(***)、和数据库脚本的部署的处理程序产品的流程图和/或方框图来描述的。应理解可由数据库脚本的部署的处理程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些数据库脚本的部署的处理程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些数据库脚本的部署的处理程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些数据库脚本的部署的处理程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据库脚本的部署方法,其特征在于,所述数据库脚本的部署方法包括以下步骤:
获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号;
根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本;
在所述发布对象中部署所述增量脚本。
2.如权利要求1所述的数据库脚本的部署方法,其特征在于,所述根据所述第一脚本版本号以及所述第二脚本版本号确定所述发布包相对于所述发布对象的增量脚本的步骤包括:
将所述第一版本号与所述第二脚本版本号进行版本号匹配,获取未匹配成功的第三版本号;
在所述发布包中将所述第三版本号对应的子发布包作为相对于所述发布对象的增量脚本。
3.如权利要求1所述的数据库脚本的部署方法,其特征在于,所述在所述发布对象部署所述增量脚本的步骤包括:
获取所述增量脚本对应的增量脚本信息,所述增量脚本信息包括所述增量脚本的版本号信息、脚本编号以及对象类型;
根据所述增量脚本信息确定所述增量脚本的部署顺序;
根据所述部署顺序在所述发布对象部署所述增量脚本。
4.如权利要求3所述的数据库脚本的部署方法,其特征在于,所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤包括:
确定所述增量脚本的版本号信息的部署优先级;
根据所述部署优先级确定所述增量脚本的部署顺序。
5.如权利要求3所述的数据库脚本的部署方法,其特征在于,所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤包括:
根据所述对象类型对应的对象优选级确定所述增量脚本的部署顺序。
6.如权利要求3所述的数据库脚本的部署方法,其特征在于,所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤包括:
根据所述脚本编号的数值大小确定所述增量脚本的部署顺序。
7.如权利要求3-6任一项所述的数据库脚本的部署方法,其特征在于,所述根据所述部署顺序在所述发布对象部署所述增量脚本的步骤包括:
根据所述部署顺序在所述发布对象依次部署所述增量脚本;
每完成一个所述增量脚本中的子发布包的部署时,在所述增量脚本信息中删除所述子发布包对应的版本号信息、脚本编号以及对象类型;
返回执行所述根据所述增量脚本信息确定所述增量脚本的部署顺序的步骤;
在所述增量脚本部署完成时,根据所述增量脚本的版本号信息更新所述发布对象对应的已部署脚本版本号。
8.如权利要求1所述的数据库脚本的部署方法,其特征在于,所述获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号的步骤之前,所述方法还包括:
确定所述发布对象是否存在所述第二脚本版本号;
在所述发布对象不存在所述第二脚本版本号时,在所述发布对象部署所述发布包;
在所述发布对象存在所述第二脚本版本号时,执行所述获取发布包对应的第一脚本版本号,以及发布对象对应的第二脚本版本号的步骤。
9.一种数据库脚本的部署装置,其特征在于,所述数据库脚本的部署装置包括:存储器、处理器及存储在所述存储器上并可在处理器上运行的数据库脚本的部署的处理程序,所述处理器执行所述数据库脚本的部署的处理程序时实现如权利要求1至8中任一项所述的数据库脚本的部署方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据库脚本的部署的处理程序,所述数据库脚本的部署的处理程序被处理器执行时实现如权利要求1至8中任一项所述的数据库脚本的部署方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110921895.2A CN113792026B (zh) | 2021-08-11 | 2021-08-11 | 数据库脚本的部署方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110921895.2A CN113792026B (zh) | 2021-08-11 | 2021-08-11 | 数据库脚本的部署方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113792026A true CN113792026A (zh) | 2021-12-14 |
CN113792026B CN113792026B (zh) | 2023-08-11 |
Family
ID=78875904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110921895.2A Active CN113792026B (zh) | 2021-08-11 | 2021-08-11 | 数据库脚本的部署方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113792026B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860314A (zh) * | 2022-07-06 | 2022-08-05 | 深圳华锐分布式技术股份有限公司 | 基于数据库兼容的部署升级方法、装置、设备及介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020176378A1 (en) * | 2001-05-22 | 2002-11-28 | Hamilton Thomas E. | Platform and method for providing wireless data services |
CN104965735A (zh) * | 2015-06-18 | 2015-10-07 | 北京京东尚科信息技术有限公司 | 用于生成升级sql脚本的装置 |
CN108776643A (zh) * | 2018-06-04 | 2018-11-09 | 腾讯科技(武汉)有限公司 | 一种基于版本控制流程的目标代码合并控制方法及*** |
CN108881101A (zh) * | 2017-05-08 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种基于文档对象模型的跨站脚本漏洞防御方法、装置以及客户端 |
CN109491695A (zh) * | 2018-10-19 | 2019-03-19 | 华南理工大学 | 一种集成安卓应用的增量更新方法 |
US20200012480A1 (en) * | 2018-07-05 | 2020-01-09 | Jpmorgan Chase Bank, N.A. | Method and system for implementing a cloud infrastructure visualizer and generator |
CN111104155A (zh) * | 2019-11-29 | 2020-05-05 | 北京浪潮数据技术有限公司 | 数据库脚本管理平台、方法及电子设备和存储介质 |
CN111858330A (zh) * | 2020-07-16 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种测试脚本的部署方法、装置、设备及可读介质 |
CN112130891A (zh) * | 2020-09-23 | 2020-12-25 | 上海逸迅信息科技有限公司 | 一种数据库持续部署的方法和设备 |
US20210064573A1 (en) * | 2019-09-04 | 2021-03-04 | International Business Machines Corporation | Database deployment objects and deterministic locking models |
CN112817931A (zh) * | 2019-11-18 | 2021-05-18 | 大唐移动通信设备有限公司 | 一种增量版本文件的生成方法及装置 |
-
2021
- 2021-08-11 CN CN202110921895.2A patent/CN113792026B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020176378A1 (en) * | 2001-05-22 | 2002-11-28 | Hamilton Thomas E. | Platform and method for providing wireless data services |
CN104965735A (zh) * | 2015-06-18 | 2015-10-07 | 北京京东尚科信息技术有限公司 | 用于生成升级sql脚本的装置 |
CN108881101A (zh) * | 2017-05-08 | 2018-11-23 | 腾讯科技(深圳)有限公司 | 一种基于文档对象模型的跨站脚本漏洞防御方法、装置以及客户端 |
CN108776643A (zh) * | 2018-06-04 | 2018-11-09 | 腾讯科技(武汉)有限公司 | 一种基于版本控制流程的目标代码合并控制方法及*** |
US20200012480A1 (en) * | 2018-07-05 | 2020-01-09 | Jpmorgan Chase Bank, N.A. | Method and system for implementing a cloud infrastructure visualizer and generator |
CN109491695A (zh) * | 2018-10-19 | 2019-03-19 | 华南理工大学 | 一种集成安卓应用的增量更新方法 |
US20210064573A1 (en) * | 2019-09-04 | 2021-03-04 | International Business Machines Corporation | Database deployment objects and deterministic locking models |
CN112817931A (zh) * | 2019-11-18 | 2021-05-18 | 大唐移动通信设备有限公司 | 一种增量版本文件的生成方法及装置 |
CN111104155A (zh) * | 2019-11-29 | 2020-05-05 | 北京浪潮数据技术有限公司 | 数据库脚本管理平台、方法及电子设备和存储介质 |
CN111858330A (zh) * | 2020-07-16 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种测试脚本的部署方法、装置、设备及可读介质 |
CN112130891A (zh) * | 2020-09-23 | 2020-12-25 | 上海逸迅信息科技有限公司 | 一种数据库持续部署的方法和设备 |
Non-Patent Citations (1)
Title |
---|
朱艳等: "新疆天文台天文观测数据传输日志***设计与实现", 《天文研究与技术》, pages 194 - 203 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860314A (zh) * | 2022-07-06 | 2022-08-05 | 深圳华锐分布式技术股份有限公司 | 基于数据库兼容的部署升级方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113792026B (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2019219824B2 (en) | System for synchronization of changes in edited websites and interactive applications | |
CN109460349B (zh) | 一种基于日志的测试用例生成方法和装置 | |
CN108694195B (zh) | 一种分布式数据仓库的管理方法及*** | |
CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
CN101308471B (zh) | 一种恢复数据的方法及装置 | |
US11593357B2 (en) | Databases and methods of storing, retrieving, and processing data | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
US8607217B2 (en) | Incremental upgrade of entity-relationship systems | |
CN113204571B (zh) | 涉及写入操作的sql执行方法、装置及存储介质 | |
US20070234328A1 (en) | File handling for test environments | |
CN112463450A (zh) | 一种增量备份管理方法、***、电子设备及存储介质 | |
CN113094162A (zh) | 一种任务依赖关系更新方法、装置及存储介质 | |
CN112000649B (zh) | 一种基于map reduce的增量数据同步的方法和装置 | |
CN110941629A (zh) | 元数据处理方法、装置、设备及计算机可读存储介质 | |
CN111159020B (zh) | 一种应用于同步软件测试的方法和装置 | |
CN106446064A (zh) | 一种数据转换方法及装置 | |
CN113792026B (zh) | 数据库脚本的部署方法、装置及计算机可读存储介质 | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
CN116737113B (zh) | 面向海量科学数据的元数据目录管理***及方法 | |
US20150347402A1 (en) | System and method for enabling a client system to generate file system operations on a file system data set using a virtual namespace | |
CN111400243B (zh) | 基于流水线服务的研发管理***以及文件存储方法、装置 | |
CN112817931B (zh) | 一种增量版本文件的生成方法及装置 | |
CN114356404A (zh) | 接口文档生成方法、***和计算机可读存储介质 | |
CN113220592A (zh) | 自动化测试资源的处理方法、装置、服务器及存储介质 | |
CN108376104B (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 |