CN116401262B - 数据库升级方法及装置 - Google Patents

数据库升级方法及装置 Download PDF

Info

Publication number
CN116401262B
CN116401262B CN202310204412.6A CN202310204412A CN116401262B CN 116401262 B CN116401262 B CN 116401262B CN 202310204412 A CN202310204412 A CN 202310204412A CN 116401262 B CN116401262 B CN 116401262B
Authority
CN
China
Prior art keywords
database
version
path
meta
target
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
Application number
CN202310204412.6A
Other languages
English (en)
Other versions
CN116401262A (zh
Inventor
王瑾琨
姚纪卫
张东升
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anxin Wangdun Beijing Technology Co ltd
Original Assignee
Anxin Wangdun Beijing Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Anxin Wangdun Beijing Technology Co ltd filed Critical Anxin Wangdun Beijing Technology Co ltd
Priority to CN202310204412.6A priority Critical patent/CN116401262B/zh
Publication of CN116401262A publication Critical patent/CN116401262A/zh
Application granted granted Critical
Publication of CN116401262B publication Critical patent/CN116401262B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例涉及一种数据库升级方法及装置,所述方法包括:获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;获取预设的数据库当前版本;根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径。本发明实施例提供的技术方案,通过版本化、模块化与注册时服务相结合的方式进行数据库的升级,明显减轻了人工维护的工作量,同时也极大降低了数据升级方面的非预期的故障情况,使得数据模型维护变得更加灵活轻量,服务的新增、移除和数据的变更都可以通过调整配置轻松实现。

Description

数据库升级方法及装置
技术领域
本发明实施例涉及数据库数据处理技术领域,尤其涉及一种数据库升级方法及装置。
背景技术
随着互联网和微服务技术的发展,分布式数据库、缓存、消息队列等业务中间件的应用已逐渐成为常态,随之而来的则是服务部署难度的提升和服务升级流程的繁琐,而当微服务系统需要以产品的形式部署到客户侧时,其服务部署与维护上所面临的障碍尤甚。
现有的解决方案主要将目光聚焦于数据库这一维度,根据其具体实现方案又大致分为两种:一种是通过服务自身对其运行过程中依赖的数据库信息进行细粒度检查和确认,并在适当情况下主动执行数据库的初始化和升级动作,从而保证数据库信息的时效性与完整性;另一种是在服务自身或采用附加服务的方法,于服务启动期间集中执行初始化动作,包括对数据库的状态自检、新增配置脚本的增量执行等。前者的优点在于,服务对数据库的使用实现了“按需调整、自动创建”的目的,在应用上基本无需在部署或升级服务时单独处现数据库方面的问题;但其不足之处也很明显:其数据库定义是分散的,藕合在具体的业务之中,难以形成一个宏观而集中的数据库描述视图,在业务需求较为简单时能够为数据库管理提供方便,而一旦业务复杂度上升,其管理难度会骤增。后者通过聚合数据定义文件来为管理维护提供便利:由于数据定义等描述文件是集中管理的,技术人员可以依据服务配置、版本间的差异来自动化执行增量操作,在服务变动时也能快速了解其宏观视图。
例如专利申请号CN201911034730.2提出的升级方案,将数据库升级划分为多个步骤,为每个升级步骤调用预先配置的微服务,从而完成升级;又如专利申请号CN201811642396.4提出的升级方案,通过预先提供的信息文件确定数据库升级需要的增量文件范围,进而识别出数据库变更,并完成跨版本升级。这样的方案诚然为数据库升级提供了优秀的解决思路,但仍然存在一些不足。其一,数据库的升级是全量的、不可分割的:所有增量的变更都需要执行升级,无法针对具体的业务模块进行部分升级;其二,数据库升级是静态且确定的:数据库升级过程需要执行的变更操作是预定义的,不能根据具体业务而灵活地、动态地执行升级动作。
发明内容
基于现有技术的上述情况,本发明实施例的目的在于提供一种数据库升级方法及装置,可以实现对中间件数据进行部分升级,并可以根据数据变化在一定程度上实现适应性调整。
为达到上述目的,根据本发明的第一个方面,提供了一种数据库升级方法,包括:
获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;
获取预设的数据库当前版本;
根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径;
所述原始版本为距离数据库当前版本和数据库目标版本最近的公共历史版本。
进一步的,根据所述数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径,包括:
若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径;
若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径。
进一步的,根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径,包括:
获取从数据库原始版本X0.Y0至数据库目标版本XC.YD的所有路径,所述路径包括以数据库原始版本X0.Y0为起点,数据库目标版本XC.YD为终点,所经历的所有版本的有序集合,其中每一个版本都为前一个版本的相邻升级版本;
在所获取的所有路径中选择最短路径作为升级路径;
其中,所述数据库的版本包括X0.Y0……XC.YD……XM.YN,M>C>0,N>D>0;X0……XC……XM分别表示数据库在第一层级进行升级的版本,Y0……YD……YN分别表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本;
所述相邻升级版本包括在第一层级进行升级的版本和在第一层级的生命周期中进行衍生升级的版本。
进一步的,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,包括:
获取第一路径中涉及的第一元变更集合;
获取第二路径中涉及的第二元变更集合;
若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,则对所述第一路径中涉及互斥的元变更的版本进行回撤操作,并获得从回撤后的版本升级至数据库目标版本的升级路径;
若所述第一元变更集合与所述第二元变更集合中不存在互斥的元变更,则根据所述数据库目标版本获得从数据库当前版本升级至数据库目标版本的升级路径;
其中,元变更表示数据库升级时对数据库中表单进行的单步操作,回撤操作表示从当前版本退回至前一相邻版本。
进一步的,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,还包括:
若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,采用处理函数对第一路径进行处理。
进一步的,在第一层级进行的升级和在第一层级的生命周期中进行的衍生升级均包括至少一个元变更。
根据本发明的第二个方面,提供了一种数据库升级装置,包括:
数据库目标版本获取模块,用于获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;
数据库当前版本获取模块,用于获取预设的数据库当前版本;
升级路径获取模块,用于根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径;
其中,所述原始版本为距离数据库当前版本和数据库目标版本最近的公共历史版本。
进一步的,所述升级路径获取模块,根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径,包括:
若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径;
若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径。
进一步的,所述升级路径获取模块,根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径,包括:
获取从数据库原始版本X0.Y0至数据库目标版本XC.YD的所有路径,所述路径包括以数据库原始版本X0.Y0为起点,数据库目标版本XC.YD为终点,所经历的所有版本的有序集合,其中每一个版本都为前一个版本的相邻升级版本;
在所获取的所有路径中选择最短路径作为升级路径;
其中,所述数据库的版本包括X0.Y0……XC.YD……XM.YN,M>C>0,N>D>0;X0……XC……XM分别表示数据库在第一层级进行升级的版本,Y0……YD……YN分别表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本;
所述相邻升级版本包括在第一层级进行升级的版本和在第一层级的生命周期中进行衍生升级的版本。
进一步的,所述升级路径获取模块,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,包括:
获取第一路径中涉及的第一元变更集合;
获取第二路径中涉及的第二元变更集合;
若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,则对所述第一路径中涉及互斥的元变更的版本进行回撤操作,并获得从回撤后的版本升级至数据库目标版本的升级路径;
若所述第一元变更集合与所述第二元变更集合中不存在互斥的元变更,则根据所述数据库目标版本获得从数据库当前版本升级至数据库目标版本的升级路径;
其中,元变更表示数据库升级时对数据库中表单进行的单步操作,回撤操作表示从当前版本退回至前一相邻版本。
综上所述,本发明实施例提供了一种数据库升级方法及装置,所述方法包括:获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;获取预设的数据库当前版本;根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径。本发明实施例提供的技术方案,针对微服务产品在首次打包发布和后续发布升级补丁时长期面临多版本并行的状况,以及其版本变更图往往不是线性的,而是一个有复杂路径关系的网状结构(有向图)的情况,通过版本化、模块化与注册时服务相结合的方式进行数据库的升级,明显减轻了人工维护的工作量,同时也极大降低了数据升级方面的非预期的故障情况,使得数据模型维护变得更加灵活轻量,服务的新增、移除和数据的变更都可以通过调整配置轻松实现。此外,由于服务配置的增减极为方便,可以轻松实现后期的扩展。
附图说明
图1是本发明一个实施例提供的数据库升级方法的流程图;
图2是本发明实施例涉及的数据库版本升级推导示意图;
图3是本发明一个实施例提供的数据库升级装置的构成框图;
图4是本发明一个实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
需要说明的是,除非另外定义,本发明一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本发明一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
下面结合附图对本发明的技术方案进行详细说明。本发明的实施例,提供了一种数据库升级方法,图1中示出了本发明实施例数据库升级方法的流程图,如图1所示,所述方法包括如下步骤:
S202、获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本。本发明该实施例中,微服务的各个子服务在所有版本中所依赖的数据模型定义均保留于所维护的版本化数据库中,在真实环境下,每个微服务在注册时,都能依据其请求时携带的元信息确定其依赖的数据定义文件版本(即数据库目标版本),从而对数据库执行正确的初始化操作或变更操作。版本化数据库还记录了服务各个版本间的数据差异,当实际微服务需要进行升级或回撤时,能够确定一个从源版本到目标版本间的最短变更路径,进而执行变更并完成相应的数据升级或回撤操作。图2中示出了本发明实施例涉及的数据库版本升级推导示意图,如图2所示,每个圆表示一个已发布的数据库版本,实线代表数据库版本间的真实升级路线。数据库的版本例如可以采用VXC.YD来表示,其中,XC表示数据库在第一层级进行升级的版本,YD表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本。参考图2中的示例,该示例中包括3个大版本V1.0、V2.0、V3.0(即在第一层级进行了升级的版本)及在大版本下各自生命周期的衍生小版本(例如V1.1,V2.1,V2.2等),其中,V1.0为所有版本的原始版本。各相邻升级版本之间的diff-表示从一个版本演进到相邻升级版本的变更,每一个变更中均包括至少一个元变更。元变更表示数据库升级时对数据库中表单进行的单步操作,举例来说,元变更包括但不限于新增一个数据表、在数据表中插入一行数据、在数据表中插入一列数据、删除数据表中的一行数据、删除数据表中的一列数据等。回撤操作表示从当前版本退回至前一相邻版本。图2的虚线处标明了一个自V1.1到V2.2的未定义升级,包括了四个版本的变更diff-10-11、diff-10-20、diff-20-21和diff-21-22。为了自动处理这类非直接变更,将每次变更(如diff-10-11)定义为多个“元变更”的集合,由此,所有的版本演进都可进行原子化的拆解。
在一个由微服务构成的大型业务系统之中,不同的微服务一般被设计为分别处理不同类型的任务,于是各微服务之间根据其具体业务的不同,又有着不同的数据模型依赖关系,而服务之间往往并不是严格相互依赖的。本申请该实施例中采用了模块化的数据模型管理逻辑:对于不同微服务分别使用不同库的情形,库之间是自然分离的,无需赘述;对于不同服务依赖相同库的,通过一个微型的“依赖关系”配置语言(或曰微语言)来定义其版本依赖和变更行为,即根据多个服务的不同依赖情况,分别定义其依赖处置方案,以确定升级工具需要忽略变更、全量变更还是以更细的粒度执行部分变更。如此一来,数据模型跟随服务一起实现了模块化,在产品发布需要部署时,可以轻松实现“部分服务部署”,允许关闭和禁用一些组件,升级工具能够自动处理数据依赖问题,而不需要针对不同的定制需求来为不同的数据模型管理(指部署与变更等)提供各自的专有方案。
S204、获取预设的数据库当前版本。数据库当前版本可能为原始版本,也可能为非原始版本,根据不同情况下的当前版本,需要区别处理。
S206、根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径。其中,所述原始版本为距离数据库当前版本和数据库目标版本最近的公共历史版本。以图2中示出的数据库版本升级推导示意图为例,如果数据库当前版本为V1.1,数据库目标版本为V2.2,则数据库原始版本为V1.0。值得注意的是,图2中仅示出了数据库版本升级过程中可能的部分阶段,在版本V1.0的前面,可能还包括更早期的历史版本,直至“祖先”版本,即最初始的版本。该步骤S206中具体包括如下步骤:
S2061、若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径。升级路径的获取可以采用如下方法:
S20611、获取从数据库原始版本X0.Y0至数据库目标版本XC.YD的所有路径,所述路径包括以数据库原始版本X0.Y0为起点,数据库目标版本XC.YD为终点,所经历的所有版本的有序集合,其中每一个版本都为前一个版本的相邻升级版本;
S20612、在所获取的所有路径中选择最短路径作为升级路径。
其中,所述数据库的版本包括X0.Y0……XC.YD……XM.YN,M>C>0,N>D>0;X0……XC……XM分别表示数据库在第一层级进行升级的版本,Y0……YD……YN分别表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本;所述相邻升级版本包括在第一层级进行升级的版本和在第一层级的生命周期中进行衍生升级的版本。根据某些可选的实施例,可以采用“有向图”来描述所有版本和版本间的升级关系。所谓有向图,是由若干节点与连接节点的有向线段构成的结构。将所有“版本”抽象为一个个“节点”,将版本间的升级关系抽象为“线段”。例如对于X0.Y0和X1.Y0两个版本,可将之描述为两个节点,且存在线段(X0.Y0->X1.Y1;C1)描述从X0.Y0到X1.Y1的升级过程,又存在(X1.Y1->X0.Y0;C2)描述从X1.Y1到X0.Y0的回撤过程,其中C1和C2分别表示这两个过程的“开销”。“开销”是用来辅助路径选取的。在一个由若干版本和若干升级关系构成的图中,从源版本到目标版本之间的升级路径往往不止一条,因此通过赋予其“开销”,可以分别计算各个路径的总开销,进而选取一个最小开销的路径,称之为“最短路径”。
S2062、若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径。其中,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径的过程包括如下步骤:
S20621、获取第一路径中涉及的第一元变更集合。第一路径是指从数据库原始版本至数据库当前版本的升级路径。
S20622、获取第二路径中涉及的第二元变更集合。第二路径是指从数据库原始版本至数据库目标版本的升级路径。
S20623、若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,则对所述第一路径中涉及互斥的元变更的版本进行回撤操作,并获得从回撤后的版本升级至数据库目标版本的升级路径。其中,互斥的元变更表示两种元变更操作为相互排斥的操作,例如,第一元变更集合中包括有删除数据表某一列数据的操作,第二元变更集合中包括有在该列数据表中增加数据的操作,则这两个元变更即为互斥的元变更。
S20624、若所述第一元变更集合与所述第二元变更集合中不存在互斥的元变更,则根据所述数据库目标版本获得从数据库当前版本升级至数据库目标版本的升级路径。该步骤中升级路径的获取与步骤S2061中的获取方法类似,在此不再赘述。
根据某些可选的实施例,若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更时,还可以采用处理函数对第一路径进行处理。本发明实施例的技术方案中,“元变更”作为一个升级过程中的最小变更单位,可选地指定以下元信息,一般不手动指定,自动根据实际变更内容推导。
(1)变更目标:可以为一个元变更添加多个变更目标,由字符串描述,例如“mydb.mytable.mycolumn”。需要注意的是该字段的内容没有明确的限定,但约定上以“库名-表名-列名”为准。
(2)变更依赖:每个变更可以指定其依赖项目,也由字符串描述,如“mydb.mytable”,该字段同样没有内容限定。
(3)提供与收回:变更可能提供或收回某种依赖。例如创建表可能提供“mydb.mytable”依赖,而删除表反之会收回该依赖。
(4)变更内容:实际发生的变更,这里指操作数据库变更的SQL语句。
对于一条已经确定的升级路径,其源版本和目标版本必然有一个公共的祖先版本,则该路径可从祖先版本处切分为“源-祖先”的回撤路径和“祖先-目标”的升级路径,分别定义其为第一、第二路径,由此可得到两个有序变更集合。
当第一变更集合与第二变更集合中存在相同的“变更目标”时,根据其“变更内容”是否一致判断其属于“相同”变更还是“互斥”变更。对于相同变更,不需要额外操作;而对于互斥变更则应进行解冲突处理。
默认的解冲突方法是对第一元变更集合引入的冲突进行回撤。也可以根据元变更属性编写特定的“条件-反应”规则,当“变更目标”、“变更依赖”、“变更内容”等满足某个分支的条件时,执行对应的某个操作;任何条件分支都不满足时,依旧执行默认的回撤操作。
应用场景举例:
例一:当某个依赖缺失时,执行特定的语句修复该依赖。例如某个依赖的数据表不存在,触发条件反应函数,执行语句创建该表并注入一些初始化数据。
例二:两个元变更具有公共变更目标“mydb.mytable.mycolumn”,又满足“第一元变更具有目标‘mydb.mytable.mycolumn.mymodification’”的条件,则执行预设的列变更语句来更新列,而不是进行回撤导致数据丢失。
本发明实施例中,升级工具被设计为服务注册式的,当特定的微服务实例通过注册行为来请求一个业务中间件资源时,会携带有其版本信息元数据;升级服务则执行一遍状态自检,确定当前各中间件的数据版本、当前已注册服务与中间件之间的活动会话,再根据其各自的依赖关系细项配置决定如何对当前中间件服务执行变更,从而使之满足新注册服务的会话请求。这么做能够使升级服务本身成为版本无关的服务,不需要在版本发布时为每个发布包单独定制版本配置。
根据某些可选的实施例,本发明实施例还可以包括升级服务维护,升级服务维护两部分连接:一边监控业务中间件的状态,另一边维护业务服务的注册状态。业务服务会向升级服务注册自身的版本依赖关系,告知其运行环境需求明细;升级服务则进行中间件自检验证,进而决定是否为其准备数据需求,并响应成功或失败的结果。如果发生了依赖冲突,则默认依照先后原则决定拒留,或根据预先定义的拒留规则决定以何种方式、向哪个目标版本执行演进。本发明的实施例,还提供了一种数据库升级装置,图3中示出了该数据库升级装置的构成框图,如图3所示,该装置包括:
数据库目标版本获取模块301,用于获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;
数据库当前版本获取模块302,用于获取预设的数据库当前版本;
升级路径获取模块303,用于根据所述数据库当前版本和数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径。
其中,所述升级路径获取模块303,根据所述数据库当前版本和数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径,包括:
若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径;
若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径。
本发明上述实施例提供的数据库升级装置中各个模块实现其功能的具体过程与本发明上述实施例提供的数据库升级方法的各步骤相同,因此,此处将省略其重复描述。
本发明的实施例,还提供了一种电子设备,图4所示为本发明一实施例提供的电子设备的结构示意图。如图4所示,该电子设备包括:一个或多个处理器401和存储器402;以及存储在存储器402中的计算机程序指令,计算机程序指令在被处理器401运行时使得处理器401执行如上述任一实施例的数据库升级方法。处理器401可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器402可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器401可以运行程序指令,以实现上文的本发明的各个实施例的数据库升级方法中的步骤以及/或者其他期望的功能。
在一些实施例中,电子设备还可以包括:输入装置403和输出装置404,这些组件通过总线系统和/或其他形式的连接机构(图4中未示出)互连。例如,在该电子设备是单机设备时,该输入装置403可以是通信网络连接器,用于从外部的可移动设备接收所采集的输入信号。此外,该输入设备403还可以包括例如键盘、鼠标、麦克风等。该输出装置404可以向外部输出各种信息,例如可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等。
除了上述方法和设备以外,本发明的实施例还可以是计算机程序产品,包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行如上述任一实施例的数据库升级方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本发明实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本发明的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本发明的各个实施例的数据库升级方法中的步骤。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
应当理解的是,本发明实施例中的处理器可以为中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
综上所述,本发明实施例涉及一种数据库升级方法及装置,所述方法包括:获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;获取预设的数据库当前版本;根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径。本发明实施例提供的技术方案,针对微服务产品在首次打包发布和后续发布升级补丁时长期面临多版本并行的状况,以及其版本变更图往往不是线性的,而是一个有复杂路径关系的网状结构(有向图)的情况,通过版本化、模块化与注册时服务相结合的方式进行数据库的升级,明显减轻了人工维护的工作量,同时也极大降低了数据升级方面的非预期的故障情况,使得数据模型维护变得更加灵活轻量,服务的新增、移除和数据的变更都可以通过调整配置轻松实现。此外,由于服务配置的增减极为方便,可以轻松实现后期的扩展。
应当理解的是,以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。

Claims (8)

1.一种数据库升级方法,其特征在于,包括:
获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;
获取预设的数据库当前版本;
根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径;其中,若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径;若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径;
所述原始版本为距离数据库当前版本和数据库目标版本最近的公共历史版本。
2.根据权利要求1所述的方法,其特征在于,根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径,包括:
获取从数据库原始版本X0.Y0至数据库目标版本XC.YD的所有路径,所述路径包括以数据库原始版本X0.Y0为起点,数据库目标版本XC.YD为终点,所经历的所有版本的有序集合,其中每一个版本都为前一个版本的相邻升级版本;
在所获取的所有路径中选择最短路径作为升级路径;
其中,所述数据库的版本包括X0.Y0……XC.YD……XM.YN,M>C>0,N>D>0;X0……XC……XM分别表示数据库在第一层级进行升级的版本,Y0……YD……YN分别表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本;
所述相邻升级版本包括在第一层级进行升级的版本和在第一层级的生命周期中进行衍生升级的版本。
3.根据权利要求2所述的方法,其特征在于,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,包括:
获取第一路径中涉及的第一元变更集合;
获取第二路径中涉及的第二元变更集合;
若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,则对所述第一路径中涉及互斥的元变更的版本进行回撤操作,并获得从回撤后的版本升级至数据库目标版本的升级路径;
若所述第一元变更集合与所述第二元变更集合中不存在互斥的元变更,则根据所述数据库目标版本获得从数据库当前版本升级至数据库目标版本的升级路径;
其中,元变更表示数据库升级时对数据库中表单进行的单步操作,回撤操作表示从当前版本退回至前一相邻版本。
4.根据权利要求3所述的方法,其特征在于,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,还包括:
若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,采用处理函数对第一路径进行处理。
5.根据权利要求2-4中任意一项所述的方法,其特征在于,在第一层级进行的升级和在第一层级的生命周期中进行的衍生升级均包括至少一个元变更。
6.一种数据库升级装置,其特征在于,包括:
数据库目标版本获取模块,用于获取微服务注册时携带的元信息,并依据该元信息获得该微服务对应的数据库目标版本;
数据库当前版本获取模块,用于获取预设的数据库当前版本;
升级路径获取模块,用于根据所述数据库当前版本是否为数据库原始版本,以及数据库当前版本与数据库目标版本的关系获得从数据库当前版本升级至数据库目标版本的升级路径;其中,若该数据库当前版本为数据库原始版本,则根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径;若该数据库当前版本不为数据库原始版本,则获取数据库原始版本至数据库当前版本的第一路径和数据库原始版本至数据库目标版本的第二路径,并对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径;
其中,所述原始版本为距离数据库当前版本和数据库目标版本最近的公共历史版本。
7.根据权利要求6所述的装置,其特征在于,所述升级路径获取模块,根据所述数据库目标版本获得从数据库原始版本升级至数据库目标版本的升级路径,包括:
获取从数据库原始版本X0.Y0至数据库目标版本XC.YD的所有路径,所述路径包括以数据库原始版本X0.Y0为起点,数据库目标版本XC.YD为终点,所经历的所有版本的有序集合,其中每一个版本都为前一个版本的相邻升级版本;
在所获取的所有路径中选择最短路径作为升级路径;
其中,所述数据库的版本包括X0.Y0……XC.YD……XM.YN,M>C>0,N>D>0;X0……XC……XM分别表示数据库在第一层级进行升级的版本,Y0……YD……YN分别表示数据库在各自对应的第一层级的生命周期中进行升级的衍生版本;
所述相邻升级版本包括在第一层级进行升级的版本和在第一层级的生命周期中进行衍生升级的版本。
8.根据权利要求7所述的装置,其特征在于,所述升级路径获取模块,对所述第一路径和第二路径进行对照,依据对照结果确定从数据库当前版本升级至数据库目标版本的升级路径,包括:
获取第一路径中涉及的第一元变更集合;
获取第二路径中涉及的第二元变更集合;
若所述第一元变更集合与所述第二元变更集合中存在互斥的元变更,则对所述第一路径中涉及互斥的元变更的版本进行回撤操作,并获得从回撤后的版本升级至数据库目标版本的升级路径;
若所述第一元变更集合与所述第二元变更集合中不存在互斥的元变更,则根据所述数据库目标版本获得从数据库当前版本升级至数据库目标版本的升级路径;
其中,元变更表示数据库升级时对数据库中表单进行的单步操作,回撤操作表示从当前版本退回至前一相邻版本。
CN202310204412.6A 2023-03-06 2023-03-06 数据库升级方法及装置 Active CN116401262B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310204412.6A CN116401262B (zh) 2023-03-06 2023-03-06 数据库升级方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310204412.6A CN116401262B (zh) 2023-03-06 2023-03-06 数据库升级方法及装置

Publications (2)

Publication Number Publication Date
CN116401262A CN116401262A (zh) 2023-07-07
CN116401262B true CN116401262B (zh) 2024-02-02

Family

ID=87016880

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310204412.6A Active CN116401262B (zh) 2023-03-06 2023-03-06 数据库升级方法及装置

Country Status (1)

Country Link
CN (1) CN116401262B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598059B1 (en) * 2000-04-22 2003-07-22 Oracle Corp. System and method of identifying and resolving conflicts among versions of a database table
CN106886410A (zh) * 2017-01-06 2017-06-23 深圳云天励飞技术有限公司 一种软件版本管理系统
CN111708764A (zh) * 2020-06-22 2020-09-25 深圳前海微众银行股份有限公司 一种数据库变更版本的控制方法及装置
CN111782235A (zh) * 2019-09-27 2020-10-16 北京沃东天骏信息技术有限公司 一种数据升级、查询方法和装置
CN113505114A (zh) * 2021-06-29 2021-10-15 清华大学 数据库的多版本并发控制方法及数据库系统
CN114610366A (zh) * 2022-03-24 2022-06-10 上海商米科技集团股份有限公司 一种差分包升级方法、系统、智能电子设备和存储介质
CN114785685A (zh) * 2022-04-12 2022-07-22 北京奕斯伟计算技术有限公司 软件差分升级方法、装置、电子设备及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527460B2 (en) * 2010-02-19 2013-09-03 Jason Laurence Noble Method for carrying out database version control

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598059B1 (en) * 2000-04-22 2003-07-22 Oracle Corp. System and method of identifying and resolving conflicts among versions of a database table
CN106886410A (zh) * 2017-01-06 2017-06-23 深圳云天励飞技术有限公司 一种软件版本管理系统
CN111782235A (zh) * 2019-09-27 2020-10-16 北京沃东天骏信息技术有限公司 一种数据升级、查询方法和装置
CN111708764A (zh) * 2020-06-22 2020-09-25 深圳前海微众银行股份有限公司 一种数据库变更版本的控制方法及装置
CN113505114A (zh) * 2021-06-29 2021-10-15 清华大学 数据库的多版本并发控制方法及数据库系统
CN114610366A (zh) * 2022-03-24 2022-06-10 上海商米科技集团股份有限公司 一种差分包升级方法、系统、智能电子设备和存储介质
CN114785685A (zh) * 2022-04-12 2022-07-22 北京奕斯伟计算技术有限公司 软件差分升级方法、装置、电子设备及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Multi-clock Snapshot Isolation Concurrency Control for NVM Database;Liu X et al;《Tsinghua Science and Technology》;第27卷(第6期);第925-938页 *
动态多版本并行控制技术在主存数据库中的实现;夏英 等;《计算机应用研究》;第19卷(第5期);第105-108页 *

Also Published As

Publication number Publication date
CN116401262A (zh) 2023-07-07

Similar Documents

Publication Publication Date Title
US11561956B2 (en) Key pattern management in multi-tenancy database systems
US10430204B2 (en) System and method for cloud provisioning and application deployment
US9996341B2 (en) Infrastructure for the automation of the assembly of schema maintenance scripts
US10922067B1 (en) System and method for installing, updating and uninstalling applications
US7774772B2 (en) Method and apparatus to perform an application software migration
EP3477488A1 (en) Deploying changes to key patterns in multi-tenancy database systems
US20190129986A1 (en) Transitioning between system sharing types in multi-tenancy database systems
US20190129991A1 (en) Exchanging shared containers and adapting tenants in multi-tenancy database systems
EP3477500A1 (en) Deploying changes in a multi-tenancy database system
CN113396393A (zh) 多租户paas组件的动态自动配置
US8381176B1 (en) Software build orchestration framework
US10901804B2 (en) Apparatus and method to select services for executing a user program based on a code pattern included therein
US9542173B2 (en) Dependency handling for software extensions
US11055078B2 (en) Systems and methods for deploying software products to environments
US10338910B2 (en) Multi-tenant upgrading
US11099837B2 (en) Providing build avoidance without requiring local source code
JP7373587B2 (ja) Dbmsにおけるサービス管理
CN116401262B (zh) 数据库升级方法及装置
US10394842B1 (en) Boundary-based data conversion
US8805895B2 (en) Adaptive methodology for updating solution building block architectures and designs
US11775291B2 (en) Automated updates to code deployment pipelines
KR101866086B1 (ko) 재사용 기반의 가상 클러스터 구축 방법 및 장치
US8812458B2 (en) Adaptive methodology for updating solution building block architectures and associated tooling
US20050108279A1 (en) Method and dynamic system for the mangement and production of technical documentation in a database

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