实时捕获数据库变更

news2024/9/17 7:21:08

1.CDC概述

CDC 的全称是 Change Data Capture ,在广义的概念上,只要能捕获数据变更的技术,我们都可以称为 CDC 。我们目前通常描述的CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术,CDC 技术应用场景非常广泛:

  1. 数据同步,用于备份,容灾
  2. 数据分发,一个数据源分发给多个下游系统
  3. 数据采集,面向数据仓库/数据湖的 ETL 数据集成,是非常重要的数据源

2.常用的CDC工具对比

3.CDC实现方案Kafka Connect + Flink

3.1系统架构

在该场景下,由于 CDC 变更记录会暂存到 Kafka 一段时间,因此可以在这期间任意启动/重启 Flink 作业进行消费;也可以部署多个 Flink 作业对这些数据同时处理并写到不同的数据目的(Sink)库表中,实现了 Source 变动与 Sink 的解耦。

3.2优缺点分析

优点:

  1. 数据采集和数据消费通过kafka解耦

缺点:

  1. 不支持表结构变更同步
  2. 需额外部署kafka connect工具,采集源端变更数据
  3. 数据链路太长,变更的数据到下游有一定的延迟

3.3Debezium版本选择

Debezium 1.5.3.Final支持的数据库有:MySQL、MongoDB、PostgreSQL、Oracle、SQL Server、Db2。 PS:高版本的debezium使用的是openjdk11。

3.4Flink版本选择

Flink版本与cdc相关的特性列表:

Flink版本

CDC特性

Flink1.10

不支持

Flink1.11

支持debezium-json和canal-json(mysql)

Flink1.12

支持maxwell-json(mysql)

支持debezium-avro-confluent

Flink1.13+

未变化

PS: debezium-avro-confluent格式依赖的jar是flink-avro-confluent-registry

其他格式依赖的jar是flink-json (Flink 内置)

4.CDC实现方案​​​​​​​Flink CDC Connectors

Flink CDC Connectors 是一组用于 Apache Flink 的源连接器,使用变更数据捕获 (CDC) 从不同的数据库中获取变更。 Flink CDC 连接器集成了 Debezium 作为引擎来捕获数据变化。所以它可以充分发挥 Debezium 的能力。

4.1系统架构​​​​​​​

----Table/SQL API 示例----

----DataStream API 示例----

​​​​​​​4.2优缺点分析

Table/SQL API的方式

优点:

  1. 使用SQL方式,易于使用,且支持多表联合进行数据处理

缺点:

  1. 不支持表结构变更同步
  2. 每张CDC表都内嵌了debezium采集器,对源业务系统影响较大

DataStream API的方式

优点:

  1. 一个source可以同步多表数据

缺点:

  1. 不支持表结构变更同步
  2. 需开发数据落地算子,将devezium-json格式的数据解析后,分别写入目标表中

​​​​​​​​​​​​​​4.3支持的数据源

4.4支持的Flink版本

5.CDC实现方案—OceanMind

基于以上方案的优缺点分析,OceanMind在Flink CDC路线基础上进行了技术创新,通过新建实时任务,进行可视化的算子拖拽配置,即可生成定制的flink cdc流程。此方式降低了使用门槛,可快速满足业务部门的实时数据捕获使用需求,提升工作效率。

5.1系统架构
​​​​​​​

5.2使用示例

5.3方案对比分析

OceanMind集成Flink CDC

Flink CDC Table/SQL

Flink CDC DataStream

Kafka Connect + Flink

全量+增量

资源消耗

★★★

★★

★★★★

对源端系统影响

★★★

处理效率

★★★★

★★★★

★★★

★★★

支持SQL处理

X

X

变更数据延迟

★★★

易用性

★★★★★

★★★★

★★

★★

5.4方案创新点

  1. 新增元数据op_type字段,记录操作标识
  2. 落地算子新增Append模式,将历史变更数据全部记录下来,用于历史溯源
  3. 解决Oracle 全量同步阶段切片不均匀问题
  4. 解决PostgreSQL CDC不支持中文库表名

5.5支持的数据源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1957823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言进阶 10. 字符串

C语言进阶 10. 字符串 文章目录 C语言进阶 10. 字符串10.1. 字符串10.2. 字符串变量10.3. 字符串输入输出10.4. 字符串数组10.5. 单字符输入输出10.6. 字符串函数strlen()10.7. 字符串函数strc()10.8. 字符串函数strcpy()10.9. 字符串搜索函数10.10. PAT10-0. 说反话 (20)10-1.…

RK3568平台(input篇)input数据上报分析

一.input设置事件类型 __set_bit 是一个位操作函数,用于设置一个位图中的特定位,例如可以通过下面的代码将 输入设备设置为支持按键事件: __set_bit(EV_KEY,myinput_dev->evbit) 第一位为设置设置事件类型。 第二位为输入设备的能力 和…

6 网络

6 网络 1、概念2 IP地址3、套接字4、TCP协议4.1 TCP协议的基本特征4.2 建立连接4.4 终止连接4.5 编程模型 5、UDP协议5.1 UDP协议的基本特性5.2 常用函数5.3 UDP通信模型 6、域名解析 1、概念 计算机网络是实现资源共享和信息传递的计算机系统 ISO/OSI网络协议模型 TCP/IP协…

应急响应靶场

靶场搭建 靶场环境搭建:首先确定目标靶机的IP地址: 端口探测:发现只开放了22号端口 尝试利用hydra进行爆破: 成功找到了密码。ssh远程登录之后,添加后门账号: msfvenom生成msf的木马: 利用python快速搭建h…

