大数据CDC技术

2023-11-05

1、简介

        CDC全称是Change Data Capture,是一种捕获增量数据的技术统称,目前主要应用在捕获数据库数据变更的技术。其中数据库变更包括DDL,DML,DCL等语句触发的变更。在数据备份容灾、数据分发、面向数仓的数据集成等场景中广泛应用。在增量数据识别中,增量捕获能否实现更多依赖于源端系统。

        使用场景:企业信息化建设中,有一个板块是企业应用集成,根据集成深度的不同,可以分为界面集成、数据集成、控制集成、业务流程集成。其中界面集成是指统一入口,使分散的系统看起来产生整体的感觉,使最小化代价实现一体化操作的方法。控制集成和业务流程集成,是应用逻辑层的集成,通过通信的方式,调用其他系统方法或流程,来实现企业内外部的信息资产联动。

        数据集成:其中数据集成是应用系统通过中间件、API调用等方式进行数据交互,当下提到的数据集成,更多的是面向分析场景,通过数据集成实现企业内外部数据的汇聚。

        在面向分析场景中,出于网络压力、对源端系统的压力、以及效率等,重点考虑做增量数据的捕获,这样仅识别并获得最近变化的数据,更方便后续得ETL操作。

        首先我们先对增量数据进行定义:有变化的数据行都是增量数据,如新插入的数据、发生修改的数据、被删除的数据。这些数据在数据集成的时候,都需要被准确识别和还原,这样才能保证OLAP侧和OLTP侧的数据一致性。

2、CDC常见方法分类

        常见的增量数据捕获有基于时间戳、快照、触发器和日志四种。分别如下:

时间戳方法:

        需要源端数据库中有相应的时间戳字段,并且这个字段在业务上代表更新时间,(某些情况下代表数据写入变更等操作时间)。

快照方法:

        一般是数据库自带的机制,如关系型数据库的物化视图技术,也可以自己实现相关逻辑,比如每天或定时某些时刻进行数据的备份等操作,但会比较复杂。

触发器方法:

        是传统关系型数据库自带的机制,触发器会在对表执行相关SQL语句如insert、delete、update的情况下触发,并执行一定的业务逻辑,将变化的数据写到另外一张表中,用于增量数据捕获。通常情况,DBA或数据开发管理人员,会自己编写或维护一套相关的触发器。

日志方法:

        是基于日志消费的模式,源端数据库将库表变更以日志的方式记录到外存中,数据集成通过消费、解析日志进行增量数据捕获。如MYSQL的binlog等。

CDC方法特点
特性 时间戳方法 快照方法 触发器方法 日志方法
DBA执行 不是 不是
实时 不是 不是
监听删除 不是
依赖数据库 不是 不是
周期内更新监听多次 不是 不是
区分插入和更新 不是

        DBA执行:是否需要DBA支持,在源端系统(一般是数据库本身支持)做一些个性化配置。

        不依赖数据库:技术选型不依赖数据库类型(例如关系数据库和分关系数据库包括大数据hadoop系列,redis,mongodb,memcache等)。(因为部分数据库不支持这些个性化配置,导致部分增量同步方式非普适性)

3、主流实现方式

        基于SQL:

        主要是离线调度查询作业,通过JDBC的方式,发起一次查询请求,服务端根据查询SQL进行解析、编译、执行优化、返回结果集。这个缺点也很明显,首先是增量捕获过程中,对源端数据库有侵入性,需要源端数据库有增量字段,一般是更新时间字段。其次是基于离线调度的方式,无法保证实时性和数据一致性。比如在查的过程中,数据可能已经产生了多次变化。最后,这种查询方式,对源端数据库有一定的IO压力,所以这种方法需要充分考虑源端系统压力,协调时间窗口,或者考虑从备库中进行数据集成。

        基于数据库日志:

        源端数据库通过启用日志(如Mysql的binlog,oracle的binlog等),将数据库变更记录完整、顺序的记录在日志中,我们把日志作为数据源,进行实时消费,并在下游进行数据还原。这样做保证了数据的一致性和实时性。但整体架构相对复杂,设计的时候要充分考虑重跑重刷得情况导致数据重复,需要考虑exactly-once技术

  4、常见的CDC技术实现

        CDC技术实现可以从实时和离线大体两个风向做区分:

        实时:canal、maxwell、Debezium、FlinkCDC、FlinkX等开源技术。

        离线:Sqoop、DataX。

        以上这几种开源数据的比较:

 5、数据库BINLOG

        binlog一般是关系数据库的操作日志,如Mysql,oacle,记录了数据的变更日志,定位一个LogEvent需要通过binlog fimename + binlog position。按照binlog生成方式,mysql支持三种配置:statement-based、row-based、mixed。一般建议使用ROW模式。

        Statement:基于SQL语句的复制(statement-based replication, SBR),记录的是修改数据的SQL、不记录数据变化,减少日志量。但缺点是存在数据不一致的风险,如update t set create_date=now(),在binlog日志恢复时,会导致数据不一致。

        Row:基于行的复制(row-based replication, RBR):仅保存哪条记录被修改,这种模式保证了数据的绝对一致性。缺点是,更新操作时,有多少记录被变化就会记录多少事件。

        Mixed:混合模式复制(mixed-based replication, MBR):一般的复制使用Statement模式保存binlog,对于Statement模式无法复制的操作使用Row模式保存binlog。节省空间的同时,兼顾了一致性,但极个别情况仍有不一致的情况。

