数据库升级方法及装置与流程

文档序号:34737647发布日期:2023-07-12 21:34阅读:15来源:国知局
数据库升级方法及装置与流程

本发明实施例涉及数据库数据处理,尤其涉及一种数据库升级方法及装置。


背景技术:

1、随着互联网和微服务技术的发展,分布式数据库、缓存、消息队列等业务中间件的应用已逐渐成为常态,随之而来的则是服务部署难度的提升和服务升级流程的繁琐,而当微服务系统需要以产品的形式部署到客户侧时,其服务部署与维护上所面临的障碍尤甚。

2、现有的解决方案主要将目光聚焦于数据库这一维度,根据其具体实现方案又大致分为两种:一种是通过服务自身对其运行过程中依赖的数据库信息进行细粒度检查和确认,并在适当情况下主动执行数据库的初始化和升级动作,从而保证数据库信息的时效性与完整性;另一种是在服务自身或采用附加服务的方法,于服务启动期间集中执行初始化动作,包括对数据库的状态自检、新增配置脚本的增量执行等。前者的优点在于,服务对数据库的使用实现了“按需调整、自动创建”的目的,在应用上基本无需在部署或升级服务时单独处现数据库方面的问题;但其不足之处也很明显:其数据库定义是分散的,藕合在具体的业务之中,难以形成一个宏观而集中的数据库描述视图,在业务需求较为简单时能够为数据库管理提供方便,而一旦业务复杂度上升,其管理难度会骤增。后者通过聚合数据定义文件来为管理维护提供便利:由于数据定义等描述文件是集中管理的,技术人员可以依据服务配置、版本间的差异来自动化执行增量操作,在服务变动时也能快速了解其宏观视图。

3、例如专利申请号cn201911034730.2提出的升级方案,将数据库升级划分为多个步骤,为每个升级步骤调用预先配置的微服务,从而完成升级;又如专利申请号cn201811642396.4提出的升级方案,通过预先提供的信息文件确定数据库升级需要的增量文件范围,进而识别出数据库变更,并完成跨版本升级。这样的方案诚然为数据库升级提供了优秀的解决思路,但仍然存在一些不足。其一,数据库的升级是全量的、不可分割的:所有增量的变更都需要执行升级,无法针对具体的业务模块进行部分升级;其二,数据库升级是静态且确定的:数据库升级过程需要执行的变更操作是预定义的,不能根据具体业务而灵活地、动态地执行升级动作。


技术实现思路

1、基于现有技术的上述情况,本发明实施例的目的在于提供一种数据库升级方法及装置,可以实现对中间件数据进行部分升级,并可以根据数据变化在一定程度上实现适应性调整。

2、为达到上述目的,根据本发明的第一个方面,提供了一种数据库升级方法,包括:

3、获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;

4、获取预设的数据库当前版本;

5、根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径;

6、所述原始版本为距离数据库当前版本和数据库目标版本最近的公共历史版本。

7、进一步的,根据所述数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径,包括:

8、若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径;

9、若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径。

10、进一步的,根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径,包括:

11、获取从数据库原始版本x0.y0至数据库目标版本xc.yd的所有路径,所述路径包括以数据库原始版本x0.y0为起点,数据库目标版本xc.yd为终点,所经历的所有版本的有序集合,其中每一个版本都为前一个版本的相邻升级版本;

12、在所获取的所有路径中选择最短路径作为升级路径;

13、其中,所述数据库的版本包括x0.y0……xc.yd……xm.yn,m>c>0,n>d>0;x0……xc……xm分别表示数据库在第一层级进行升级的版本,y0……yd……yn分别表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本;

14、所述相邻升级版本包括在第一层级进行升级的版本和在第一层级的生命周期中进行衍生升级的版本。

15、进一步的,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,包括:

16、获取第一路径中涉及的第一元变更集合;

17、获取第二路径中涉及的第二元变更集合;

18、若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,则对所述第一路径中涉及互斥的元变更的版本进行回撤操作,并获得从回撤后的版本升级至数据库目标版本的升级路径;

19、若所述第一元变更集合与所述第二元变更集合中不存在互斥的元变更,则根据所述数据库目标版本获得从数据库当前版本升级至数据库目标版本的升级路径;

20、其中,元变更表示数据库升级时对数据库中表单进行的单步操作,回撤操作表示从当前版本退回至前一相邻版本。

21、进一步的,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,还包括:

22、若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,采用处理函数对第一路径进行处理。

23、进一步的,在第一层级进行的升级和在第一层级的生命周期中进行的衍生升级均包括至少一个元变更。

24、根据本发明的第二个方面,提供了一种数据库升级装置,包括:

25、数据库目标版本获取模块,用于获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;

26、数据库当前版本获取模块,用于获取预设的数据库当前版本;

27、升级路径获取模块,用于根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径;

28、其中,所述原始版本为距离数据库当前版本和数据库目标版本最近的公共历史版本。

29、进一步的,所述升级路径获取模块,根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径,包括:

30、若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径;

31、若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径。

32、进一步的,所述升级路径获取模块,根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径,包括:

33、获取从数据库原始版本x0.y0至数据库目标版本xc.yd的所有路径,所述路径包括以数据库原始版本x0.y0为起点,数据库目标版本xc.yd为终点,所经历的所有版本的有序集合,其中每一个版本都为前一个版本的相邻升级版本;

34、在所获取的所有路径中选择最短路径作为升级路径;

35、其中,所述数据库的版本包括x0.y0……xc.yd……xm.yn,m>c>0,n>d>0;x0……xc……xm分别表示数据库在第一层级进行升级的版本,y0……yd……yn分别表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本;

36、所述相邻升级版本包括在第一层级进行升级的版本和在第一层级的生命周期中进行衍生升级的版本。

37、进一步的,所述升级路径获取模块,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,包括:

38、获取第一路径中涉及的第一元变更集合;

39、获取第二路径中涉及的第二元变更集合;

40、若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,则对所述第一路径中涉及互斥的元变更的版本进行回撤操作,并获得从回撤后的版本升级至数据库目标版本的升级路径;

41、若所述第一元变更集合与所述第二元变更集合中不存在互斥的元变更,则根据所述数据库目标版本获得从数据库当前版本升级至数据库目标版本的升级路径;

42、其中,元变更表示数据库升级时对数据库中表单进行的单步操作,回撤操作表示从当前版本退回至前一相邻版本。

43、综上所述,本发明实施例提供了一种数据库升级方法及装置,所述方法包括:获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;获取预设的数据库当前版本;根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径。本发明实施例提供的技术方案,针对微服务产品在首次打包发布和后续发布升级补丁时长期面临多版本并行的状况,以及其版本变更图往往不是线性的,而是一个有复杂路径关系的网状结构(有向图)的情况,通过版本化、模块化与注册时服务相结合的方式进行数据库的升级,明显减轻了人工维护的工作量,同时也极大降低了数据升级方面的非预期的故障情况,使得数据模型维护变得更加灵活轻量,服务的新增、移除和数据的变更都可以通过调整配置轻松实现。此外,由于服务配置的增减极为方便,可以轻松实现后期的扩展。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1