代码随想录 day 25 回溯

第七章 回溯算法 part04 491.递增子序列 本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 视频讲解:https://www.bilibili.com/vi…

培训第十六天(web服务apache与nginx)

上午 静态资源 根据开发者保存在项目资源目录中的路径访问静态资源html 图片 js css 音乐 视频 f12,开发者工具,网络 1、web基本概念 web服务器(web server):也称HTTP服务器(HTTP server)&am…

解决Windows密码丢失问题:详细指南

解决Windows密码丢失问题:详细指南 引言 最近因为某些工作缘故,接触到windows比较频繁,特此记录一下 当下,计算机安全是每个人都不能忽视的重要问题。然而,有时可能因为忘记密码而无法访问自己的Windows系统&#xf…

NAS、SAN 与 DAS 的比较与应用场景

文章目录 1. NAS(网络附加存储)定义特点实现成本:适用场景 2. SAN(存储区域网络)定义特点实现成本:适用场景 3. DAS(直接附加存储)定义特点实现成本:适用场景 区别总结结…

基于tkinter的学生信息管理系统之登录界面和主界面菜单设计

目录 一、tkinter的介绍 二、登陆界面的设计 1、登陆界面完整代码 2、部分代码讲解 3、登录的数据模型设计 4、效果展示 三、学生主界面菜单设计 1、学生主界面菜单设计完整代码 2、 部分代码讲解 3、效果展示 四、数据库的模型设计 欢迎大家进来学习和支持&#xff01…

文件操作相关的精讲

目录: 思维导图 一. 文件定义 二. 文件的打开和关闭 三. 文件的顺序读写操作 四. 文件的随机读写操作 五. 文本文件和二进制文件 六. 文件读取结束的判断 七.文件缓冲区 思维导图: 一. 文件定义 1.文件定义 C语言中,文件是指一组相…

Chapter 18 Python异常

欢迎大家订阅【Python从入门到精通】专栏,一起探索Python的无限可能! 文章目录 前言一、什么是异常二、捕获异常三、异常的传递 前言 在Python中,异常是一种特定的对象,能够在程序运行过程中被抛出和处理。有效地管理异常不仅可以…

Spark+实例解读

第一部分 Spark入门 学习教程:Spark 教程 | Spark 教程 Spark 集成了许多大数据工具,例如 Spark 可以处理任何 Hadoop 数据源,也能在 Hadoop 集群上执行。大数据业内有个共识认为,Spark 只是Hadoop MapReduce 的扩展&#xff08…

精准客户从何而来?一招让你的客户源源不断!

你们是否还在为找不到精准客户而烦恼? 今天,我要分享一招非常实用的技巧,让你也能拥有源源不断的客源! 首先,我们需要深入了解自己的目标客户。他们是谁?他们的需求是什么?并利用大数据洞察客…

Cocos Creator文档学习记录

Cocos Creator文档学习记录 一、什么是Cocos Creator 官方文档链接:Hello World | Cocos Creator 百度百科:Cocos Creator_百度百科 Cocos Creator包括开发和调试、商业化 SDK 的集成、多平台发布、测试、上线这一整套工作流程,可多次的迭…

【前端 19】使用Vue-CLI脚手架构建Vue2项目

使用Vue CLI构建Vue 2项目 引言 Vue.js 是一个构建用户界面的渐进式JavaScript框架,以其轻量级和易用性受到前端开发者的广泛喜爱。Vue CLI(Vue Command Line Interface)是一个基于Vue.js进行快速开发的完整系统,提供了零配置的项…

Amazon Bedrock + Amazon DynamoDB 数据设计与建模

一、Amazon DynamoDB简介 在当今数字化转型的浪潮中,企业对数据处理能力的需求日益增长,为了应对大规模数据和高并发访问的挑战,选择一款合适的数据库解决方案变得尤为重要。 Amazon DynamoDB,作为亚马逊云科技提供的一种完全托…

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

目录 一、引言 二、图像分类(image-classification) 2.1 概述 2.2 技术原理 2.3 应用场景 2.4 pipeline参数 2.4.1 pipeline对象实例化参数 2.4.2 pipeline对象使用参数 2.4 pipeline实战 2.5 模型排名 三、总结 一、引言 pipeline&#x…

文远知行IPO,L4的梦还是L2给的

文|刘俊宏 编|王一粟 随着萝卜快跑在武汉初步验证了Robotaxi商业闭环,L4自动驾驶的公司们终于迎来了“黎明的曙光”。 7月27日,文远知行向美国SEC(证券交易委员会)提交了招股书,以超越Moment…

Flask Bootstrap #2 - MVC架构

Reference https://medium.com/%E5%B7%A5%E7%A8%8B%E9%9A%A8%E5%AF%AB%E7%AD%86%E8%A8%98/%E4%BD%BF%E7%94%A8-python-flask-%E5%BB%BA%E7%AB%8B%E7%B6%B2%E7%AB%99-353e449a9bc8 1 MVC架构 在 Flask Boostrap #1 - 安装Flask 透过 app.route() 建立路由是 flask API 常见的…

实验2-4-1 求1到N的和*--sum记得累加啊!

//实验2-4-1 求1到N的和//计算序列 1 2 3 ... 的前N项之和。#include<stdio.h> #include<math.h> int main(){int N,sum0;scanf("%d",&N);for(int a1;a<N;a){ suma;//sum进行累加&#xff01;&#xff01;&#xff01;&#xff01;&#xff01…