Flink CDC、OGG、Debezium等基于日志开源CDC方案对比

news2024/12/25 13:21:45

先上一张图,后面再慢慢介绍:

CDC概述

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

CDC主要分以下两类

  • 基于查询的 CDC:优点是实现简单,是通过批处理实现的,需要依赖离线调度,不能保证数据强一致性和实时性;
  • 基于日志的 CDC:实现比较复杂,但是可以实时消费日志,流式处理,可保证数据一致性和实时性;

方案对比

目前市面上的CDC技术比较多,我们选取了几种主要的开源CDC方案做了对比,总体如下图:

如上图所示,从CDC机制、增量同步、断电续传、全量同步、全量+增量、架构、数据计算、生态这八个方面做了对比。可以看出其中的佼佼者主要是Flink CDC和Oracle OGG以及Debezium;

由于基于查询的CDC方案缺陷明显,这里不作讨论,下面我们对基于日志的CDC方案的优劣来做详细的介绍。

各方案优缺点

Flink CDC:Flink CDC是最近几年的新贵,Flink CDC 底层封装了 Debezium,功能比较全面,目前已经迭代到了2.4版本,社区活跃度在几个方案中是最高的;

  • 优点:全、增量一体的分布式数据集成框架;同步时无需加锁;吞吐量大,适合海量数据实时同步;操作简单,SQL即可完成;具有强大的 transformation 能力,通过 Flink SQL 即可完成ETL 中的数据转换;有丰富的 Connector,除关系型数据库外,HBase、ClickHouse、TiDB等也支持,而且支持自定义 connector;
  • 缺点:依赖Flink集群,数据量较大时对服务器要求较高;

Oracle OGG:Oracle OGG历史比较悠久,最初是设计用来从Oracle迁移数据到其它数据库,或者从其它平台迁移数据到Oracle,随着发展,目前已支持Mysql、Hadoop、Hive、Kafka登数据源;

  • 优点:支持增量和全量同步,支持分布式,高性能,支持数据过滤和转化,是目前主流的实时同步方案之一;
  • 缺点:支持的数据库比较少,像一些MongoDB、TiDB等不支持;

Debezium:Debezium最初设计成一个Kafka Connect 的Source Plugin,目前开发者虽致力于将其与Kafka Connect解耦,但当前的代码实现还未变动。下图引自Debeizum官方文档,可以看到一个Debezium在一个完整CDC系统中的位置。

  • 优点:支持全量+增量同步;
  • 缺点:全量同步时会加锁,而且加锁时间不确定,会严重影响业务;最重要的是跟Kafka等消息中间件强耦合,下游数据要经过Kafka;

Canal:主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。

  • 优点:用于单一的MySQL环境做数据同步还不错;
  • 缺点:缺点较为明显,只支持MySQL的CDC,只支持增量同步,全量需要用DataX或者Sqoop,全量和增量同步割裂;不支持分布式;

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

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

相关文章

56、基于51单片机智能医院红外点滴检测输液器报警系统设计(程序+原理图+PCB源文件+参考论文+参考PPT+元器件清单等)

引 言 目前,国际上每年每人的静脉输液量平均为2.5-3.3瓶,就我国而言,每年每人平均输液量8瓶,总量超过100亿瓶,其中每年约有39万人死于输液不良反应 。在如今新冠肺炎疫情持续的情况下,静脉输液仍是临床医学…

chatgpt赋能python:Python中如何选取list13列

Python中如何选取list 1 3列 介绍 对于SEO优化来说,选取适当的数据是至关重要的一步。Python是一门强大的编程语言,可以帮助人们快速而准确地处理数据,进而选择最佳数据进行SEO。在Python中,我们可以使用一些简单的方法来选择li…

kubespray部署kubernetes集群

