CN112131231A - 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 - Google Patents
一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN112131231A CN112131231A CN202010879518.2A CN202010879518A CN112131231A CN 112131231 A CN112131231 A CN 112131231A CN 202010879518 A CN202010879518 A CN 202010879518A CN 112131231 A CN112131231 A CN 112131231A
- Authority
- CN
- China
- Prior art keywords
- database
- catalog
- cataloging
- server
- agent
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及计算机技术领域,尤其涉及一种分布式数据库编目管理方法、系统、电子设备和可读存储介质,所述方法包括数据库代理将更新的编目信息发送至编目服务器;其中所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;编目服务器将所述接收的数据库编目更新发送至编目数据库;所述编目数据库接收所述数据库编目更新并更新存储的数据库编目。本申请的技术方案对分布式数据库编目数据维护更灵活,既能以编目服务器为准,也能以数据库代理节点为准,容错能力更强,保证了分布式数据库编目数据在各节点上的时效性和一致性,保证了分布式数据库在混合联机交易型负载下的持续可用性。
Description
技术领域
本申请涉及计算机数据处理技术领域,尤其涉及一种分布式数据库编目管理方法、系统、电子设备和可读存储介质。
背景技术
在分布式数据库的架构中,为了屏蔽分库分表带来的复杂性,应用通常不会直接访问分布式数据库,而是通过数据库代理(DBProxy)来访问。DBProxy负责对来自应用的SQL语句请求进行验证和解析,并路由给正确的数据库分片,组装来自一个或者多个数据库分片的响应后返回给应用。在分布式数据库中,为了完成SQL语句的验证、解析、路由和组装功能,分布式数据库编目(Database Catalog)处于重要位置,它用于描述数据库中各种对象的信息,例如描述表、索引等数据库结构信息。在分布式数据库中,编目数据是持续变化的,例如执行Create table这样的DDL语句会在编目数据中增加相关表以及索引的结构信息。执行Alter table这样的DDL语句,将修改编目数据中相关表的结构信息,因此分布式数据库编目管理十分重要。目前已有的分布式数据库编目管理的方法主要分为两种:
第一种管理方法是编目数据只在编目服务器持久化存放,在当前DBProxy执行SQL语句时,需要向编目服务器请求编目数据,随着应用的日益复杂,分布式数据库需要支持高并发环境下混合联机交易型负载(Mixed OLTP),这种负载下既有日常的交易又有批处理,从而会有大量的DML语句请求和DDL语句请求,大量的DML语句请求会对编目服务器发起大量编目数据读请求,大量的DDL语句请求有可能会对编目服务器发起大量的写入请求。编目服务器将成为瓶颈,所以这种方法从性能上无法难以满足混合联机交易型负载的极高要求。
第二种管理方法是编目数据在所有DBProxy节点通过文件或者数据库本地持久化存放,同时在编目服务器通过数据库持久化存放,并通过触发-广播机制实现DBProxy节点和编目服务器编目数据的一致性,在这个机制中,编目数据在编目服务器和DBProxy节点的同步过程中,只能以编目服务器为准,不支持以DBProxy为准。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一。本申请所采用的技术方案如下:
第一方面,本申请实施例提供一种分布式数据库编目管理方法,应用于编目管理系统,所述方法包括:
数据库代理将更新的编目信息发送至编目服务器;其中所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;
编目服务器将所述接收的数据库编目更新发送至编目数据库;
所述编目数据库接收所述数据库编目更新并更新存储的数据库编目。
可选地,所述方法还包括:
所述数据库代理为多个;
所述多个数据库代理分别将各自更新的编目信息发送至同一个编目服务器。
可选地,所述方法还包括:
所述编目数据库将存储的数据库编目信息发送至所述编目服务器;
所述编目服务器将从所述编目数据库接收的数据库编目发送至所述多个数据库代理;
所述多个数据库代理根据从所述编目服务器接收的数据库编目信息,分别更新存储的编目。
可选地,所述数据库代理将更新的编目信息发送至编目服务器包括:
所述数据库代理包括编目管理模块和编目模块;其中所述编目模块用于存储数据库代理本地存储的数据库编目;
所述编目管理模块读取到所述编目模块中的编目更新信息后;
所述编目管理模块将读取的所述编目更新信息发送中编目同步服务器。
可选地,所述数据库代理与编目服务器,所述编目服务器和编目数据库之间的通讯方式包括:
socket长连接通讯、socket短连接通讯或消息队列通讯。
可选地,所述方法还包括:
所述数据库为关系型分库分表数据库;
所述数据库代理为可访问关系型分库分表数据库的数据处理中间层。
可选地,所述方法还包括:当所述数据库代理与所述编目服务器中存储的数据库编目不同时,接收用户指定数据库编目的请求;所述请求用于控制所述数据库代理按照所述用户指定的目标数据库编目访问数据库。
第二方面,本申请实施例提供了一种分布式数据库编目管理系统,所述系统包括:数据库、数据库代理、编目服务器和编目数据库;其中,所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;
所述数据库代理将更新的编目信息发送至所述编目服务器;
所述编目服务器将所述接收的数据库编目更新发送至编目数据库;
所述编目数据库接收所述数据库编目更新并更新存储的数据库编目。
第三方面,本发明实施例提供了一种电子设备,包括处理器和存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,执行上述分布式数据库编目管理方法。
第四方面,一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述分布式数据库编目管理的方法。
本申请实施例公开的分布式数据库编目管理方案,编目数据在所有数据库代理节点持久化存储,并在编目服务器侧持久化存放到编目数据库中,并通过双向两阶段同步方法实现编目数据在数据库代理和编目服务器之间同步,如果出现冲突,通过仲裁机制进行自动处置。本申请实施例提供的技术方案带来的有益效果至少包括以下之一:
(1)该方法使得编目数据在编目服务器和DBProxy节点的同步过程中,既能以编目服务器为准,也能以DBProxy为准,这样更灵活更便利。
(2)该方法支持高并发环境下混合联机交易型负载场景,由于大量的DML语句请求和大量的DDL语句请求执行时,都只读写当前DBProxy节点的本地编目数据,所以对编目服务器没有性能压力。
(3)极端场景下如果DBProxy节点的本地编目数据损坏,通过同步机制可实现自动修复,对当前DBProxy节点的可用性没有影响。
(4)DBProxy节点的编目数据维护机制多样,既可以通过编目服务器的被动持久化写入,也可以由DBProxy节点主动持久化写入。
(5)在要对编目服务器的编目数据修改的场景下,编目服务器的编目数据修改后,根据既定的配置策略可以通过同步机制快速下发到所有DBProxy节点。
(6)同步发起灵活,可以事件触发、可以定时发起、可以自定义条件触发等。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种分布式数据库编目管理方法的流程示意图;
图2为本申请实施例提供的一种分布式数据库编目管理系统的结构示意图;
图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为更清楚地介绍本申请实施例,下面介绍一些可能用于实施例的定义、概念或装置:
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
DBProxy是一个基于MySQL协议的数据中间层。它在开源的Atlas基础上,修改了部分bug,并且添加了很多特性。主要功能为读写分离、从库负载均衡、IP过滤、分表DBA可平滑上下线DB、自动摘除宕机的DB、监控信息完备、SQL过滤、从库流量配置。
数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
开放数据库连接(Open Database Connectivity,ODBC)是为解决异构数据库间的数据共享而产生的,现已成为WOSA(The Windows Open System Architecture(Windows开放系统体系结构))的主要部分和基于Windows环境的一种数据库访问接口标准ODBC为异构数据库访问提供统一接口,允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据,免除随DB的改变而改变。用ODBC可以访问各类计算机上的DB文件,甚至访问如Excel表和ASCI I数据文件这类非数据库对象。
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
DBProxy是分布式数据库负责SQL语句解析和执行的前置中间件集群,通过读取本地数据库编目完成对SQL语句的解析、路由和组装功能。
在分布式数据库中,对数据库、数据表等对象进行分库分表(sharding),以突破单一的集中式数据库单点性能上限,通过分片集群支持更高的并发SQL请求。访问分布式数据库的SQL请求,可以是对数据进行操作的查询(select)、插入(insert)、删除(delete)或者更新(update)之类的数据操作语言(DML);也可以是对表、视图、索引等数据库对象进行操作的创建(create)、修改(alter)、重命名(rename)、删除(drop)之类的数据定义语言(DDL)。在分布式数据库的架构中,为了屏蔽分库分表带来的复杂性,应用通常不会直接访问分布式数据库,而是通过代理中间件(DBProxy)来访问。DBProxy中间件负责对来自应用的SQL语句请求进行验证和解析,并路由给正确的数据库分片,组装来自一个或者多个数据库分片的响应后返回给应用。在分布式数据库中,为了完成SQL语句的验证、解析、路由和组装功能,分布式数据库编目(Database Catalog)处于重要位置,它用于描述数据库中各种对象的信息,例如描述表、索引等数据库结构信息。在分布式数据库中,编目数据是持续变化的,例如执行Create table这样的DDL语句会在编目数据中增加相关表以及索引的结构信息。执行Alter table这样的DDL语句,将修改编目数据中相关表的结构信息
如前所述目前的两种编目数据管理方法均存在一定的局限性,第一种管理方法从性能上无法难以满足混合联机交易型负载的极高要求;第二种管理方法,编目数据在编目服务器和DBProxy节点的同步过程中,只能以编目服务器为准,不支持以DBProxy为准,此外在DBProxy节点的编目数据版本和编目服务器上的版本不一致的场景下,DBProxy节点需要定时与编目服务器比对版本号(比对周期可配置),如果发现版本不一致,则需要主动拉取编目服务器上的编目数据到DBProxy本地,并替换本地版本。DBProxy节点无法将本地版本的编目数据上推给编目服务器。基于此本申请公开了一种分布式数据库编目管理方案,以至少解决上述技术问题之一。
下面将结合附图以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
为使本申请的目的、技术方案和优点更加清楚,图1公开了本申请实施例提供的一种分布式数据库编目管理方法的流程图,所述方法应用于编目管理系统,如图1所示,所述方法包括:
S101、数据库代理将更新的编目信息发送至编目服务器;其中所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;
在本申请可选实施例中,所述数据库代理包括编目管理模块和编目模块;所述编目管理模块也可称之为编目同步客户端,编目模块也可称之为本地编目;其中所述编目模块用于存储数据库代理本地存储的数据库编目,即数据库编目以XML格式存放在数据库代理节点所在的文件系统中,和编目数据库上编目表system.table_info、system.column_info、system.index_info进行映射对应;
所述编目管理模块读取到所述编目模块中的编目更新信息后;
所述编目管理模块将读取的所述编目更新信息发送中编目同步服务器。
S102、编目服务器将所述接收的数据库编目更新发送至编目数据库;所述编目服务器也可称之为编目同步服务器,即用于使得数据库代理中存储的编目更新信息同步至编目服务器和编目数据库中;
S103、所述编目数据库接收所述数据库编目更新并更新存储的数据库编目。其中所述编目数据库用于存放分布式数据库全局编目信息,编目数据库保存表的信息,列的信息以及索引信息,这些信息在实际应用中可分别存储在system.table_info、system.column_info和system.index_info这三张表中。
在本申请可选实施例中,所述方法还包括:
所述数据库代理为多个,所述多个数据库代理分别将各自更新的编目信息发送至同一个编目服务器。在实际应用场景中,所述要对数据库进行访问的目标应用具有多个,或称之为目标应用集群,相应的具有数据库代理集群,即所述多个目标应用的每一个分别对应一个数据库代理,每一个数据库代理至少包括编目管理模块和编目模块。
在本申请可选实施例中,所述方法还包括:
所述编目数据库将存储的数据库编目信息发送至所述编目服务器;
所述编目服务器将从所述编目数据库接收的数据库编目发送至所述多个数据库代理;
所述多个数据库代理根据从所述编目服务器接收的数据库编目信息,分别更新存储的编目。
基于本申请实施例,实现了编目数据在数据库代理和编目服务器之间双向同步,使得编目数据在编目服务器和DBProxy节点的同步过程中,既能以编目服务器为准,也能以DBProxy为准。
在本申请可选实施例中,所述数据库代理与编目服务器,所述编目服务器和编目数据库之间的通讯方式包括:socket长连接通讯、socket短连接通讯或消息队列通讯。
在本申请可选实施例中,所述方法还包括:目标应用集群通过ODBC或者JDBC接口访问数据库代理集群,并经负载均衡设备分发给数据库代理集群中某个节点进行SQL请求处理;
数据库代理集群接收目标应用发起的SQL处理请求,通过读取本地数据库编目完成对SQL语句的解析、路由和组装功能;
在本申请可选实施例中,所述方法还包括:
所述数据库为关系型分库分表数据库;所述数据库代理为可访问关系型分库分表数据库的数据处理中间层。即数据库数据分片集群接收和响应来自数据库代理节点的SQL请求。分片中的节点通常采用的是MySQL、MariaDB或者PostgreSQL等开源的关系型数据库。
在本申请可选实施例中,所述系统还包括集群管理器管理数据库代理节点和数据分片节点等。
在本申请可选实施例中,所述方法还包括:当所述数据库代理与所述编目服务器中存储的数据库编目不同时,接收用户指定数据库编目的请求;所述请求用于控制所述数据库代理按照所述用户指定的目标数据库编目访问数据库。即如果本地动态编目和全局编目数据出现逻辑冲突,将按照预先设置的冲突处理策略执行,具体处理策略包括两种,即客户端为准(clientwin)和服务器端为准(serverwin)。在具体实现上冲突处理策略的设置可分别存放在本地动态编目XML文件的ConflictPolicy标签和全局编目数据库相关表的ConflictPolicy字段中。
为了更清楚地介绍本申请所公开的分布式数据库编目管理方法,下述实施例将针对数据库代理与编目数据库之间进行编目信息双向两阶段同步流程展开详细介绍如下:
第一阶段:数据库代理将更新的本地动态编目数据同步到编目数据库,该同步过程的具体流程如下:
步骤1、编目管理模块向编目服务器发起编目数据开始同步请求;
步骤2、编目服务器应答可以同步;
步骤3、编目管理模块向编目服务器发起编目数据第1阶段同步请求;
步骤4、编目管理模块从编目模块中获取更新数据;
步骤5、编目管理模块向编目服务器发送本地编目更新;
步骤6、编目服务器将收到的本地编目更新应用到编目数据库,如果有冲突,按照ConflictPolicy配置的策略执行;
步骤7、编目服务器响应编目管理模块,编目同步至服务器完成;
步骤8、编目管理模块通知编目服务器,第一阶段同步完成。
第二阶段:将更新的编目数据库数据同步到数据库代理的编目模块中,该同步过程的具体流程如下:
步骤1、编目管理模块向编目服务器发起编目数据同步请求;
步骤2、编目服务器从编目数据库中获取更新数据;
步骤3、编目服务器将获取的编目更新数据打包发送给编目管理模块;
步骤4、编目管理模块将收到的编目更新应用到编目模块中,如果有冲突,按照ConflictPolicy配置的策略执行;
步骤5、编目管理模块通知编目服务器,编目应用到本地完成;
步骤6、编目管理模块通知编目服务器同步完成;
步骤7、编目管理模块向编目服务器发起编目数据结束同步请求;
步骤8、编目服务器应答可以结束。
在本申请可选实施例中,捕获数据库代理编目模块中编目更新方法为:数据库代理节点接收到应用程序发起的DDL语句请求,对编目模块中的编目信息进行修改,下面是对表AccountTab增加字段prft_cter:
alter table AccountTab add prft_cter char(6)
上述语句将prft_cter字段新添加到本地动态编目XML文件中的<SQL_Content>标签中,同时会将XML文件中的SyncStatus标签值从YES变为NO,表示当前的编目更新需要和服务端进行同步。
在本申请可选实施例中,所述捕获服务器端编目数据库更新的方法为:
编目服务器从编目数据库的system.column_info_track表中取得编目数据更新,将更新的编目信息同步给数据库代理的编目管理模块。本实施例采用跟踪表的方法跟踪编目数据库编目信息的变化,即为system.table_info、system.column_info和system.index_info这3张表分别创建3张追踪表,名字分别为system.table_info_track、system.column_info_track和system.index_info_track。上述3张跟踪表字段基本和源表一样,只是多了3个字段:
operation字段:记录三张表变化操作类型(insert,deleter或者update);
clientid字段:标明编目同步服务器需要同步的客户端标识;
syncstatus字段:标明同步是否完成,值为YES或者NO。
在system.table_info、system.column_info和system.index_info这3张表上分别创建insert、update和delete触发器,这样对这3张表的insert、update和delete操作,都将被记录到system.table_info_track、system.column_info_track和system.index_info_track表中。
在编目数据库中修改编目信息,例如为表AccountTab增加字段prft_cter,这样在全局编目数据库中system.column_info表将插入一条关于prft_cter字段的新记录。这时system.column_info上的column_info_insert_trigger触发器将被触发。假定有M个数据库代理编管理模块,则触发器要向column_info_track表上插入M条记录,每条记录中管理模块ID为对应的编目管理模块ID标识,由于是新加字段所以operation字段值为insert,sycstatus为YES,表示要使相应数据库代理同步数据
在本申请可选实施例中,所述方法还包括可基于当前同步序列号(SyncID)获取各个数据库代理的编目管理模块和编目服务器端的同步状态。具体实现过程为:在当前数据库代理在编目模块进行了增加字段操作,当前编目管理模块发起同步,通过以下方法获取各个客户端的同步状态。
1)当前编目管理模块将增加字段的编目信息发送给编目服务器;
2)编目服务器将增加字段信息插入到column_info表中,column_info表上的触发器column_info_insert_trigger将被触发,column_info_track表中将被插入M条记录,每条记录的syncstatus字段值为NO,表示编目服务器要将这条变更信息向M个数据库代理同步。
3)由于当前编目管理模块当前表的编目信息无需编目服务器再次下发,对应的syncstatus字段标记为YES。
4)编目服务器向其他数据库代理同步,同步完成后相应编目管理模块ID标识对应字段的syncstatus字段标记为YES。
5)这样从编目服务器上根据每个编目管理模块ID对应的syncstatus的状态,就能判断同步状态了。
同样的原理,编目服务器向客户端同步DDL变化信息时,同样通过编目管理模块ID字段和syncstatus字段来检查每个编目管理模块在某次同步时(SyncID标识某次同步ID)的同步状态。
在本申请可选实施例中,所述方法还包括,所述数据库代理与编目服务器之间的编目数据同步可实现基于最大同步序列号(MaxSyncID)的断点重传机制,实现过程为:在每个编目管理模块存放一个同步位置文件LocalSync.xml,该文件记录了每个编目管理模块的ID和当前最大同步序列号(用SyncID描述),这标识了当前编目管理模块和服务器端已经同步的位置,编目管理模块的ID在集群内唯一。
同样在服务器端有一张同步位置表ServerSync_Info,这张表存放在编目数据库中,用于记录每个编目管理模块的ID以及与每个编目管理模块同步的当前最大同步序列号SyncID。下面以编目数据双向两阶段同步为例:
1)数据库代理的编目管理模块向编目服务器首次发起同步时,在本地产生唯一递增的序号,写入LocalSync.xml文件MaxSyncID中。
2)第一阶段同步时,编目管理模块向编目服务端发起编目数据更新同步,根据LocalSync.xml文件中当前MaxSyncID值发送SyncID(值为MaxSyncID+1),服务器端将编目数据更新到编目数据库system.table_info、system.column_info和system.index_info等相关表中。
3)第二阶段同步时,编目同步服务端向编目管理模块发送服务器端编目更新,客户端更新本地编目数据。
4)两阶段成功同步后,编目管理模块更新LocalSync.xml文件中MaxSyncID值为当前SyncID值并持久化,编目服务器更新表ServerSync_Info的MaxSyncID字段为当前SyncID值,完成整个一次同步过程。
5)进入连续同步状态,编目管理模块LocalSync.xml文件中的MaxSyncID和编目服务器端表ServerSync_Info中的MaxSyncID字段值不断递增。
6)如果出现同步异常,如果LocalSync.xml文件中的MaxSyncID大于ServerSync_Info表中该编目管理模块的MaxSyncID,则需要编目管理模块将对应表的全量编目XML文件同步给编目服务器端,编目服务器端更新表ServerSync_Info中的MaxSyncID字段;如果LocalSync.xml文件中的MaxSyncID小于ServerSync_Info表中该编目管理模块的MaxSyncID,则需要编目服务器端将对应表的全量编目数据同步给编目管理模块,编目管理模块更新LocalSync.xml文件中的MaxSyncID值。
基于图1所示的实施例提供的分布式数据库编目管理方法,图2示出了本申请实施例提供的一种分布式数据库编目管理系统,如图2所示,该系统主要可以包括:201数据库、202数据库代理、203编目服务器和204编目数据库;其中,所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;
所述202数据库代理将更新的编目信息发送至所述203编目服务器;
所述203编目服务器将所述接收的数据库编目更新发送至204编目数据库;
所述204编目数据库接收所述数据库编目更新并更新存储的数据库编目。
在本申请可选实施例中,所述202数据库代理还包括所述数据库代理包括2021编目管理模块和2022编目模块;其中所述2022编目模块用于存储数据库代理本地存储的数据库编目;
所述2021编目管理模块读取到所述2022编目模块中的编目更新信息后;所述2022编目管理模块用于向203编目服务器发起双向同步,将2022编目模块的更新发送给203编目服务器;接收203编目服务器的响应,将204编目数据库的更新下载到本地,并更新2022编目模块中。
所述2021编目管理模块将读取的所述编目更新信息发送中编目同步服务器。
在本申请可选实施例中,所述关联系统还包括205集群管理器管理202数据库代理节点和201数据库的分片节点等。
可以理解的是,本实施例中的分布式数据库编目管理系统的上述各模块具有实现图1中所示的实施例中的方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。上述模块可以是软件和/或硬件,上述各模块可以单独实现,也可以多个模块集成实现。对于上述各模块的功能描述具体可以参见图1中所示实施例中的方法的对应描述,在此不再赘述。
本申请实施例提供了一种电子设备,包括处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行本申请任一实施方式中所提供的分布式数据库编目管理方法。
作为一个示例,图3示出了本申请实施例所适用的一种电子设备的结构示意图,如图3所示,该电子设备2000包括:处理器2001和存储器2003。其中,处理器2001和存储器2003相连,如通过总线2002相连。可选的,电子设备2000还可以包括收发器2004。需要说明的是,实际应用中收发器2004不限于一个,该电子设备2000的结构并不构成对本申请实施例的限定。
其中,处理器2001应用于本申请实施例中,用于实现上述方法实施例所示的方法。收发器2004可以包括接收机和发射机,收发器2004应用于本申请实施例中,用于执行时实现本申请实施例的电子设备与其他设备通信的功能。
处理器2001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器2001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线2002可包括一通路,在上述组件之间传送信息。总线2002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线2002可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器2003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
可选的,存储器2003用于存储执行本申请方案的应用程序代码,并由处理器2001来控制执行。处理器2001用于执行存储器2003中存储的应用程序代码,以实现本申请任一实施方式中所提供的分布式数据库编目管理方法。
本申请实施例提供的电子设备,适用于上述方法任一实施例,在此不再赘述。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述方法实施例所示的分布式数据库编目管理方法。
本申请实施例提供的计算机可读存储介质,适用于上述方法任一实施例,在此不再赘述。
本申请实施例公开的分布式数据库编目管理方案,通过数据库代理将更新的编目信息发送至编目服务器;其中所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;编目服务器将所述接收的数据库编目更新发送至编目数据库;所述编目数据库接收所述数据库编目更新并更新存储的数据库编目。本申请的技术方案对分布式数据库编目数据维护更灵活,既能以编目服务器为准,也能以数据库代理节点为准,容错能力更强,保证了分布式数据库编目数据在各节点上的时效性和一致性,保证了分布式数据库在混合联机交易型负载下的持续可用性。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种分布式数据库编目管理方法,应用于编目管理系统,其特征在于,所述方法包括:
数据库代理将更新的编目信息发送至编目服务器;其中所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;
编目服务器将所述接收的数据库编目更新发送至编目数据库;
所述编目数据库接收所述数据库编目更新并更新存储的数据库编目。
2.根据权利要求1所述的分布式数据库编目管理方法,其特征在于,所述方法还包括:
所述数据库代理为多个;
所述多个数据库代理分别将各自更新的编目信息发送至同一个编目服务器。
3.根据权利要求2所述的分布式数据库编目管理方法,其特征在于,所述方法还包括:
所述编目数据库将存储的数据库编目信息发送至所述编目服务器;
所述编目服务器将从所述编目数据库接收的数据库编目发送至所述多个数据库代理;
所述多个数据库代理根据从所述编目服务器接收的数据库编目信息,分别更新存储的编目。
4.根据权利要求3所述的分布式数据库编目管理方法,其特征在于,所述数据库代理将更新的编目信息发送至编目服务器包括:
所述数据库代理包括编目管理模块和编目模块;其中所述编目模块用于存储数据库代理本地存储的数据库编目;
所述编目管理模块读取到所述编目模块中的编目更新信息后;
所述编目管理模块将读取的所述编目更新信息发送中编目同步服务器。
5.根据权利要求4所述的分布式数据库编目管理方法,其特征在于,所述数据库代理与编目服务器,所述编目服务器和编目数据库之间的通讯方式包括:
socket长连接通讯、socket短连接通讯或消息队列通讯。
6.根据权利要求5所述的分布式数据库编目管理方法,其特征在于,所述方法还包括:
所述数据库为关系型分库分表数据库;
所述数据库代理为可访问关系型分库分表数据库的数据处理中间层。
7.根据权利要求1-6任一项所述的分布式数据库编目管理方法,其特征在于,所述方法还包括:
当所述数据库代理与所述编目服务器中存储的数据库编目不同时,接收用户指定数据库编目的请求;所述请求用于控制所述数据库代理按照所述用户指定的目标数据库编目访问数据库。
8.一种分布式数据库编目管理系统,其特征在于,所述系统包括:数据库、数据库代理、编目服务器和编目数据库;其中,所述数据库代理为访问数据库的前置中间件,所述数据库代理存储有所述数据库的编目;
所述数据库代理将更新的编目信息发送至所述编目服务器;
所述编目服务器将所述接收的数据库编目更新发送至编目数据库;
所述编目数据库接收所述数据库编目更新并更新存储的数据库编目。
9.一种电子设备,其特征在于,包括处理器和存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,执行权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010879518.2A CN112131231A (zh) | 2020-08-27 | 2020-08-27 | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010879518.2A CN112131231A (zh) | 2020-08-27 | 2020-08-27 | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112131231A true CN112131231A (zh) | 2020-12-25 |
Family
ID=73847518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010879518.2A Pending CN112131231A (zh) | 2020-08-27 | 2020-08-27 | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131231A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515532A (zh) * | 2021-05-12 | 2021-10-19 | 平安国际智慧城市科技股份有限公司 | 基于数据交换的变更处理方法、装置、设备及存储介质 |
CN115022392A (zh) * | 2022-06-24 | 2022-09-06 | 浪潮软件集团有限公司 | 面向iot的分布式发布订阅服务方法和系统 |
CN116126865A (zh) * | 2023-02-17 | 2023-05-16 | 安芯网盾(北京)科技有限公司 | 一种多种数据库混合使用的代理方法及装置 |
-
2020
- 2020-08-27 CN CN202010879518.2A patent/CN112131231A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113515532A (zh) * | 2021-05-12 | 2021-10-19 | 平安国际智慧城市科技股份有限公司 | 基于数据交换的变更处理方法、装置、设备及存储介质 |
CN113515532B (zh) * | 2021-05-12 | 2024-01-19 | 平安国际智慧城市科技股份有限公司 | 基于数据交换的变更处理方法、装置、设备及存储介质 |
CN115022392A (zh) * | 2022-06-24 | 2022-09-06 | 浪潮软件集团有限公司 | 面向iot的分布式发布订阅服务方法和系统 |
CN115022392B (zh) * | 2022-06-24 | 2024-04-30 | 浪潮软件集团有限公司 | 面向iot的分布式发布订阅服务方法和系统 |
CN116126865A (zh) * | 2023-02-17 | 2023-05-16 | 安芯网盾(北京)科技有限公司 | 一种多种数据库混合使用的代理方法及装置 |
CN116126865B (zh) * | 2023-02-17 | 2023-09-08 | 安芯网盾(北京)科技有限公司 | 一种多种数据库混合使用的代理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3365807B1 (en) | Application containers for container databases | |
US9251163B2 (en) | File sharing system and file sharing method | |
EP3413215B1 (en) | Dynamic snapshot isolation protocol selection | |
US10572551B2 (en) | Application containers in container databases | |
CN112131231A (zh) | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 | |
US10929398B2 (en) | Distributed system with accelerator and catalog | |
US9280568B2 (en) | Zero downtime schema evolution | |
EP3058690B1 (en) | System and method for creating a distributed transaction manager supporting repeatable read isolation level in a mpp database | |
NO20171080A1 (en) | Apparatus and methods of data synchronization | |
CN109144994A (zh) | 索引更新方法、系统及相关装置 | |
US20120254249A1 (en) | Database Management System | |
US10585909B2 (en) | Task-execution in a DBMS using stored procedures | |
US20050234934A1 (en) | System and method for controlling the release of updates to a database configuration | |
US9971820B2 (en) | Distributed system with accelerator-created containers | |
WO2012108015A1 (ja) | データ同期方法、データ同期プログラム、及びデータ同期制御装置 | |
CN110688397B (zh) | 一种基于sql的分布式数据统一访问系统及方法 | |
CN106503087A (zh) | 一种用于分布式数据访问的数据库中间件 | |
CN102937964B (zh) | 基于分布式系统的智能数据服务方法 | |
EP2800013A1 (en) | Integration database framework | |
CN107656951B (zh) | 一种同步异构数据库系统中实时数据的方法 | |
CN110019469A (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
CN105354328A (zh) | 一种解决NoSQL数据库并发访问冲突的系统及方法 | |
EP3877859A1 (en) | Write-write conflict detection for multi-master shared storage database | |
US20140208063A1 (en) | Polymorph table with shared columns | |
Dey et al. | Scalable distributed transactions across heterogeneous stores |
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 |