CN115774754A - 基于分布式事务的元数据管理方法、装置、设备及介质 - Google Patents
基于分布式事务的元数据管理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115774754A CN115774754A CN202211358907.6A CN202211358907A CN115774754A CN 115774754 A CN115774754 A CN 115774754A CN 202211358907 A CN202211358907 A CN 202211358907A CN 115774754 A CN115774754 A CN 115774754A
- Authority
- CN
- China
- Prior art keywords
- transaction
- database
- distributed
- callback
- database management
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供一种基于分布式事务的元数据管理方法,应用于分布式数据库中的任一执行分布式事务的目标数据库节点上的事务管理器,包括:接收分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;其中,数据库管理程序分布式的安装在分布式数据库中的各个数据库节点上;事务注册请求包括操作元数据;响应于事务注册请求,为数据库管理程序创建用于对非结构化的操作元数据进行管理的分布式事务,并执行分布式事务;响应于分布式事务执行成功,将非结构化的操作元数据作为回调参数,发起针对目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于操作元数据在目标数据库节点上执行对应的数据库管理操作。
Description
技术领域
本说明书涉及数据库技术领域,尤其涉及基于分布式事务的元数据管理方法、装置、设备及介质。
背景技术
分布式系统是指其组件分布在网络上,组件之间通过传递消息进行通信和动作协调的系统。它的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。
随着技术的发展,各个行业所产生的数据量呈爆炸式增长,动辄就达到数百TB或者PB的级别,已经远远超过了传统单机数据库的处理能力,因此,分布式数据库应运而生。
分布式数据库包括多个互连的数据库,并通过分布式数据库管理系统进行管理。分布式数据库中的各个数据库节点在物理上分布在不同的物理位置,并通过网络互联,但在逻辑上是一个整体,并由分布式数据库管理系统集中管理。不同的节点分布可以跨不同的机房、城市甚至国家。
发明内容
有鉴于此,本说明书一个或多个实施例提供基于分布式事务的元数据管理方法、装置、设备及介质,以解决相关技术中存在的问题。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书实施例的第一方面,提供一种基于分布式事务的元数据管理方法,应用于分布式数据库中的任一执行所述分布式事务的目标数据库节点上的事务管理器,所述方法包括:
接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;其中,所述数据库管理程序分布式的安装在所述分布式数据库中的各个数据库节点上;所述事务注册请求包括所述数据库管理程序在所述分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据;
响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务;其中,所述分布式事务包括在所述分布式数据中的多个数据库节点上分布式执行的事务;
响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
根据本说明书实施例的第二方面,提供一种基于分布式事务的元数据管理装置,应用于分布式数据库中的任一执行所述分布式事务的目标数据库节点上的事务管理器,所述装置包括:
接收模块,接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;其中,所述数据库管理程序分布式的安装在所述分布式数据库中的各个数据库节点上;所述事务注册请求包括所述数据库管理程序在所述分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据;
事务模块,响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务;其中,所述分布式事务包括在所述分布式数据中的多个数据库节点上分布式执行的事务;
回调模块,响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
根据本说明书实施例的第三方面,提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述方法。
根据本说明书实施例的第四方面,提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。
本说明书的实施例提供的技术方案可以包括以下有益效果:
通过以上技术方案,可以通过为分布式安装在分布式数据库中的数据库管理程序发送的事务注册请求中的非结构化的操作元数据,创建用于管理该操作元数据的分布式事务,并通过成功执行分布式事务时,回调目标数据库节点上的数据库管理程序,以触发数据库管理程序基于操作元数据的数据库管理操作。在上述过程中,通过分布式事务来管理由数据管理程序在分布式数据库内部产生的非结构化的操作元数据,可以降低数据管理程序针对复杂多样的非结构化的操作元数据的管理难度,避免由数据管理程序直接管理复杂多样的非结构化的操作元数据时对分布式数据库的性能造成影响。
附图说明
图1为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理方法的流程图;
图2为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理方法的示意图;
图3为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理方法的多方交互图;
图4为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理装置所在电子设备的结构示意图;
图5为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
事务是一个不可分割的工作逻辑单元,事务是在数据库上按照一定的逻辑顺序执行的任务序列。简单来说就是把要执行的操作统一化,要么所有操作都成功,要么都不成功,如果执行中有某一项操作失败,其之前所有的操作都回滚到未执行这一系列操作之前的状态,即回滚到原始状态。
其中,事务通常具有原子性(Atomic)、一致性(Consistency)、隔离性和(Isolation)持久性(Durability)四种属性,简称ACID。
原子性是指,事务中包括的操作要么都做,要么都不做。
一致性是指,在事务执行前后,数据库的一致性约束没有被破坏,也就是不会存在中间状态的数据。
隔离性是指,一个事务的执行不能被其他事务干扰,事务内部的数据对于其他事务来说是隔离的。
持久性是指,事务完成之后,该事务对数据的更改会持久到数据库,且不会被回滚。
通过事务可以保证我们某一个业务逻辑对数据库的正确操作,比如,如果中间有一个SQL操作未完成,或者程序出现错误,则会按照指定的事务规则进行回滚,以此来保证我们数据的安全性和完整性。
而分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,简单来说就是在分布式系统中实现事务。由于分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如用户注册送积分事务、创建订单减库存事务,银行转账事务等都是分布式事务。
以跨数据库实例为例,用户信息和订单信息分别在两个MySQL实例存储,用户管理系统删除用户信息,需要分别删除用户信息及用户的订单信息,由于数据分布在不同的数据实例,需要通过不同的数据库链接去操作数据,此时,由于单体系统访问多个数据库实例当单体系统需要访问多个数据库实例,就产生了分布式事务。
其中,在分布式事务场景中不会同时具备一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)三个特性,简称CAP,最多只能同时满足:一致性、可用性和分区容忍性这三项中的两项。
一致性是指,写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上,从任意节点读取到的数据都是最新的状态。
可用性是指,任何事务操作都可以得到响应结果,且不会出现响应超时或响应错误。
分区容忍性是指,会出现由于网络问题而导致分布式系统中位于不同网络分区的节点之间通信失败时仍可对外提供服务。
通常,数据库在运行过程中,除了需要处理和保存用户数据之外,还会产生各种元数据,根据元数据描述对象的不同,可以划分为三类元数据:业务元数据、技术元数据和操作元数据。业务元数据描述数据的业务含义、业务规则等;技术元数据是对数据的结构化,方便计算机或数据库对数据进行识别、存储、传输和交换;操作元数据描述数据的操作属性,包括管理部门、管理责任人等。
值得说明的是,上述元数据可能是结构化数据,也可能是非结构化数据。
其中,结构化数据是指由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据。而非结构化数据是指数据结构不规则或不完整,没有任何预定义的数据模型,不方便用二维逻辑表来表现的数据,例如图片、HTML、视频、音频等。
对于结构化元数据,在数据库中的管理方法与用户数据类似,可以通过创建与结构化元数据对应的结构清晰的表进行存储,并支持SQL语句访问,因此可以将针对结构化元数据的执行通过分布式事务来执行。
而对于非结构化元数据,由于无法用表结构来描述,通常需要采用不同的管理方法,不同的结构化元数据的管理方式千差万别,这使得管理成本越来越高。并且,随着元数据的种类和数量越来越多,复杂多样的非结构化元数据给管理系统带来了许多难题,比如由于数据库内的各个模块需要通过一些接口来访问非结构化元数据,这就导致模块之间的交互变得复杂,对系统的稳定性带来挑战。
有鉴于此,本说明书提供一种通过分布式事务来管理由数据管理程序在分布式数据库内部产生的非结构化的操作元数据,可以降低数据管理程序针对复杂多样的非结构化的操作元数据的管理难度,避免由数据管理程序直接管理复杂多样的非结构化的操作元数据时对分布式数据库的性能造成影响的技术方案。
在实现时,可以接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;其中,所述数据库管理程序分布式的安装在所述分布式数据库中的各个数据库节点上;所述事务注册请求包括所述数据库管理程序在所述分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据;
然后,可以响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务;其中,所述分布式事务包括在所述分布式数据中的多个数据库节点上分布式执行的事务;
之后,可以响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
通过以上技术方案,可以通过为分布式安装在分布式数据库中的数据库管理程序发送的事务注册请求中的非结构化的操作元数据,创建用于管理该操作元数据的分布式事务,并通过成功执行分布式事务时,回调目标数据库节点上的数据库管理程序,以触发数据库管理程序基于操作元数据的数据库管理操作。在上述过程中,通过分布式事务来管理由数据管理程序在分布式数据库内部产生的非结构化的操作元数据,可以降低数据管理程序针对复杂多样的非结构化的操作元数据的管理难度,避免由数据管理程序直接管理复杂多样的非结构化的操作元数据时对分布式数据库的性能造成影响。
下面结合附图对本说明书的基于分布式事务的元数据管理方法进行详细说明。
请参见图1,图1为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理方法的流程图,应用于分布式数据库中的任一执行所述分布式事务的目标数据库节点上的事务管理器,如图1所示,所述方法包括如下的执行步骤:
步骤101,接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;
其中,所述数据库管理程序分布式的安装在所述分布式数据库中的各个数据库节点上;所述事务注册请求包括所述数据库管理程序在所述分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据;
步骤102,响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务;
其中,所述分布式事务包括在所述分布式数据中的多个数据库节点上分布式执行的事务;
步骤103,响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
请参见图2,图2为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理方法的示意图。如图2所示,分布式数据库可以由数据库节点1-数据库节点4组成,每个数据库节点本地都包括由本地的事务管理器和本地的数据库管理程序,比如数据库节点1中包括了事务管理器1和数据库管理程序1。
需要说明的是,数据库管理程序分布式的安装在分布式数据库中的各个数据库节点上。上述数据库管理程序可以为相同的程序,通过分布式安装在分布式数据库中的各个数据库节点上实现彼此隔离,各自执行对应的数据库管理操作。
在一个例子中,上述分布式数据库可以是OceanBase数据库。
在本实施例中,目标数据库节点上的事务管理器可以接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求。
举例来说,如图2所示,数据库节点1可以发起事务注册请求,而数据库节点2-数据库节点4可以作为目标数据库节点,通过本地的事务管理器来接收该事务注册请求。
其中,根据实际需求的不同,目标数据库节点可以是一个,也可以是多个,本说明书中对此不做限定。
值得说明的是,上述事务注册请求可以包括数据库管理程序在分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据。
在一个例子中,每个数据库节点的数据库管理程序可以用于执行待执行的数据库管理操作,并且数据库管理程序需要根据事务注册请求中携带的非结构化的操作元数据来执行数据库管理操作。
在又一个例子中,上述非结构化的操作元数据,可以通过序列化的方式,将非结构化的操作元数据抽象为字节流,并携带在事务注册请求中,使得字节流可以基于事务的写入缓存到事务上下文信息的内存结构中,从而统一了非结构化的操作元数据的存储形式,便于非结构化的操作元数据的存储。
值得说明的是,在后续步骤103中,可以通过对字节流进行反序列化得到原始的非结构化的操作元数据。
在本实施例中,可以响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务。
举例来说,以图2为例,事务管理器2可以响应于数据库管理程序1发送的事务注册请求,为数据库管理程序1创建用于对非结构化的操作元数据进行管理的分布式事务,并执行分布式事务。
需要说明的是,由于分布式事务包括在分布式数据中的多个数据库节点上分布式执行的事务,因此,作为目标数据库节点上的事务管理器,事务管理器3和事务管理器4同样也会响应于数据库管理程序1发送的事务注册请求,为数据库管理程序1创建用于对非结构化的操作元数据进行管理的分布式事务,并执行分布式事务。
值得说明的是,由于操作元数据是非结构化的,所以没法像结构化的元数据那样直接通过分布式事务来执行针对结构化的元数据的操作,因此可以通过为非结构化的操作元数据编排出用于对非结构化的操作元数据进行管理的分布式事务。
在一个例子中,可以通过为非结构化的操作元数据设计出对应的分布式事务,并通过划分分布式事务的不同阶段,使得事务管理器在执行事务时,可以基于分布式事务的不同阶段,驱动目标数据库节点上的数据库管理程序执行与事务阶段对应的针对操作元数据的数据库管理操作。
在本实施例中,可以响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
举例来说,对于图2中的每个目标数据库节点上的事务管理器来说,本地事务管理器可以响应于分布式事务执行成功,将非结构化的操作元数据作为回调参数,发起针对本地数据库管理程序的回调,以触发本地数据库管理程序基于操作元数据在本地数据库节点上执行对应的数据库管理操作。
在示出的一种实施方式中,所述分布式事务包括多个事务执行阶段;所述数据库管理程序包括与所述多个事务执行阶段分别对应的多个回调函数;其中,不同的事务执行阶段分别对应不同的回调函数;不同的回调函数分别关联不同的数据库管理操作;
进一步的,可以响应于所述分布式事务中的任一目标事务执行阶段执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述目标事务执行阶段对应的目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述目标回调函数关联的数据库管理操作。
举例来说,可以为分布式事务划分多个事务执行阶段,不同事务执行阶段分别对应了数据库管理程序中包括的不同回调函数,这些不同的回调函数分别关联不同的数据库管理操作,从而可以在不同的事务执行阶段,根据与当前阶段对应的回调函数,执行该回调函数关联的数据库管理操作。
继续举例,以图2中的事务管理器2为例,事务管理器2可以响应于分布式事务中的任一目标事务执行阶段执行成功,将非结构化的操作元数据作为回调参数,发起针对本地数据库节点,即数据库节点2上的数据库管理程序2中与目标事务执行阶段对应的目标回调函数的回调,从而触发数据库管理程序2基于操作元数据,在数据库节点2上执行与目标回调函数关联的数据库管理操作。
接下来请参见图3,图3为本说明书一示例性实施例提供的一种基于分布式事务的元数据管理方法的多方交互图。如图3所示,所述分布式事务可以划分多个事务执行阶段,包括:事务注册阶段、redo日志生成阶段以及事务提交阶段。在图3中,目标数据库节点为目标数据库节点A和目标数据库节点B,并且目标数据库节点A还存在由副本节点A1。当然,目标数据库节点和副本节点都可以有多个,图3中仅为示意。
在示出的一种实施方式中,所述分布式事务包括事务注册阶段;与所述事务注册阶段对应的第一回调函数所关联的数据库管理操作,包括与所述操作元数据对应的基础管理操作;
进一步的,与分布式事务的事务注册阶段对应的事务操作,包括:建立用于缓存于所述分布式事务对应的事务上下文信息的内存结构,并将所述非结构化的操作元数据缓存到所述内存结构中;
那么在执行上述步骤103时,可以响应于将所述非结构化的操作元数据成功缓存到所述内存结构,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述事务注册阶段对应的第一目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第一回调函数关联的基础管理操作。
举例来说,如图3所示,以目标数据库节点A为例,事务注册阶段包括以下执行步骤:
S301,接收事务注册请求。
其中,事务注册请求包括数据库管理程序在分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据。
值得说明的是,对于目标数据库节点B的处理流程与目标数据库节点A类似,并且通过参考对于目标数据库节点A的相关描述,可以清楚的了解目标数据库节点B的处理流程,故目标数据库节点B的处理流程未在图3中示出。
S302,响应于事务注册请求,为数据库管理程序创建分布式事务。
S303,执行与事务注册阶段对应的事务操作,事务管理器A可以建立用于缓存于分布式事务对应的事务上下文信息的内存结构,并将非结构化的操作元数据缓存到内存结构中。
S304,事务管理器A可以响应于将非结构化的操作元数据成功缓存到内存结构,将内存结构中缓存的非结构化的操作元数据作为回调参数,发起针对数据库管理程序A中与事务注册阶段对应的第一目标回调函数的回调。
在示出的一种实施方式中,可以将所述非结构化的操作元数据在所述内存结构中的内存地址作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调。
例如,可以将非结构化的操作元数据在内存结构中的内存地址作为回调参数,发起针对目标数据库节点上的数据库管理程序的回调,使得数据库管理程序无需存储非结构化的操作元数据,一方面,可以无需由数据库管理程序承担对非结构化的操作元数据的存储和恢复的责任,避免了增加系统复杂性,另一方面,通过传递内存地址,可以节省资源的开销。
S305,数据库管理程序A基于操作元数据在目标数据库节点A上执行与第一回调函数关联的基础管理操作。
在示出的一种实施方式中,所述操作元数据包括与在所述分布式数据库中的多个数据库节点上创建数据表的数据管理操作对应的操作元数据;
所述基础管理操作,包括:与在所述分布式数据库中创建数据表;
所述第一数据库管理操作,包括:将生成的redo日志的标识信息添加至创建的数据表中;
所述第二数据库管理操作,包括:将创建的数据表的状态切换为可见状态。
举例来说,以创建数据表为例,以下简称建表,上述操作元数据可以是与在分布式数据库中的多个数据库节点上创建数据表的数据管理操作对应的操作元数据,上述创建数据表的数据管理操作可以由目标数据库节点上的数据库管理程序执行,比如该数据库管理程序可以是DDL模块(Data Definition Language,数据库模式定义语言)。
在上述步骤S305中,上述第一目标回调函数可以是用于创建数据表的函数,事务管理器A可以发起针对该第一目标回调函数的回调,触发数据库管理程序A基于操作元数据执行与第一回调函数关联的创建数据表的操作,从而在目标数据库节点A中创建数据表。
S306,数据管理程序A返回关于执行第一回调函数关联的基础管理操作的执行结果给事务管理器A。
其中,如果执行完成,事务管理器可以继续执行事务注册阶段之后的阶段。
在示出的一种实施方式中,所述分布式事务还包括在事务注册阶段之后执行的redo日志生成阶段;与所述redo日志生成阶段对应的第二回调函数所关联的数据库管理操作,包括将生成的redo日志的标识信息与执行所述基础管理操作得到的操作结果进行关联保存的第一数据库管理操作;
进一步的,与所述分布式事务的事务注册阶段对应的事务操作,包括:将所述内存结构中缓存的所述非结构化的操作元数据,写入为所述分布式事务生成的redo日志;
那么在执行上述步骤103时,可以响应于将所述内存结构中缓存的所述非结构化的操作元数据,成功写入为所述分布式事务生成的redo日志,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述redo日志生成阶段对应的第二目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第二回调函数关联的所述第一数据库管理操作。
举例来说,如图3所示,以事务管理器A为例,redo日志生成阶段包括以下执行步骤:
S307,事务管理器A可以响应于事务注册阶段执行完成,执行与redo日志生成阶段对应的事务操作,事务管理器A可以将内存结构中缓存的非结构化的操作元数据,写入为分布式事务生成的redo日志。
在示出的一种实施方式中,所述目标数据库节点包括至少一个副本设备;
值得说明的是,目标数据库节点可能存在多个副本,以图3为例,即使建表的目标是目标数据库节点A和目标数据库节点B,但由于目标数据库节点存在副本节点A1,因此要求副本节点A1上也需要完成建表。
进一步的,与所述分布式事务的事务注册阶段对应的事务操作,包括:
将所述内存结构中缓存的所述非结构化的操作元数据,写入为所述分布式事务生成的redo日志,并将生成的所述redo日志采用分布式一致性算法同步至其它的各个副本设备。
那么在副本设备上,同样需要进行分布式事务的执行,在执行上述步骤103时,各个副本设备可以响应于同步至本地的所述redo日志,获取所述redo日志中写入的所述非结构化的操作元数据,并将所述操作元数据作为回调参数,发起针对所述各个副本设备上的数据库管理程序中与所述事务注册阶段对应的第一目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述副本设备上执行与所述第一回调函数关联的基础管理操作。
举例来说,如图3所示,以事务管理器A和事务管理器A1为例,目标数据库节点的副本设备,即目标数据库节点A的副本节点A1,包括以下步骤:
S308,事务管理器A将上述redo日志采用分布式一致性算法同步至事务管理器A1;
在示出的一种实施方式中,所述分布式一致性算法包括paxos算法。
当然,本领域技术人员也可以采用其他一致性算法进行日志同步。
S309,事务管理器A1响应于同步至本地的redo日志,获取redo日志中写入的非结构化的操作元数据;
S310,事务管理器A1将操作元数据作为回调参数,发起针对数据库管理程序A1中与事务注册阶段对应的第一目标回调函数的回调;
S311,数据库管理程序A1基于操作元数据在副本节点A1上执行与第一回调函数关联的基础管理操作;
S312,数据管理程序A1返回关于执行第一回调函数关联的基础管理操作的执行结果给事务管理器A1。
需要说明的是,在事务管理器A1将redo同步至本地并写入之后,关于分布式事务的不同事务执行阶段的后续流程可以参考关于目标数据库节点A后续S313-S320的描述,在此不做赘述。
另外,上述步骤S308发生在步骤S307之后,但步骤S313并不用等待步骤S308-312执行完成,在目标数据库节点A中,步骤S307完成后就可以继续执行步骤S313。
S313,事务管理器A可以响应于操作元数据成功写入redo日志,将内存结构中缓存的非结构化的操作元数据作为回调参数,发起针对目标数据库节点A上的数据库管理程序A中与redo日志生成阶段对应的第二目标回调函数的回调。
继续以前述创建数据表为例,在上述步骤S313中,上述第二目标回调函数可以是用于将生成的redo日志的标识信息添加至创建的数据表中的函数,事务管理器A可以发起针对该第二目标回调函数的回调。
S314,数据库管理程序A基于操作元数据在目标数据库节点A上执行与第二回调函数关联的第一数据库管理操作。
继续以前述创建数据表为例,在上述步骤S314中,数据库管理程序A可以基于操作元数据执行与第二回调函数关联的将生成的redo日志的标识信息添加至创建的数据表中的操作,从而在创建的数据表中填入redo日志的标识信息。
在上述过程中,通过将redo日志的标识信息添加到创建的表里,可以将日志的标识信息和基础管理操作的执行结果进行关联保存,便于日志回收,防止产生过多的日志,导致资源的浪费。
S315,数据管理程序A返回关于执行第二回调函数关联的第一数据库管理操作的执行结果给事务管理器A。
其中,如果执行完成,事务管理器可以继续执行redo日志生成阶段之后的阶段。
在示出的一种实施方式中,所述分布式事务还包括在所述redo日志生成阶段之后执行的事务提交阶段;与所述事务提交阶段对应的第三回调函数所关联的数据库管理操作,包括对执行所述基础管理操作得到的操作结果进行状态更新的第二数据库管理操作;
进一步的,与所述分布式事务的事务提交阶段对应的事务操作,包括:响应于从所述分布式数据中的各个数据库节点上的事务管理器中选举出的全局事务管理器的事务提交指示,提交所述分布式事务;
那么在执行上述步骤103时,可以响应于所述分布式事务成功提交,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述事务提交阶段对应的第三目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第三回调函数关联的所述第二数据库管理操作。
举例来说,如图3所示,以事务管理器A为例,事务提交阶段包括以下执行步骤:
S316,接收从分布式数据中的各个数据库节点上的事务管理器中选举出的全局事务管理器的事务提交指示。
在一个例子中,选举出的全局事务管理器可以作为协调者,其他的事务管理器作为参与者,全局事务管理器可以通过二阶段提交协议(2PC,Two-phase commit protocol)来确定其他事务管理器是否满足提交条件,如果都满足,那么协调者可以向各个参与者发送事务提交指示以提交分布式事务。当然,全局事务管理器也可以采用其他提交协议,在此不做赘述。
S317,提交分布式事务。
其中,在图3中,以事务管理器A为全局事务管理器为例,事务管理器A可以向事务管理器B和事务管理器A1发送提交指示,当各个事务管理器都提交成功时,可以确定分布式事务提交成功。
S318,事务管理器A响应于分布式事务成功提交,将内存结构中缓存的非结构化的操作元数据作为回调参数,发起针对目标数据库节点上的数据库管理程序中与事务提交阶段对应的第三目标回调函数的回调。
继续以前述创建数据表为例,在上述步骤S317中,上述第三目标回调函数可以是用于将创建的数据表的状态切换为可见状态的函数,事务管理器A可以发起针对该第三目标回调函数的回调。
S319,数据库管理程序A基于操作元数据在目标数据库节点上执行与第三回调函数关联的第二数据库管理操作。
继续以前述创建数据表为例,在上述步骤S319中,数据库管理程序A可以基于操作元数据执行与第三回调函数关联的将创建的数据表的状态切换为可见状态的操作,将数据表的状态切换为可见状态。
S320,数据管理程序A返回关于执行第三回调函数关联的第二数据库管理操作的执行结果给事务管理器A。
至此,上述包括多个事务执行阶段的分布式事务处理结束。
基于上述图3所示的技术方案,可以为分布式事务划分不同的事务执行阶段,通过事务管理器进行不同阶段事务的执行,并在不同的事务执行阶段,调用数据库管理程序中与当前阶段对应的回调函数,驱动数据库管理程序来实现回调函数关联的不同数据库管理操作。在上述过程中,不仅可以降低数据管理程序针对复杂多样的非结构化的操作元数据的管理难度,避免由数据管理程序直接管理复杂多样的非结构化的操作元数据时对分布式数据库的性能造成影响,还可以基于分布式事务的回调原子的更新非结构化元数据,保证元数据在多个目标数据库节点上原子的生效,规范了元数据的管理流程。
在示出的一种实施方式中,还可以周期性的读取所述内存结构中缓存的所述非结构化的元数据;以及,对读取到的所述非结构化的元数据进行持久化存储。
例如,对于事务上下文信息的内存结构中缓存的非结构化的元数据,可以通过周期性的读取该非结构化的元数据,并存储到事务上下文表中进行持久化存储,以缓解内存压力,及时释放空间。
在示出的一种实施方式中,还可以响应于所述事务的执行发生异常,基于持久化存储的所述非结构化的元数据,对在所述redo日志生成阶段生成的redo日志进行恢复,并基于恢复的所述redo日志重新执行所述分布式事务。
值得说明的是,redo日志又叫重做日志,用于保证事务在遇到故障时也能执行成功,因此,可以通过恢复的redo日志来重新执行事务。
举例来说,当事务的执行发生异常,比如目标数据库节点发生故障时,可以基于事务上下文表中持久化存储的非结构化的元数据,对事务的redo日志生成阶段生成的redo日志进行恢复,然后再根据恢复出的redo日志重新执行分布式事务。因此,通过基于事务上下文表持久化存储元数据,可以保证元数据可以从任意状态恢复,简化了系统的复杂度。
通过以上技术方案,可以通过为分布式安装在分布式数据库中的数据库管理程序发送的事务注册请求中的非结构化的操作元数据,创建用于管理该操作元数据的分布式事务,并通过成功执行分布式事务时,回调目标数据库节点上的数据库管理程序,以触发数据库管理程序基于操作元数据的数据库管理操作。在上述过程中,通过分布式事务来管理由数据管理程序在分布式数据库内部产生的非结构化的操作元数据,可以降低数据管理程序针对复杂多样的非结构化的操作元数据的管理难度,避免由数据管理程序直接管理复杂多样的非结构化的操作元数据时对分布式数据库的性能造成影响。
在本说明书的示例性实施例中,还提供了一种能够实现上述方法的设备。
图4是一示例性实施例提供的一种设备的示意结构图。请参考图4,在硬件层面,该设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存409中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图5,在一软件实施方式中,提供了一种基于分布式事务的元数据管理装置500,应用于分布式数据库中的任一执行所述分布式事务的目标数据库节点上的事务管理器。如图5所示,所述装置500包括:
接收模块501,接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;其中,所述数据库管理程序分布式的安装在所述分布式数据库中的各个数据库节点上;所述事务注册请求包括所述数据库管理程序在所述分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据;
事务模块502,响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务;其中,所述分布式事务包括在所述分布式数据中的多个数据库节点上分布式执行的事务;
回调模块503,响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
可选的,所述分布式事务包括多个事务执行阶段;所述数据库管理程序包括与所述多个事务执行阶段分别对应的多个回调函数;其中,不同的事务执行阶段分别对应不同的回调函数;不同的回调函数分别关联不同的数据库管理操作;
所述回调模块503,进一步:
响应于所述分布式事务中的任一目标事务执行阶段执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述目标事务执行阶段对应的目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述目标回调函数关联的数据库管理操作。
可选的,所述分布式事务包括事务注册阶段;与所述事务注册阶段对应的第一回调函数所关联的数据库管理操作,包括与所述操作元数据对应的基础管理操作;
可选的,与所述分布式事务的事务注册阶段对应的事务操作,包括:
建立用于缓存于所述分布式事务对应的事务上下文信息的内存结构,并将所述非结构化的操作元数据缓存到所述内存结构中;
所述回调模块503,进一步:
响应于将所述非结构化的操作元数据成功缓存到所述内存结构,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述事务注册阶段对应的第一目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第一回调函数关联的基础管理操作。
可选的,所述分布式事务还包括在事务注册阶段之后执行的redo日志生成阶段;与所述redo日志生成阶段对应的第二回调函数所关联的数据库管理操作,包括将生成的redo日志的标识信息与执行所述基础管理操作得到的操作结果进行关联保存的第一数据库管理操作;
可选的,与所述分布式事务的事务注册阶段对应的事务操作,包括:
将所述内存结构中缓存的所述非结构化的操作元数据,写入为所述分布式事务生成的redo日志;
所述回调模块503,进一步:
响应于将所述内存结构中缓存的所述非结构化的操作元数据,成功写入为所述分布式事务生成的redo日志,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述redo日志生成阶段对应的第二目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第二回调函数关联的所述第一数据库管理操作。
可选的,所述目标数据库节点包括至少一个副本设备;
可选的,与所述分布式事务的事务注册阶段对应的事务操作,包括:
将所述内存结构中缓存的所述非结构化的操作元数据,写入为所述分布式事务生成的redo日志,并将生成的所述redo日志采用分布式一致性算法同步至其它的各个副本设备,以触发所述各个副本设备在响应于同步至本地的所述redo日志,获取所述redo日志中写入的所述非结构化的操作元数据,并将所述操作元数据作为回调参数,发起针对所述各个副本设备上的数据库管理程序中与所述事务注册阶段对应的第一目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述副本设备上执行与所述第一回调函数关联的基础管理操作。
可选的,所述分布式一致性算法包括paxos算法。
可选的,所述分布式事务还包括在所述redo日志生成阶段之后执行的事务提交阶段;与所述事务提交阶段对应的第三回调函数所关联的数据库管理操作,包括对执行所述基础管理操作得到的操作结果进行状态更新的第二数据库管理操作;
可选的,与所述分布式事务的事务提交阶段对应的事务操作,包括:
响应于从所述分布式数据中的各个数据库节点上的事务管理器中选举出的全局事务管理器的事务提交指示,提交所述分布式事务;
所述回调模块503,进一步:
响应于所述分布式事务成功提交,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述事务提交阶段对应的第三目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第三回调函数关联的所述第二数据库管理操作。
可选的,所述装置500还包括:
读取模块504(图中未示出),周期性的读取所述内存结构中缓存的所述非结构化的元数据;
存储模块505(图中未示出),对读取到的所述非结构化的元数据进行持久化存储。
可选的,所述装置500还包括:
恢复模块506(图中未示出),响应于所述事务的执行发生异常,基于持久化存储的所述非结构化的元数据,对在所述redo日志生成阶段生成的redo日志进行恢复,并基于恢复的所述redo日志重新执行所述分布式事务。
可选的,所述操作元数据包括与在所述分布式数据库中的多个数据库节点上创建数据表的数据管理操作对应的操作元数据;
所述基础管理操作,包括:与在所述分布式数据库中创建数据表;
所述第一数据库管理操作,包括:将生成的redo日志的标识信息添加至创建的数据表中;
所述第二数据库管理操作,包括:将创建的数据表的状态切换为可见状态。
可选的,所述回调模块503,进一步:
将所述非结构化的操作元数据在所述内存结构中的内存地址作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调。
上述装置500中各个模块的功能和作用的实现过程具体详见上述基于分布式事务的元数据管理方法中对应步骤的实现过程,相关之处参见方法实施方式的部分说明即可,在此不再赘述。
以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (14)
1.一种基于分布式事务的元数据管理方法,应用于分布式数据库中的任一执行所述分布式事务的目标数据库节点上的事务管理器,所述方法包括:
接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;其中,所述数据库管理程序分布式的安装在所述分布式数据库中的各个数据库节点上;所述事务注册请求包括所述数据库管理程序在所述分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据;
响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务;其中,所述分布式事务包括在所述分布式数据中的多个数据库节点上分布式执行的事务;
响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
2.根据权利要求1所述的方法,所述分布式事务包括多个事务执行阶段;所述数据库管理程序包括与所述多个事务执行阶段分别对应的多个回调函数;其中,不同的事务执行阶段分别对应不同的回调函数;不同的回调函数分别关联不同的数据库管理操作;
所述响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作,包括:
响应于所述分布式事务中的任一目标事务执行阶段执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述目标事务执行阶段对应的目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述目标回调函数关联的数据库管理操作。
3.根据权利要求2所述的方法,所述分布式事务包括事务注册阶段;与所述事务注册阶段对应的第一回调函数所关联的数据库管理操作,包括与所述操作元数据对应的基础管理操作;
与所述分布式事务的事务注册阶段对应的事务操作,包括:
建立用于缓存于所述分布式事务对应的事务上下文信息的内存结构,并将所述非结构化的操作元数据缓存到所述内存结构中;
所述响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作,包括:
响应于将所述非结构化的操作元数据成功缓存到所述内存结构,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述事务注册阶段对应的第一目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第一回调函数关联的基础管理操作。
4.根据权利要求3所述的方法,所述分布式事务还包括在事务注册阶段之后执行的redo日志生成阶段;与所述redo日志生成阶段对应的第二回调函数所关联的数据库管理操作,包括将生成的redo日志的标识信息与执行所述基础管理操作得到的操作结果进行关联保存的第一数据库管理操作;
与所述分布式事务的事务注册阶段对应的事务操作,包括:
将所述内存结构中缓存的所述非结构化的操作元数据,写入为所述分布式事务生成的redo日志;
所述响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作,包括:
响应于将所述内存结构中缓存的所述非结构化的操作元数据,成功写入为所述分布式事务生成的redo日志,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述redo日志生成阶段对应的第二目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第二回调函数关联的所述第一数据库管理操作。
5.根据权利要求4所述的方法,所述目标数据库节点包括至少一个副本设备;
与所述分布式事务的事务注册阶段对应的事务操作,包括:
将所述内存结构中缓存的所述非结构化的操作元数据,写入为所述分布式事务生成的redo日志,并将生成的所述redo日志采用分布式一致性算法同步至其它的各个副本设备,以触发所述各个副本设备在响应于同步至本地的所述redo日志,获取所述redo日志中写入的所述非结构化的操作元数据,并将所述操作元数据作为回调参数,发起针对所述各个副本设备上的数据库管理程序中与所述事务注册阶段对应的第一目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述副本设备上执行与所述第一回调函数关联的基础管理操作。
6.根据权利要求5所述的方法,所述分布式一致性算法包括paxos算法。
7.根据权利要求5所述的方法,所述分布式事务还包括在所述redo日志生成阶段之后执行的事务提交阶段;与所述事务提交阶段对应的第三回调函数所关联的数据库管理操作,包括对执行所述基础管理操作得到的操作结果进行状态更新的第二数据库管理操作;
与所述分布式事务的事务提交阶段对应的事务操作,包括:
响应于从所述分布式数据中的各个数据库节点上的事务管理器中选举出的全局事务管理器的事务提交指示,提交所述分布式事务;
所述响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作,包括:
响应于所述分布式事务成功提交,将所述内存结构中缓存的所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序中与所述事务提交阶段对应的第三目标回调函数的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行与所述第三回调函数关联的所述第二数据库管理操作。
8.根据权利要求7所述的方法,所述方法还包括:
周期性的读取所述内存结构中缓存的所述非结构化的元数据;
对读取到的所述非结构化的元数据进行持久化存储。
9.根据权利要求8所述的方法,所述方法还包括:
响应于所述事务的执行发生异常,基于持久化存储的所述非结构化的元数据,对在所述redo日志生成阶段生成的redo日志进行恢复,并基于恢复的所述redo日志重新执行所述分布式事务。
10.根据权利要求7所述的方法,所述操作元数据包括与在所述分布式数据库中的多个数据库节点上创建数据表的数据管理操作对应的操作元数据;
所述基础管理操作,包括:与在所述分布式数据库中创建数据表;
所述第一数据库管理操作,包括:将生成的redo日志的标识信息添加至创建的数据表中;
所述第二数据库管理操作,包括:将创建的数据表的状态切换为可见状态。
11.根据权利要求3所述的方法,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,包括:
将所述非结构化的操作元数据在所述内存结构中的内存地址作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调。
12.一种基于分布式事务的元数据管理装置,应用于分布式数据库中的任一执行所述分布式事务的目标数据库节点上的事务管理器,所述装置包括:
接收模块,接收所述分布式数据库中的任一数据库节点上的数据库管理程序发送的事务注册请求;其中,所述数据库管理程序分布式的安装在所述分布式数据库中的各个数据库节点上;所述事务注册请求包括所述数据库管理程序在所述分布式数据库中的多个数据库节点上待执行的数据库管理操作对应的非结构化的操作元数据;
事务模块,响应于所述事务注册请求,为所述数据库管理程序创建用于对所述非结构化的操作元数据进行管理的分布式事务,并执行所述分布式事务;其中,所述分布式事务包括在所述分布式数据中的多个数据库节点上分布式执行的事务;
回调模块,响应于所述分布式事务执行成功,将所述非结构化的操作元数据作为回调参数,发起针对所述目标数据库节点上的数据库管理程序的回调,以触发该数据库管理程序基于所述操作元数据在所述目标数据库节点上执行对应的数据库管理操作。
13.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-11中任一项所述的方法。
14.一种机器可读存储介质,其上存储有机器可读指令,该指令被处理器执行时实现如权利要求1-11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211358907.6A CN115774754A (zh) | 2022-11-01 | 2022-11-01 | 基于分布式事务的元数据管理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211358907.6A CN115774754A (zh) | 2022-11-01 | 2022-11-01 | 基于分布式事务的元数据管理方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115774754A true CN115774754A (zh) | 2023-03-10 |
Family
ID=85388687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211358907.6A Pending CN115774754A (zh) | 2022-11-01 | 2022-11-01 | 基于分布式事务的元数据管理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115774754A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561221A (zh) * | 2023-04-21 | 2023-08-08 | 清华大学 | 支持物联网场景的分布式时序数据库副本共识协议方法 |
-
2022
- 2022-11-01 CN CN202211358907.6A patent/CN115774754A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116561221A (zh) * | 2023-04-21 | 2023-08-08 | 清华大学 | 支持物联网场景的分布式时序数据库副本共识协议方法 |
CN116561221B (zh) * | 2023-04-21 | 2024-03-19 | 清华大学 | 支持物联网场景的分布式时序数据库副本共识协议的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11874746B2 (en) | Transaction commit protocol with recoverable commit identifier | |
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US10331797B2 (en) | Transaction protocol for reading database values | |
CN111858629B (zh) | 二阶段提交分布式事务更新数据库的实现方法和装置 | |
US11681683B2 (en) | Transaction compensation for single phase resources | |
JP2016522514A (ja) | オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置 | |
CN115098229A (zh) | 事务处理方法、装置、节点设备及存储介质 | |
US20230031418A1 (en) | Methods and systems for garbage deletion in a document database | |
EP4276651A1 (en) | Log execution method and apparatus, and computer device and storage medium | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems | |
CN115617571A (zh) | 一种数据备份方法、装置、系统、设备及存储介质 | |
CN113297173B (zh) | 分布式数据库集群管理方法及装置、电子设备 | |
CN115774754A (zh) | 基于分布式事务的元数据管理方法、装置、设备及介质 | |
CN109726211B (zh) | 一种分布式时序数据库 | |
CN112015591A (zh) | 一种日志管理方法、服务器和数据库系统 | |
EP3377970B1 (en) | Multi-version removal manager | |
WO2023065868A1 (zh) | 事务执行方法、装置、计算设备及存储介质 | |
Pankowski | Consistency and availability of Data in replicated NoSQL databases | |
CN112162988A (zh) | 一种分布式事务的处理方法、装置和电子设备 | |
CN113391933A (zh) | 一种处理资金的方法 | |
CN111913973A (zh) | 一种数据同步方法、装置及存储介质 | |
Hammood | A comparison of NoSQL database systems: A study on MongoDB, apache HBase, and apache Cassandra | |
CN116910064A (zh) | 一种分布式系统中在线创建表索引方法和系统 | |
CN117971981A (zh) | 分布式数据库系统下的热备方法、装置和电子设备 | |
CN112732760A (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 |