kubespray部署kubernetes集群 1、kubespray简介 Kubespray 是开源的部署生产级别 Kubernetes 集群的项目,它整合了 Ansible 作为部署的工具。 可以部署在 AWS,GCE,Azure,OpenStack,vSphere,Packet(Bare m…

马原否定之否定观点

事物普遍联系和发展 事物之间的普遍联系的 答案B C考察的是联系的条件性 1.联系对事物的发展有制约和支撑的作用 2.联系的条件可以相互转化 所以我们可以将不利条件转化成有利条件 3.建立联系必须尊重客观规律。 对立统一是事物发展的根本规律、 唯物辩证法揭示了事物发展一…

ELK日志收集系统集群实验

目录 一、实验拓扑 二、环境配置 (一)设置各个主机的IP地址为拓扑中的静态IP,在两个节点中修改主机名为node1和node2并设置hosts文件 1、在虚拟机node1上操作 2、在虚拟机node2上操作 3、测试node1与node2的通联性 三、 安装node1与node2节点的elasticsearch…

大数据Doris(四十四):kafka json 数组格式数据导入到Doris

文章目录 kafka json 数组格式数据导入到Doris 一、创建 Doris 表 二、创建 Kafka topic

[论文笔记]Bidirectional LSTM-CRF Models for Sequence Tagging

引言 本文是论文Bidirectional LSTM-CRF Models for Sequence Tagging的阅读笔记。这篇论文是15年发表的,比上次介绍的那篇还要早。 首次应用双向LSTM+CRF(BI-LSTM-CRF)到序列标注数据集。BI-LSTM-CRF模型可以有效地使用双向输入特征,也因为CRF层可以利用句子级标签信息。…

前端web入门-CSS-day06

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、标准流 二、Flex 布局 组成 主轴对齐方式 侧轴对齐方式 修改主轴方向 弹性伸缩比 弹性盒子换行…

chatgpt赋能python:Python如何优雅地退出程序执行

Python如何优雅地退出程序执行 Python是一种非常强大的编程语言,它易于学习和使用,并拥有许多有用的功能和库。在Python编程中,经常需要退出程序执行。本文将介绍一些Python中退出程序执行的方法,并探讨它们的优缺点。 1. 使用s…

数据库中的SQL是如何执行的?

简介 参考文献:03丨学会用数据库的方式思考SQL是如何执行的 以oracle和MySQL为例,讲解了sql是怎么被执行的,并且对比了执行过程中,oracle和MySQL的异同。 个人感觉,讲解的核心是SQL执行时的缓存机制。 Oracle中的s…

算法刷题-字符串-重复的子字符串

KMP算法还能干这个 459.重复的子字符串 力扣题目链接 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: “abab” 输出: True 解释: 可由子字符串 “ab” 重复两…

计算机网络面试

计算机网络面试 OSI七层模型 七层网络体系结构各层的主要功能: 应用层:为应用程序提供交互服务。在互联网中的应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等。表示层:主要负责数据格式的转换,如加密解密、转换翻译、压缩解压缩等。…

Navicat如何连接MySQL

市面上有很多数据库连接工具,比如Navicat、SQLYog、WorkBench等,用的比较多的,比较好用的,还是Navicat。现在我们就来说说Navicat如何连接Mysql,此文仅适用于小白,大神可略过。 1.打开Navicat,点击左上角的【连接】按钮…

(十)异步-什么是异步(1)

一、什么是异步 启动程序时,系统会在内存中创建一个新的进程。 进程: 构成运行程序的资源的集合。这些资源包括虚地址空间、文件句柄和程序运行所需的其他许多东西。 在进程内部,系统创建了一个称为线程的内核对象,它代表了真正…

chatgpt赋能python:Python迭代循环详解:从基础到高级

Python迭代循环详解:从基础到高级 在Python中,迭代循环是一种非常重要的编程概念。它能够让我们在程序运行过程中多次访问一个数据集或序列,并且以各种方式对其进行操作。在本文中,我们将深入探讨Python中的迭代循环,…

RFID课程要点总结_1 Introduction

1. Introduction Comparison of different automatic identification technologies 首先明确一下比较对象。human identification(cost too high)是人力识别就不用说了。 fingerprint identification: stability 稳定,精确度高&#xff1…

GAN:生成对抗网络的突破与应用

第一章:引言 在当今信息时代,人工智能技术的发展如日中天。其中,生成对抗网络(GAN)作为一种强大的生成模型,引起了广泛的关注和研究。GAN通过两个相互对抗的神经网络,即生成器和判别器&#xf…

【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”

采用Docker容器进行部署和搭建Nacos服务以及“坑点” Docker容器部署Nacos服务安装Docker下载Nacos镜像docker-compose up部署Derby 单机版部署MySQL 单机版部署修改standalone-mysql.yaml MySQL 集群模式部署 初始化nacos数据库Nacos服务的MySQL版本数据库脚本脚本内容 手动创…

chatgpt赋能python:Python遍历4层的最佳实践

Python遍历4层的最佳实践 如果您对搜索引擎优化(SEO)和网络爬虫有所了解,那么您可能会知道遍历多层链接的重要性。在这篇文章中,我将介绍如何使用Python编写一个简单而有效的爬虫程序,以遍历4层链接。我会使用标准的P…

AU 简单混音模板,用于AI换声,简单记录

玩AI换声,记录一下快速入门学到的混音经验 混音成品:【AI绫华/RVC2.0】星之所在 https://www.bilibili.com/video/BV1Ao4y1K7P9 人声轨效果器 多频段压缩器 主要用来控制高频的刺刺声 回声 主要用来使声音更加饱满 自适应降噪 减少毛毛躁躁的噪音&…