在分布式数据库中同步更新元数据的方法及装置制造方法及图纸

技术编号:32344099 阅读:12 留言:0更新日期:2022-02-16 18:58
本说明书实施例提供了在分布式数据库中同步更新元数据的方法及装置。该分布式数据库包括多个数据库节点,其中的第一节点保存有目标复制表的第一主副本,其余的多个第二节点保存有目标复制表的第一备副本,第一主副本和第一备副本之间采用全同步协议。第一节点可以接收与分布式数据库中第一数据表的第一元数据有关的更新请求,并根据更新请求,将与第一元数据有关的更新信息写入第一主副本,使得该更新信息基于全同步协议,被同步至该多个第二节点各自的第一备副本,以供该多个第二节点在使用第一元数据时,根据该更新信息,获取第一元数据的更新数据。数据的更新数据。数据的更新数据。

【技术实现步骤摘要】
在分布式数据库中同步更新元数据的方法及装置


[0001]本说明书实施例涉及计算机
,具体地,涉及在分布式数据库中同步更新元数据的方法及装置。

技术介绍

[0002]目前,在大规模分布式数据库(例如OceanBase等数据库)中,同步更新元数据(Schema)是一个难题,因为不能保证元数据的更新数据被同时推送到分布式数据库的各个数据库节点上,进而可能导致在更新元数据的过程中出现不同的数据库节点读到不同的元数据这一问题。例如,在用户修改某个数据表的元数据后,有可能一部分数据库节点读到该数据表更新后的元数据,另一部分数据库节点读到该数据表更新前的元数据。
[0003]因此,迫切需要一种合理、可靠的方案,可以实现元数据的同步更新,确保在用户修改元数据后,各个数据库节点一定能读到更新后的元数据。

技术实现思路