6、实时增量数据集成

 Canal

        主要用途是基于Mysql数据库增量日志解析,提供增量数据订阅和消费。目前支持MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。

MaxWell

        Maxwell同样可以实时读取Mysql的binlog,并生成Json信息,并作为生产者将数据同步给MQ,包括Kafka、Kinesis、RabbitMQ、Redis等。相比canal的优势就是使用简单,更轻量化,并且相比canal,支持初始化操作。

Debezium

        Debezium最早是作为kafka连接器进行设计的,所以和kafka耦合性较强。消费binlog数据后,投递到kafka中,在依赖kafka的connector能力输出到其他存储中。后续的FlinkCDC等技术底层都是基于Debezium进行抽象、改造的。

FlinkCDC

        传统的基于CDC的ETL分析中,通过先采集、然后依赖外部MQ进行数据投递、在下游消费后进行计算,最后在进行数据存储。整体的数据链路比较长,FlinkCDC的核心理念在于简化数据链路,底层集成了Debezium进行binlog的采集、省去了MQ部分、最后通过Flink进行计算。全链路上都基于Flink生态,比较清晰。

FlinkX

        Flinkx已经更名为Chunjun,是一个基于Flink的批流统一的数据同步工具,既可以采集静态数据,也可以采集实时变化数据。功能上可以认为是扩展版的DataX(支持了实时变化数据采集)、从技术和架构上上也迎合了批流一体的概念,目前生态比较完善。

