System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种数据库版本管理方法、装置、计算设备及存储介质制造方法及图纸_技高网

一种数据库版本管理方法、装置、计算设备及存储介质制造方法及图纸

技术编号:40073900 阅读:4 留言:0更新日期:2024-01-17 00:39
本发明专利技术公开了一种数据库版本管理方法,包括:将多个数据源存储在一个中心化数据库中;解析DDL脚本,从中心化数据库中获取需要更新的数据库、表和字段;从数据库获取表结构信息和数据行信息;根据表结构信息判断是否执行更新操作,根据表的数据行信息选择对应的执行组件。本方案能够提高数据库版本更新的效率和数据库业务系统的稳定性。

【技术实现步骤摘要】

本专利技术涉及数据库管理,具体涉及一种数据库版本管理方法、装置、计算设备及存储介质


技术介绍

1、数据库用于保存服务运行产生的各类数据,对于软件应用,数据库是不可或缺的一部分。随着产品开发过程中需求的变化,通常需要更新数据库模式(schema),比如新增表、新增字段或新增数据。对于用户来说,一个好的软件应用应该是不断完善和迭代的,而迭代通常需要对原设计的表结构进行调整以适应新的业务。

2、现有技术中有通过flyway组件对sql中的ddl脚本版本进行管理,对数据库进行sql增量执行。但是在ddl操作过程中数据库会对该表加表锁,这期间无法进行数据写入,也就意味着没办法提供数据服务。对于大数据量表ddl执行时间较长,对于提供全天候无间断服务的应用来说是不能接受的。这种情况通常需要数据库管理员使用无锁变更工具pt-online-schema-change来在线更改表结构。这种脱离版本管理的手动操作是非常容易失误的,尤其对于更新的数据库较多数据量较大的情况,会增加大量的人力成本。

3、对于saas平台通常是多数据源的架构,依次修改表字段效率低下,长时间上线窗口对客户使用影响较大。对于版本差别较大的服务集群升级,会出现需要升级的ddl脚本无法使用的问题。


技术实现思路

1、为了在保证数据库业务系统稳定性的同时提高数据库版本管理的效率,本方案提出了一种数据库版本管理方法、装置、计算设备及存储介质,通过比对数据库版本号、表结构和数据量自动选择ddl脚本执行组件,能够提高数据库版本更新的执行效率。

2、根据本专利技术的第一方面,提供一种数据库版本管理方法,包括:将多个数据源存储在一个中心化数据库中;解析ddl脚本,从中心化数据库中获取需要更新的数据库;从数据库获取表结构信息和数据行信息;根据表结构信息判断是否执行更新操作,根据表的数据行信息选择对应的执行组件。

3、可选地,在本专利技术提供的数据库版本管理方法中,将多个数据源按照业务类型分类存储在中心化数据库;以版本号为目录管理数据库不同版本所有的ddl脚本,提供每个数据库执行的版本管理记录。

4、可选地,在本专利技术提供的数据库版本管理方法中,比对需要更新的数据库当前版本的版本号与版本管理记录中该数据库的版本号,判断数据库ddl脚本是否已经执行;如果已经执行则不再执行更新操作,记录执行出错的版本文件;如果未执行则获取需要更新的数据库。

5、可选地,在本专利技术提供的数据库版本管理方法中,获取数据库元数据;比对当前待更新表的结构与数据库元数据中的表结构,如果结构一致则不执行更新操作,记录当前版本信息,如果结构不一致则执行更新操作。

6、可选地,在本专利技术提供的数据库版本管理方法中,如果当前待更新表的数据行数不大于预设数据行数,则调用flyway组件执行更新操作;如果当前待更新表的数据行数大于预设数据行数,则调用pt-online-schema-change组件执行更新操作。

7、根据本专利技术的第二方面,提供了一种数据库版本管理装置,包括:存储模块、解析模块、获取模块和执行模块。

8、其中,存储模块,用于将多个数据源存储在一个中心化数据库中;解析模块,用于解析ddl脚本,从中心化数据库中获取需要更新的数据库;获取模块,用于从数据库获取表结构信息和数据行信息;执行模块,用于根据表结构信息判断是否执行更新操作,根据表的数据行信息选择对应的执行组件。