[0004]本说明书实施例提供了在分布式数据库中同步更新元数据的方法,可以实现元数据的同步更新,确保在用户修改元数据后,各个数据库节点一定能读到更新后的元数据。
[0005]第一方面,本说明书实施例提供了一种在分布式数据库中同步更新元数据的方法,所述分布式数据库包括多个数据库节点,其中的第一节点保存有目标复制表的第一主副本,其余的多个第二节点保存有所述目标复制表的第一备副本,所述第一主副本和所述第一备副本之间采用全同步协议,所述方法应用于所述第一节点,包括:接收与所述分布式数据库中第一数据表的第一元数据有关的更新请求;根据所述更新请求,将与所述第一元数据有关的更新信息写入所述第一主副本,使得所述更新信息基于所述全同步协议,被同步至所述多个第二节点各自的所述第一备副本,以供所述多个第二节点在使用所述第一元数据时,根据所述更新信息,获取所述第一元数据的更新数据。
[0006]在一些实施例中,所述更新请求包括所述更新数据;以及所述将与所述第一元数据有关的更新信息写入所述第一主副本,包括:将所述更新数据写入所述第一主副本。
[0007]在一些实施例中,所述将与所述第一元数据有关的更新信息写入所述第一主副本,包括:确定与所述第一元数据有关的目标更新标记;将所述目标更新标记写入所述第一主副本。
[0008]在一些实施例中,所述确定与所述第一元数据有关的目标更新标记,包括:获取目标版本号,其为所述第一元数据或所述分布式数据库的元数据的版本号,并且响应于所述更新数据对应的更新操作而生成;根据所述目标版本号生成所述目标更新标记。
[0009]在一些实施例中,所述根据所述目标版本号生成所述目标更新标记,包括:将所述目标版本号作为所述目标更新标记。
[0010]在一些实施例中,所述根据所述目标版本号生成所述目标更新标记,包括:对所述目标版本号进行哈希计算或签名,将所得的哈希值或签名作为所述目标更新标记。
[0011]在一些实施例中,所述确定与所述第一元数据有关的目标更新标记,包括:获取包含所述更新数据的目标元数据,其为加入所述更新数据后的所述第一元数据的至少部分内容,或者所述分布式数据库加入所述更新数据后的元数据的至少部分内容;根据所述目标元数据生成所述目标更新标记。
[0012]在一些实施例中,所述根据所述目标元数据生成所述目标更新标记,包括:对所述目标元数据进行哈希计算或签名,将所得的哈希值或签名作为所述目标更新标记。
[0013]在一些实施例中,所述更新请求包括所述更新数据;以及所述方法还包括:将所述更新数据和所述目标更新标记对应缓存到本地内存中。
[0014]在一些实施例中,所述第一节点还保存有元数据表的第二主副本,所述元数据表存放有所述分布式数据库的元数据;以及所述方法还包括:将缓存的所述更新数据更新到所述第二主副本中。
[0015]在一些实施例中,在所述目标更新标记被同步至所述多个第二节点各自的所述第一备副本之后,所述方法还包括:接收所述多个第二节点中任意的第二节点发送的对所述更新数据的获取请求,所述获取请求是所述任意的第二节点,在检测出其内存未缓存关联于所述第一元数据的所述目标更新标记而发送的;将所述更新数据返回给所述任意的第二节点。
[0016]第二方面,本说明书实施例提供了一种在分布式数据库中同步更新元数据的方法,所述分布式数据库包括多个数据库节点,其中的第一节点保存有目标复制表的第一主副本,其余的多个第二节点保存有所述目标复制表的第一备副本,所述第一主副本和所述第一备副本之间采用全同步协议,所述方法包括:所述第一节点接收与所述分布式数据库中第一数据表的第一元数据有关的更新请求;所述第一节点根据所述更新请求,将与所述第一元数据有关的更新信息写入所述第一主副本,使得所述更新信息基于所述全同步协议,被同步至所述多个第二节点各自的所述第一备副本;所述多个第二节点中任意的第二节点在使用所述第一元数据时,根据被同步至本地的所述第一备副本中的所述更新信息,获取所述第一元数据的更新数据。
[0017]在一些实施例中,所述更新请求包括所述更新数据;以及所述将与所述第一元数据有关的更新信息写入所述第一主副本,包括:将所述更新数据写入所述第一主副本;所述获取所述第一元数据的更新数据,包括:从本地的所述第一备副本中获取所述更新数据。
[0018]在一些实施例中,所述将与所述第一元数据有关的更新信息写入所述第一主副本,包括:确定与所述第一元数据有关的目标更新标记;将所述目标更新标记写入所述第一主副本。
[0019]在一些实施例中,所述更新请求包括所述更新数据;以及所述方法还包括:所述第一节点将所述更新数据和所述目标更新标记对应缓存到本地内存中。
[0020]在一些实施例中,所述获取所述第一元数据的更新数据,包括:从本地的所述第一备副本中读取所述目标更新标记;检测本地内存是否缓存有关联于所述第一元数据的所述目标更新标记;响应于检测结果为否,向所述第一节点发送对所述更新数据的获取请求;接收所述第一节点返回的所述更新数据;以及所述方法还包括:所述任意的第二节点将所述更新数据和所述目标更新标记对应缓存到本地内存中。
[0021]在一些实施例中,所述任意的第二节点的本地内存缓存有关联于所述第一元数据
的历史更新标记;以及所述检测本地内存是否缓存有关联于所述第一元数据的所述目标更新标记,包括:确定所述目标更新标记和所述历史更新标记是否相同;若确定结果为是,则确定本地内存缓存有关联于所述第一元数据的所述目标更新标记;若确定结果为否,则确定本地内存未缓存关联于所述第一元数据的所述目标更新标记。
[0022]在一些实施例中,在所述任意的第二节点将所述更新数据和所述目标更新标记对应缓存到本地内存中之后,还包括:再次使用所述第一元数据时,从本地的所述第一备副本中读取所述目标更新标记;检测本地内存是否缓存有关联于所述第一元数据的所述目标更新标记;响应于检测结果为是,从本地内存中获取所述更新数据。
[0023]第三方面,本说明书实施例提供了一种在分布式数据库中同步更新元数据的装置,所述分布式数据库包括多个数据库节点,其本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在分布式数据库中同步更新元数据的方法,所述分布式数据库包括多个数据库节点,其中的第一节点保存有目标复制表的第一主副本,其余的多个第二节点保存有所述目标复制表的第一备副本,所述第一主副本和所述第一备副本之间采用全同步协议,所述方法应用于所述第一节点,包括:接收与所述分布式数据库中第一数据表的第一元数据有关的更新请求;根据所述更新请求,将与所述第一元数据有关的更新信息写入所述第一主副本,使得所述更新信息基于所述全同步协议,被同步至所述多个第二节点各自的所述第一备副本,以供所述多个第二节点在使用所述第一元数据时,根据所述更新信息,获取所述第一元数据的更新数据。2.根据权利要求1所述的方法,其中,所述更新请求包括所述更新数据;以及所述将与所述第一元数据有关的更新信息写入所述第一主副本,包括:将所述更新数据写入所述第一主副本。3.根据权利要求1所述的方法,其中,所述将与所述第一元数据有关的更新信息写入所述第一主副本,包括:确定与所述第一元数据有关的目标更新标记;将所述目标更新标记写入所述第一主副本。4.根据权利要求3所述的方法,其中,所述确定与所述第一元数据有关的目标更新标记,包括:获取目标版本号,其为所述第一元数据或所述分布式数据库的元数据的版本号,并且响应于所述更新数据对应的更新操作而生成;根据所述目标版本号生成所述目标更新标记。5.根据权利要求4所述的方法,其中,所述根据所述目标版本号生成所述目标更新标记,包括:将所述目标版本号作为所述目标更新标记。6.根据权利要求4所述的方法,其中,所述根据所述目标版本号生成所述目标更新标记,包括:对所述目标版本号进行哈希计算或签名,将所得的哈希值或签名作为所述目标更新标记。7.根据权利要求3所述的方法,其中,所述确定与所述第一元数据有关的目标更新标记,包括:获取包含所述更新数据的目标元数据,其为加入所述更新数据后的所述第一元数据的至少部分内容,或者所述分布式数据库加入所述更新数据后的元数据的至少部分内容;根据所述目标元数据生成所述目标更新标记。8.根据权利要求7所述的方法,其中,所述根据所述目标元数据生成所述目标更新标记,包括:对所述目标元数据进行哈希计算或签名,将所得的哈希值或签名作为所述目标更新标记。9.根据权利要求3所述的方法,其中,所述更新请求包括所述更新数据;以及所述方法还包括:
将所述更新数据和所述目标更新标记对应缓存到本地内存中。10.根据权利要求9所述的方法,其中,所述第一节点还保存有元数据表的第二主副本,所述元数据表存放有所述分布式数据库的元数据;以及所述方法还包括:将缓存的所述更新数据更新到所述第二主副本中。11.根据权利要求9或10所述的方法,其中,在所述目标更新标记被同步至所述多个第二节点各自的所述第一备副本之后,所述方法还包括:接收所述多个第二节点中任意的第二节点发送的对所述更新数据的获取请求,所述获取请求是所述任意的第二节点,在检测出其内存未缓存关联于所述第一元数据的所述目标更新标记而发送的;将所述更新数据返回给所述任意的第二节点。12.一种在分布式数据库中同步更新元数据的方法,所述分布式数据库包括多个数据库节点,其中的第一节点保存有目标复制表的第一主副本,其余的多个第二节点保存有所述目标复制表的第一备副本,所述第一主副本和所述第一备副本之间采用全同步协议,所述方法包括:所述第一节点接收与所述分布式数据库中第一数据表的第一元数据有关的更新请求;所述第一节点根据所述更新请求,将...

【专利技术属性】
技术研发人员:阳振坤韩富晟陈俊全
申请(专利权)人:北京奥星贝斯科技有限公司
类型:发明
国别省市:

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

1