7、离线数据集成

 Sqoop
        目前Sqoop已经从apache顶级项目中被剔除,sqoop支持两个命令,import和export,分别完成关系型数据库到hive(import)、以及hive到关系型数据库(export)、任务触发时,会被解析成MapReduce执行。从当下来看,生态完善性较差,尤其是对数据使用的实时性要求、以及hive本身upsert较弱的局限性等,后续会逐步退出历史舞台。

 Datax
        阿里内被广泛使用的离线数据同步工具/平台,几乎实现了所有常见数据存储的扩展,支持各种异构数据源之间的数据同步。不在赘述
 


        

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据CDC技术 的相关文章

  • 心灵与计算机:解密情感处理

    1 背景介绍 情感处理是人工智能领域中一个重要的研究方向 它旨在使计算机能理解 识别和处理人类的情感 情感处理的主要应用包括情感分析 情感识别 情感挖掘等 随着大数据 深度学习和自然语言处理等技术的发展 情感处理技术已经取得了显著的进展 然
  • 慢思维大脑:SOP流程的心理学背景

    1 背景介绍 慢思维大脑 SOP流程的心理学背景 慢思维是指人类大脑在处理复杂问题 做出重要决策时所采用的思考方式 它与快速 自动的快思维相对 主要通过以下几种方式表现 深入思考 慢思维会让人类大脑深入思考问题的本质 从而找出更深层次的解决
  • 线性代数在数据挖掘中的应用

    1 背景介绍 线性代数是数学的一个分支 主要研究的是线性方程组和向量的相关概念和方法 在数据挖掘领域 线性代数的应用非常广泛 包括数据处理 特征提取 模型训练等方面 本文将从以下几个方面进行阐述 背景介绍 核心概念与联系 核心算法原理和具体
  • 机器智能与人类智能的竞争:技术创新的驱动力

    1 背景介绍 人工智能 Artificial Intelligence AI 和机器学习 Machine Learning ML 是最近几年最热门的技术领域之一 随着数据量的增加和计算能力的提高 机器学习技术的发展得到了极大的推动 机器学习
  • 人工智能与机器学习:未来的编程范式

    1 背景介绍 人工智能 Artificial Intelligence AI 和机器学习 Machine Learning ML 是现代计算机科学的重要领域之一 它们旨在让计算机能够自主地学习 理解和进化 以解决复杂的问题 随着数据量的增加
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 【Mysql】InnoDB 引擎中的页目录

    一 页目录和槽 现在知道记录在页中按照主键大小顺序串成了单链表 那么我使用主键查询的时候 最顺其自然的办法肯定是从第一条记录 也就是 Infrimum 记录开始 一直向后找 只要存在总会找到 这种在数据量少的时候还好说 一旦数据多了 遍历耗
  • 如何利用CHAT做简单的总结体会?

    问CHAT 在测试过程中使用appium python自动化的优点和体会 CHAT回复 使用 Appium 配合 Python 进行自动化测试主要有以下几点优点 1 跨平台性 Appium 支持 iOS 和 Android 平台的应用自动化
  • 【计算机毕业设计】航空信息管理系统

    传统信息的管理大部分依赖于管理人员的手工登记与管理 然而 随着近些年信息技术的迅猛发展 让许多比较老套的信息管理模式进行了更新迭代 飞机票信息因为其管理内容繁杂 管理数量繁多导致手工进行处理不能满足广大用户的需求 因此就应运而生出相应的航空
  • 问CHAT很繁琐的问题会不会有答案呢?

    问CHAT 什么已有的基于极值理论的极端温度重现期主要针对极端高温事件 对极端低温事件研究较少 CHAT 回复 为这主要可能是由于以下几个原因 1 气候变化与全球变暖 当前 全球变暖和气候变化的问题备受关注 这导致科研者更加关注极端高温事件
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • 扬帆证券投资者必知:股票配股与增发的区别你清楚吗?

    配股和增发都是股票再融资的方式 不过二者有一定的区别 1 发行对象不同 配股是向原股东发售一定量股票 一般会以低于市价的价格发售 增发是向全体社会公众发行股票 即新老股东都能获得 2 发行前是否需要公告价格 配股会事先公告配股价 配股的定价
  • 【计算机毕业设计】二手家电管理平台

    时代在飞速进步 每个行业都在努力发展现在先进技术 通过这些先进的技术来提高自己的水平和优势 二手家电管理平台当然不能排除在外 二手家电管理平台是在实际应用和软件工程的开发原理之上 运用java语言以及前台VUE框架 后台SpringBoot
  • 【计算机毕业设计】微信小程序反诈科普平台

    相比于以前的传统手工管理方式 智能化的管理方式可以大幅降低反诈科普平台的运营人员成本 实现了反诈科普平台的标准化 制度化 程序化的管理 有效地防止了反诈科普平台的随意管理 提高了信息的处理速度和精确度 能够及时 准确地查询和修正反诈科普 一
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • Oracle EBS AP发票导入 API Rejection List 第二部分

    Oracle EBS AP发票导入 API Rejection List 第二部分 The report lists the reason the invoice could not be imported and prints a bri
  • Redis分布式锁--java实现

    文章目录 Redis分布式锁 方案 SETNX EXPIRE 基本原理 比较好的实现 会产生四个问题 几种解决原子性的方案
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据

