Fink CDC 1.0 至3.0的从古至今

news/2025/2/12 22:48:09/

本文主要分享Flink CDC 1.0 至3.0的发展历程,了解其背后的关键特性和发展趋势,探讨其在大数据领域的影响和价值。

一、CDC概述

CDC是一种用以掌控数据变化的软件架构(技术思路),用于捕获和传递数据库中发生的数据变化。当数据库中发生增(INSERT)/删(DELETE)/改(UPDATE)时,它可以将这种变化实时/非实时地将这些变更以事件流的形式推送给其他应用程序或数据存储系统。

例如通过数据库触发器Trigger-based或数据库事务日志Log-based的方式实现CDC:

1)Trigger-based:在数据库进行 INSERT/ UPDATE/ DELETE 操作的时候,会触发执行另一段SQL,就可以在另一张影子表中记录数据的变化。接下来做数据同步就很简单,只需要关注影子表里的记录,然后对应再执行一次即可。

2)Log-based:和Trigger-based非常相似,所有数据的变动要么放下日志里,要么放在影子表里,内容上是一致的。但 Log-based 方法更好利用了数据库本身的核心能力,即大部分关系型数据,在数据发生变化的时候都会产生日志,如果直接用这样的日志来进行数据同步,不但可以在不同的系统间保证 ACID 可靠,对数据库的影响几乎可以忽略不计(不需要修改表结构,也不需要新增影子表),并且日志是实时产生的,可以有更好的时效性:

除了上述示例,还有其它比如表元信息Table metadata或表求差Table differences 的实现方式,皆聚焦于如何实现 Capture 这一动作。

总而言之,CDC 技术极大地提升了数据集成的效率和实时性,使得不同系统间的异构数据同步和共享变得更加可靠和高效,在现代数据架构中扮演着重要的角色。 

下面,扬帆起航,一起看看基于Flink是如何实现CDC的吧。

二、Flink CDC 1.0

1、架构设计

传统的CDC ETL链路中,采集到的数据一般输出到消息中间件如Kafka,然后Flink计算引擎再去消费这一部分数据写入到目的端,目的端可以是各种DB,数据湖,实时数仓和离线数仓等。

Flink CDC 1.0中,基于Flink的两个特性:Dynamic Table 和 Changelog Stream:

  • Dynamic Table:Flink SQL 定义的动态表,动态表和流的概念是对等的;流可以转换成动态表,动态表也可以转换成流。

  • Chan


http://www.ppmy.cn/news/1332622.html

相关文章

【java面试】常见问题(超详细)

目录 一、java常见问题JDK和JRE的区别是什么?Java中的String类是可变的还是不可变的?Java中的equals方法和hashCode方法有什么关系?Java中什么是重载【Overloading】?什么是覆盖【Overriding】?它们有什么区别&#xf…

Spring SpEL在Flink中的应用-与FlatMap结合实现数据动态计算

文章目录 前言一、POM依赖二、主函数代码示例三、RichFlatMapFunction实现总结 前言 SpEL表达式与Flink FlatMapFunction或MapFunction结合可以实现基于表达式的简单动态计算。有关SpEL表达式的使用请参考Spring SpEL在Flink中的应用-SpEL详解。 可以将计算表达式放入数据库&a…

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…

2024-01-25 力扣高频SQL50题目1174. 即时食物配送

题目如下: 配送表: Delivery -------------------------------------- | Column Name | Type | -------------------------------------- | delivery_id | int | | customer_id | int | | order_date…

在Excel把两个单元格的内容,合并后显示在第三个单元格

在Excel中,将两个单元格的内容合并显示到第三个单元格有几种方法: 1. 使用 CONCATENATE 函数(在较早版本的 Excel 中): 在目标单元格(例如 C1)中输入以下公式: CONCATENATE(A…

活字格V9获取图片失败bug,报错404,了解存储路径,已改为批量上传和批量获取

项目场景: 问题描述 原因分析: 解决方案: 完成了批量上传功能,这插件真的很方便 于是写了个批量获取附件的js代码,我真厉害 项目场景: 活字格V9版本获取图片链接Upload 【9.0.103.0】图片上传的存储路…

RockChip DRM Display Driver

资料来源: 《Rockchip_DRM_Display_Driver_Development_Guide_V1.0.pdf》 《Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf》 一:DRM概述 DRM(Direct Rendering Manager)直接渲染管理,buffer分配,帧缓冲。对应userspace库位libdrm,libdrm库提供了一系列友好的…

[晓理紫]每日论文分享(有中文摘要,源码或项目地址)--机器人、强化学习

专属领域论文订阅 关注{晓理紫|小李子},每日更新论文,如感兴趣,请转发给有需要的同学,谢谢支持 如果你感觉对你有所帮助,请关注我,每日准时为你推送最新论文。 分类: 大语言模型LLM视觉模型VLM扩散模型视觉…