9、可选地,在本专利技术提供的数据库版本管理装置中,存储模块用于以版本号为目录管理数据库不同版本所有的ddl脚本,提供每个数据库执行的版本执行记录;解析模块用于比对需要更新的数据库当前版本的版本号与版本管理记录中该数据库的版本号,如果版本号一致则不再执行版本更新操作,如果版本号不一致则获取需要更新的数据库。

10、可选地,在本专利技术提供的数据库版本管理装置中,执行模块用于比对当前待更新表的结构与数据库元数据中的表结构,如果结构一致则不执行表更新操作,如果结构不一致的执行表更新操作;比对待更新表的数据行数与预设数据行数,如果当前待更新表的数据行数不大于预设数据行数则调用flyway组件执行更新操作,如果当前待更新表的数据行数大于预设数据行数,则调用pt-online-schema-change组件执行更新操作。

11、根据本专利技术的第三方面,提供一种计算设备,包括存储器、处理器以及储存在存储器上并可在处理器上运行的计算机程序,处理器执行如第一方面中的一种数据库版本管理方法。

12、根据本专利技术的第四方面,提供一种计算机可读存储介质,包括存储有能够被处理器加载并执行如第一方面的一种数据库版本管理方法的计算机程序。

13、通过本专利技术提供的数据库版本管理方法和装置,通过并行处理需要版本更新的数据库,并在版本升级过程中自动比对数据库版本号、表结构和数据行数,根据不同的数据行数选择不同的执行组件。对于数据量较少的表数据更新通过flyway组件执行,对于数据量较大的表数据更新操作通过pt-online-schema-change组件执行,能够在保证数据库业务系统稳定性的同时提高数据库版本管理的效率。

14、上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。

本文档来自技高网...

【技术保护点】

1.一种数据库版本管理方法,其特征在于,包括:

2.根据权利要求1所述的数据库版本管理方法,其特征在于,所述将多个数据源存储在一个中心化数据库中的步骤包括:

3.根据权利要求2所述的数据库版本管理方法,其特征在于,所述解析DDL脚本,从中心化数据库中获取需要更新的数据库、表和字段的步骤包括:

4.根据权利要求3所述的数据库版本管理方法,其特征在于,所述根据表结构信息判断是否执行更新操作的步骤包括:

5.根据权利要求1所述的数据库版本管理方法,其特征在于,所述根据表的数据行信息选择对应的执行组件的步骤包括:

6.一种数据库版本管理装置,其特征在于,包括:

7.根据权利要求6所述的数据库版本管理装置,其特征在于,所述存储模块用于以版本号为目录管理数据库不同版本所有的DDL脚本,提供每个数据库执行的版本执行记录;

8.根据权利要求6所述的数据库版本管理装置,其特征在于,所述执行模块用于比对当前待更新表的结构与数据库元数据中的表结构,如果结构一致则不执行表更新操作,如果结构不一致的执行表更新操作;比对待更新表的数据行数与预设数据行数,如果当前待更新表的数据行数不大于预设数据行数则调用flyway组件执行更新操作,如果当前待更新表的数据行数大于预设数据行数,则调用pt-online-schema-change组件执行更新操作。

9.一种计算设备,包括:

10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-5任意一项中所述的数据库版本管理方法。

...

【技术特征摘要】

1.一种数据库版本管理方法,其特征在于,包括:

2.根据权利要求1所述的数据库版本管理方法,其特征在于,所述将多个数据源存储在一个中心化数据库中的步骤包括:

3.根据权利要求2所述的数据库版本管理方法,其特征在于,所述解析ddl脚本,从中心化数据库中获取需要更新的数据库、表和字段的步骤包括:

4.根据权利要求3所述的数据库版本管理方法,其特征在于,所述根据表结构信息判断是否执行更新操作的步骤包括:

5.根据权利要求1所述的数据库版本管理方法,其特征在于,所述根据表的数据行信息选择对应的执行组件的步骤包括:

6.一种数据库版本管理装置,其特征在于,包括:

7.根据权利要求6所述的数据库版本管理装置,其特征在于,所述存储模块用于以版本...

【专利技术属性】
技术研发人员:陶华娟朱德权
申请(专利权)人:上海利唐信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1