CN111782671A - 一种基于分布式数据库实现cdc的优化方法 - Google Patents
一种基于分布式数据库实现cdc的优化方法 Download PDFInfo
- Publication number
- CN111782671A CN111782671A CN202010618749.8A CN202010618749A CN111782671A CN 111782671 A CN111782671 A CN 111782671A CN 202010618749 A CN202010618749 A CN 202010618749A CN 111782671 A CN111782671 A CN 111782671A
- Authority
- CN
- China
- Prior art keywords
- data
- cdc
- execution
- field
- field name
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000005457 optimization Methods 0.000 title claims abstract description 23
- 230000008859 change Effects 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 15
- 238000012545 processing Methods 0.000 abstract description 4
- 238000013481 data capture Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
- G06F16/2358—Change logging, detection, and notification
-
- 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
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于分布式数据库实现CDC的优化方法,涉及数据处理技术领域,该优化方法的执行过程包括:步骤1、在分布式数据库或者分布式数据库的表创建CDC;步骤2、用户执行DML操作,执行变化数据的SQL,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划;步骤3、数据库服务将执行计划下发给各个执行节点执行;步骤4、各个数据库服务节点接收执行计划并执行,计划执行完成后,提交事务,将变化的数据发送至数据池。本优化方法可以降低存储空间的占用,提升变化数据捕获效率和实时性,无需创建捕获进程,无需解析日志,无需将捕获的变化数据存储到临时表,无需节点之间的互操作。
Description
技术领域
本发明涉及数据处理技术领域,具体的说是一种基于分布式数据库实现CDC的优化方法。
背景技术
CDC(Change Data Capture,变化数据捕获)是一种变化数据处理技术,可以识别新增、更新和删除等上次修改之后的变化数据。当前已知的数据库CDC实现主要使用了三种技术:
1)基于触发器和存储过程实现变化数据捕获:
该方案通过在源表上建立触发器,并且调用存储过程或者函数,将变化数据存储到一个变化数据临时表中,以供其他应用程序通过CDC查询函数查询捕获的变化数据。
2)后台捕获进程定时抓取、解析增量事务日志,从而捕获变化数据:
该方案在数据库服务器上启动一个捕获进程,定时抓取增量的事务日志,并将与增量日志相关的数据存储到一个变化数据临时表中,以供其他应用程序通过CDC查询函数查询捕获的变化数据。
3)分析数据库的快照,求新旧快照的差分:
后台捕获进程,定时创建数据库快照,并与前一个旧的快照进行全量对比,求差分。这种方法计算量大,实现复杂,实时性不够。并且要保存比较多的快照,耗费比较大的存储空间。对于分布式数据库和海量数据,新旧快照全量对比求差分,效率更加低。
方案(1)、方案(2)和方案(3)都需要额外的存储变化数据的临时表,需要消耗较多的存储资源,增加IO压力。除此之外,方案(1)使用存储过程和触发器,会降低系统性能,很少使用;方案(2)还会在后台常驻捕获进程,读取和解析事务日志,需要较多的计算资源;定时进行增量事务日志的读取和解析,实时性没有保证。方案(3)与方案(2)类似,并且在分布式数据库和海量数据的情况下,效率更低。以上三种方案在单机的情况下,增大了数据库服务器的IO压力,增加了计算资源消耗。在分布式数据库中,由于数据和日志文件的传输,还需要消耗网络资源。以上三种方案主要应用在单机数据库中,在分布式数据库中并不适用。所以这三种传统CDC实现会增大计算、存储和网络资源的消耗,在资源一定的情况下,还会降低系统性能。特别是在分布式数据库和海量数据的存储中,这三种方案更会降低系统性能、增加资源消耗、降低实时性。
发明内容
本发明为了提高现有数据库CDC的效率和实时性,降低计算、存储、网络等资源的消耗,提供一种基于分布式数据库实现CDC的优化方法,使优化后的CDC实现更加适用于分布式数据库,提高数据库系统服务的性能。
本发明的一种基于分布式数据库实现CDC的优化方法,解决上述技术问题采用的技术方案如下:
一种基于分布式数据库实现CDC的优化方法,该优化方法的执行过程包括:
步骤1、在分布式数据库或者分布式数据库的表创建CDC;
步骤2、用户执行DML操作,执行变化数据的SQL,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划;
步骤3、数据库服务将执行计划下发给各个执行节点执行;
步骤4、各个数据库服务节点接收执行计划并执行,计划执行完成后,提交事务,将变化的数据发送至数据池。
进一步的,步骤1创建CDC的具体操作包括:
步骤1.1、首先创建CDC语句;
步骤1.2、随后注册CDC的JOB信息到METADATA中,注册信息包含了CDC对应的库信息、表信息、状态、数据池连接信息。
进一步的,步骤2生成执行计划后,首先应当查询操作对象的CDC注册信息,判断是否创建了CDC:
a)如果没有创建CDC,则生成正常的执行计划,
b)如果发现已经创建了CDC,则根据CDC注册信息生成CDC处理器,并将执行计划和CDC处理器封装为执行计划的派生对象,
随后继续执行步骤3,将正常的执行计划或者执行计划的派生对象下发给各个执行节点执行。
进一步的,步骤4执行过程中,提交事务之后:
如果存在CDC处理器,就启动异步CDC处理器,将数据发送至数据池,
如果不存在CDC处理器,则直接将数据发送至数据池。
更进一步的,启动异步CDC处理器,将数据发送至数据池,这一过程的具体操作为:
1)捕获变化数据,
2)按照DML的操作类型,生成一定格式的数据,
3)连接外部的数据池,并将发生变化的数据输出到外部的数据池。
优选的,数据池可以是文件服务器、文件或者其他消息队列类的中间件。
优选的,数据的格式可以是JSON格式,也可以是AVRO。
更进一步的,当数据为JSON格式,执行的DML操作类型是新增和更新时,输出数据是新增或者更新后的整行数据,CDC捕获和输出到数据池的数据格式具体为:
{
“updated”:<数据行更新时间戳>,
“pk”:<字段名称1:字段名称1的值,字段名称2:字段名称2的值,…,字段名称k:字段名称k的值>,
“data”:{
“<字段1名称>”:<字段1数据值>,“<字段2名称>”:<字段2数据值>,…,“<字段n名称>”:<字段n数据值>
}
}。
更进一步的,当数据为JSON格式,执行的DML操作类型是删除时,CDC捕获和输出到数据池的数据格式具体为:
{
“updated”:<数据行更新时间戳>,
“pk”:<字段名称1:字段名称1的值,字段名称2:字段名称2的值,…,字段名称k:字段名称k的值>,
“data”:null
}。
本发明的一种基于分布式数据库实现CDC的优化方法,与现有技术相比具有的有益效果是:
1)本发明的优化方法适用于分布式数据库,是在事务提交之后,直接启动CDC的JOB,异步将变化数据输出到数据池中,从而可以降低存储空间的占用,减少计算、IO资源的占用,降低网络负载,提升变化数据捕获效率和实时性,提高系统性能;
2)本发明的优化方法无需创建捕获进程,无需解析日志,无需将捕获的变化数据存储到临时表,无需节点之间的互操作,而是点对点将变化数据输出到数据池。
附图说明
附图1是本发明优化方法中步骤1的流程示意图;
附图2是本发明优化方法中步骤2到步骤4的流程示意图;
附图3是本发明优化方法中执行异步CDC处理器的流程示意图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
首先对涉及的名词进行解释:
CDC:变化数据捕获(Change Data Capture),是数据库的一种变化数据处理技术,可以识别新增、更新和删除等上次修改之后的变化数据。
METADATA:又称元数据。是描述其它数据的数据。其使用在于识别资源,实现简单高效地管理大量网络化数据;实现信息资源的有效发现、查找。元数据一经建立,便可共享。
JOB:异步任务。用于获取变化的数据进行组装并发送到外部数据池中。
DML:数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库中数据的基本操作,包括新增、更新和删除操作。
SQL:结构化查询语言(Structured Query Language),是一种特殊的编程语言,用于存取数据以及查询、更新和管理关系数据库系统。
实施例一:
本实施例提出一种基于分布式数据库实现CDC的优化方法,该优化方法的执行过程包括:
步骤1、在分布式数据库或者分布式数据库的表创建CDC,结合附图1,创建CDC的具体操作包括:
步骤1.1、首先创建CDC语句;
步骤1.2、随后注册CDC的JOB信息到METADATA中,注册信息包含了CDC对应的库信息、表信息、状态、数据池连接信息。
步骤2、用户执行DML操作,执行变化数据的SQL,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划。结合附图2,
生成执行计划后,首先应当查询操作对象的CDC注册信息,判断是否创建了CDC:
a)如果没有创建CDC,则生成正常的执行计划,
b)如果发现已经创建了CDC,则根据CDC注册信息生成CDC处理器,并将执行计划和CDC处理器封装为执行计划的派生对象。
步骤3、将正常的执行计划或者执行计划的派生对象下发给各个执行节点执行。
步骤4、各个数据库服务节点接收执行计划并执行,计划执行完成后,提交事务,随后判断是否存在CDC处理器,
如果存在CDC处理器,就启动异步CDC处理器,结合附图3,捕获变化数据,按照DML的操作类型,生成一定格式的数据,连接外部的数据池,并将发生变化的数据输出到外部的数据池,
如果不存在CDC处理器,则直接将数据发送至数据池。
本实施例中,所提到的数据池可以是文件服务器、文件或者其他消息队列类的中间件。
本实施例中,所述数据的格式可以是JSON格式,也可以是AVRO。
通常来说,DML的操作类型包括新增、更新、删除三种。
具体的来说,
I)当数据为JSON格式,执行的DML操作类型是新增和更新时,输出数据是新增或者更新后的整行数据,CDC捕获和输出到数据池的数据格式具体为:
{
“updated”:<数据行更新时间戳>,
“pk”:<字段名称1:字段名称1的值,字段名称2:字段名称2的值,…,字段名称k:字段名称k的值>,
“data”:{
“<字段1名称>”:<字段1数据值>,“<字段2名称>”:<字段2数据值>,…,“<字段n名称>”:<字段n数据值>
}
}。
II)当数据为JSON格式,执行的DML操作类型是删除时,CDC捕获和输出到数据池的数据格式具体为:
{
“updated”:<数据行更新时间戳>,
“pk”:<字段名称1:字段名称1的值,字段名称2:字段名称2的值,…,字段名称k:字段名称k的值>,
“data”:null
}。
综上可知,采用本发明的一种基于分布式数据库实现CDC的优化方法,可以降低存储空间的占用,减少计算、IO资源的占用,降低网络负载,提升变化数据捕获效率和实时性,提高系统性能。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
Claims (9)
1.一种基于分布式数据库实现CDC的优化方法,其特征在于,该优化方法的执行过程包括:
步骤1、在分布式数据库或者分布式数据库的表创建CDC;
步骤2、用户执行DML操作,执行变化数据的SQL,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划;
步骤3、数据库服务将执行计划下发给各个执行节点执行;
步骤4、各个数据库服务节点接收执行计划并执行,计划执行完成后,提交事务,将变化的数据发送至数据池。
2.根据权利要求1所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,步骤1创建CDC的具体操作包括:
步骤1.1、首先创建CDC语句;
步骤1.2、随后注册CDC的JOB信息到METADATA中,注册信息包含了CDC对应的库信息、表信息、状态、数据池连接信息。
3.根据权利要求2所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,步骤2生成执行计划后,首先应当查询操作对象的CDC注册信息,判断是否创建了CDC:
a)如果没有创建CDC,则生成正常的执行计划,
b)如果发现已经创建了CDC,则根据CDC注册信息生成CDC处理器,并将执行计划和CDC处理器封装为执行计划的派生对象,
随后继续执行步骤3,将正常的执行计划或者执行计划的派生对象下发给各个执行节点执行。
4.根据权利要求3所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,步骤4执行过程中,提交事务之后:
如果存在CDC处理器,就启动异步CDC处理器,将数据发送至数据池,
如果不存在CDC处理器,则直接将数据发送至数据池。
5.根据权利要求4所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,启动异步CDC处理器,将数据发送至数据池,这一过程的具体操作为:
1)捕获变化数据,
2)按照DML的操作类型,生成一定格式的数据,
3)连接外部的数据池,并将发生变化的数据输出到外部的数据池。
6.根据权利要求4或5所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,数据池可以是文件服务器、文件或者其他消息队列类的中间件。
7.根据权利要求4或5所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,数据的格式可以是JSON格式,也可以是AVRO。
8.根据权利要求7所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,当数据为JSON格式,执行的DML操作类型是新增和更新时,输出数据是新增或者更新后的整行数据,CDC捕获和输出到数据池的数据格式具体为:
{
“updated”:<数据行更新时间戳>,
“pk”:<字段名称1:字段名称1的值,字段名称2:字段名称2的值,…,字段名称k:字段名称k的值>,
“data”:{
“<字段1名称>”:<字段1数据值>,“<字段2名称>”:<字段2数据值>,…,“<字段n名称>”:<字段n数据值>
}
}。
9.根据权利要求7所述的一种基于分布式数据库实现CDC的优化方法,其特征在于,当数据为JSON格式,执行的DML操作类型是删除时,CDC捕获和输出到数据池的数据格式具体为:
{
“updated”:<数据行更新时间戳>,
“pk”:<字段名称1:字段名称1的值,字段名称2:字段名称2的值,…,字段名称k:字段名称k的值>,
“data”:null
}。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618749.8A CN111782671A (zh) | 2020-07-01 | 2020-07-01 | 一种基于分布式数据库实现cdc的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618749.8A CN111782671A (zh) | 2020-07-01 | 2020-07-01 | 一种基于分布式数据库实现cdc的优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782671A true CN111782671A (zh) | 2020-10-16 |
Family
ID=72760003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010618749.8A Pending CN111782671A (zh) | 2020-07-01 | 2020-07-01 | 一种基于分布式数据库实现cdc的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782671A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463447A (zh) * | 2020-11-25 | 2021-03-09 | 浪潮云信息技术股份公司 | 一种基于分布式数据库实现物理备份的优化方法 |
CN113626453A (zh) * | 2021-07-30 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种元数据变更捕获方法 |
CN115081679A (zh) * | 2022-05-19 | 2022-09-20 | 中核武汉核电运行技术股份有限公司 | 基于cdc的工业数据动态变化自动感知处理系统 |
-
2020
- 2020-07-01 CN CN202010618749.8A patent/CN111782671A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463447A (zh) * | 2020-11-25 | 2021-03-09 | 浪潮云信息技术股份公司 | 一种基于分布式数据库实现物理备份的优化方法 |
CN113626453A (zh) * | 2021-07-30 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种元数据变更捕获方法 |
CN115081679A (zh) * | 2022-05-19 | 2022-09-20 | 中核武汉核电运行技术股份有限公司 | 基于cdc的工业数据动态变化自动感知处理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11829360B2 (en) | Database workload capture and replay | |
US11604804B2 (en) | Data replication system | |
WO2020228801A1 (zh) | 一种多语言融合查询方法及多模数据库系统 | |
JP6416194B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
US9589041B2 (en) | Client and server integration for replicating data | |
CN111782671A (zh) | 一种基于分布式数据库实现cdc的优化方法 | |
US8271430B2 (en) | Methods and systems for metadata driven data capture for a temporal data warehouse | |
US7822710B1 (en) | System and method for data collection | |
CN107038222B (zh) | 数据库缓存实现方法及其系统 | |
US20210256079A1 (en) | Adapting database queries for data virtualization over combined database stores | |
WO2020238597A1 (zh) | 基于Hadoop的数据更新方法、装置、系统及介质 | |
US20140214897A1 (en) | SYSTEMS AND METHODS FOR ACCESSING A NoSQL DATABASE USING BUSINESS INTELLIGENCE TOOLS | |
CN109656963B (zh) | 元数据获取方法、装置、设备及计算机可读存储介质 | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN113312376B (zh) | 一种用于Nginx日志实时处理分析的方法及终端 | |
JP2016021232A (ja) | データ統合システム(dis)のデータの鮮度のチェック | |
CN104199978A (zh) | 基于NoSQL实现元数据缓存与分析的系统及方法 | |
US11429629B1 (en) | Data driven indexing in a spreadsheet based data store | |
CN113901078A (zh) | 业务订单关联查询方法、装置、设备及存储介质 | |
CN112181950B (zh) | 一种分布式对象数据库的构建方法 | |
US11514236B1 (en) | Indexing in a spreadsheet based data store using hybrid datatypes | |
US20210263928A1 (en) | System and method of fetching data from an external program | |
CN112732704B (zh) | 一种数据处理方法、装置及存储介质 | |
CN117390040B (zh) | 基于实时宽表的业务请求处理方法、设备及存储介质 | |
CN116501700B (zh) | 一种app格式化文件离线存储方法、装置、设备及存储介质 |
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 |