随机推荐

  • 使用 Docker 搭建适用于 HomeLab 的书签导航

    在使用新私有化部署的书签导航应用一个月之后 我们来聊聊书签导航工具 以及介绍如何使用 Docker 在几分钟之内部署属于你自己的书签导航应用 写在前面 我目前使用的书签导航工具的界面是这样的 马赛克掉了一部分链接内容 作为一个使用了十多年
  • 【微信小程序/云开发bug解决方案合集】持续更新中(最新23-3-29)

    一 小程序 1 chooseMessageFile没反应 在电脑端测试是调不出来微信聊天界面的 需要在真机调试中使用 2 pages kaifazhe kaifazhe does not have a method chooseExcel
  • 游戏引擎设计的技术及详解

    游戏引擎的那点事 这东西是个啥 功能 渲染器 渲染流程 物理引擎 粒子 流体 软体 物理 碰撞检测系统 音效 游戏音效 音效分类 按音效格式和制作方式分类 按功能分
  • CentOS 7下安装windows字体

    1 在日常生产中打开文件时发现中文乱码 考虑到编码或者是否有中文字体库 在CentOS 7中执行命令发现字体列表命令无效 上图发现字体库都没安装 接下来就会简单说一下CentOS 7 中安装字体库和中文字体 2 安装字体库 主要用到font
  • 自举电路原理分析

    原文来自公众号 工程师看海 自举电路字面意思是自己把自己抬起来的电路 是利用自举升压电容的升压电路 是电子电路中常见的电路之一 我们经常在IC外围器件中看到自举电容 比如下图同步降压转换器 BUCK 电路中 Cboot就是自举电容 为什么要
  • DataTables从入门到精通

    DataTables从入门到精通
  • ListView与适配器

    ListView与适配器 ListView是什么 ListView是一个以垂直方式在项目中显示视图的列表 即在一个窗口里可以滚动查看数据 比如说查看聊天记录 是一种不能实现确定视图中的内容的适配器视图 adapter view 数据和视图的
  • $nextTick实现原理详解

    vue中有一个较为特殊的API nextTick 根据官方文档的解释 它可以在DOM更新完毕之后执行一个回调 用法如下 修改数据 vm msg Hello DOM 还没有更新 Vue nextTick function DOM 更新了 复制
  • 5 个免费开源的 3D 建模/渲染工具。

    5 个开源 3D 建模 渲染工具 3八 2011 作者 riku 本文采用 CC BY NC SA 2 5协议授权 转载请注明 本文链接 5 个免费开源的 3D 建模 渲染工具 1 Art of Illusion 跨平台 支持 Window
  • 15000cd是多少流明_光通量(lm)发光强度(cd)照度单位(lux)之间的关系

    光通量 lm 发光强度 cd 照度单位 lux 之间的关系 光通量 lm 由于人眼对不同波长的电磁波具有不同的灵敏度 我们不能直接用光源的辐 射功率或辐射通量来衡量光能量 必须采用以人眼对光的感觉量为基准的单位 光通量来衡量 光通量的用符号
  • SetUnhandledExceptionFilter处理未捕获异常

    一 首先看下百度上的对此函数的解释 设置异常捕获函数 当异常没有处理的时候 系统就会调用SetUnhandledExceptionFilter所设置异常处理函数 例如一些程序在出错的时候 会向用户报告说程序那出错就是利用这个 例如QQ 二
  • github时好时坏连接不上的问题

    1 找到自己的hosts文件 直接百度 hosts文件地址 一般都是C Windows System32 drivers etc 2 用ip在线查询工具查询github网站的ip地址 3 用记事本打开hosts文件 如图添加内容 我下载有的
  • 【Python】本地版 Whisper 自动转录器(附源码网址)

    目 录 一 实时自动语音转录器简介 二 开源Whisper实时转录器 三 pyinstaller 打包发布exe应用程序 四 修改版源代码 一 实时自动语音转录器简介 实时自动语音转录器是一种能够自动将语音信号转换为文字的应用程序 它通常具
  • 服务器被攻击怎么办?如何防止服务器被攻击?

    目前 服务器遭受攻击已经成为屡见不鲜的事情了 而且大部分企业都发生过服务器被攻击的情况 从而导致业务无法正常运行 造成严重的损失和影响 那么服务器被攻击怎么办 如何有效应对服务器被攻击呢 跟着小编来看看吧 1 换高防IP或切换高防服务器 流
  • 【华为OD机试真题 Java】创建二叉树

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • Binder机制详解(二)

    系列章节 Binder机制详解 一 Binder机制详解 三 文章目录 前言 一 什么是MMU 二 发展历史 三 相关概念 四 分页机制 1 页表的概念 2 页式内存管理 总结 前言 上一章通过一个例子让我们认识了Binder通信机制不同于
  • HbuilderX微信小程序uniapp分包小白教程&趟坑【伸手党福利】【干货】

    本教程为小白教程 主管操作 具体原理讲解欢迎评论区补充 微信小程序分包原因 1 多人开发 2 引入了大型js 3 单项目多模块需要分包 官方资料 https developers weixin qq com miniprogram dev
  • 扫描指定路径下有多少行代码

    import java io BufferedReader import java io File import java io FileReader import java io IOException Created by qiaoju
  • 使用蓝牙耳机听群晖ds218play中的音乐(audio station)

    缘起 有时需要欣赏nas中的音乐而又不影响家人 有什么方法呢 思路 研究了一下 发现新版的群晖dms支持蓝牙usb蓝牙适配器 可以使用audio station播放 蓝牙耳机收听 步骤 1 购买CSR USB蓝牙适配器 2 插入ds218p
  • 大数据CDC技术

    1 简介 CDC全称是Change Data Capture 是一种捕获增量数据的技术统称 目前主要应用在捕获数据库数据变更的技术 其中数据库变更包括DDL DML DCL等语句触发的变更 在数据备份容灾 数据分发 面向数仓的数据集成等场景