[转帖][大数据]ETL之增量数据抽取(CDC)
https://www.cnblogs.com/johnnyzen/p/12781942.html
目录
- 1 CDC 概念
- 2 CDC 常见解决方案
- 2.1 基于时间戳的CDC 【侵入式CDC + 异步CDC】
- 2.2 基于触发器的CDC 【侵入式CDC / 非侵入式CDC + 同步CDC】
- 2.3 基于快照的CDC 【非侵入式CDC + 异步CDC】
- 2.4 基于日志的CDC 【非侵入式CDC + 异步CDC】
- 2.5 补充方案:与数据库引擎直接集成的CDC 【侵入式CDC + 同步CDC】
- 3 参考文献
- X 推荐文献
关于:转载/知识产权
本文遵循 GPL开源协议,如若转载:
- 1 请发邮件至博主,以作申请声明。
- 2 请于引用文章的显著处注明来源([大数据]ETL之增量数据抽取(CDC) - https://www.cnblogs.com/johnnyzen/p/12781942.html)。
关于:本文由来
本文系CD-SFWY公司第二阶段产品培训(ETL融合数据产品)的试题部分的个人思考答案(员工:ZT - Johnny)
- 文中所涉技术、观点均具备行业内公开技术的特征
- 博文内容与公司和产品本身无关,故与保密无关
- 网络中,CDC相关博文甚少,故而觉得有必要写一篇笔记性的、科普性的文章~
- 如若描述不当之处,欢迎指正、并进一步沟通,感谢~
1 CDC 概念
1.1 定义
Change Data Capture,变化的数据捕获,也称:【增量数据抽取】(名词解释)
CDC是一种实现数据的增量抽取解决方案,是实现【ETL整体解决方案】中的一项子方案/子问题。(对CDC的定位)
1.2 需求背景
在ETL项目中,面临需要抽取哪部分数据加载到数据仓库?全量抽取,还是增量抽取?
1.3 考察指标
如何捕获变化的数据是增量抽取的关键,对捕获方法一般有2点要求:
- 准确性:能够将业务系统中的变化数据准确地捕获到;
- 性能:尽量减少对业务系统造成太大的压力,影响现有业务。
2 CDC 常见解决方案
按CDC方案的任一操作是否对数据源系统产生影响(性能、功能等),分为:【侵入式CDC】、【非侵入式CDC】
按CDC方案所抽取的数据与数据源系统的变化数据是否在规定时间内同步,分为:【同步CDC】、【异步CDC】

以下,对各实现方案进一步地详细描述。
2.1 基于时间戳的CDC 【侵入式CDC + 异步CDC】
【过程】
首先,对数据加上【时间戳】;(加时间戳)
然后,全记录中通过【关键字段】(新设判断是否新增、更新等状态的属性、索引等)对比;(全量对比)
最终,将未出现在已采集/存储的数据集中的新采集数据记录存储下来;反之,则:不予采集/存储。【特点】简单、常用、暴力
1 需要【新建数据库表】,以存储变化的、新增的数据记录。
2 大数据量的情况下,需要有优异的查找、排序【算法】作支撑,否则,对比效率低而导致效率低下
3 【无法实时】捕获
4 不能记录删除记录的操作
5 无法识别单位捕获时间差内的【多次更新】(∵无法实时捕获,存在抽取时间差)
2.2 基于触发器的CDC 【侵入式CDC / 非侵入式CDC + 同步CDC】
【概念】
当执行INSERT、UPDATE、DELETE等SQL语句时,可预先编写、激活数据库里的触发器,以调用、执行数据抽取动作。【过程】
首先,可用触发器来捕获变更的数据,并把数据保存在中间临时表里;
然后,将这些变更数据再从临时表取出,抽取到数据仓库的过渡区中。【特点】实时
1 大多数场合下,不允许向操作型数据库里添加触发器,且这种方法会降低系统性能,所以用的不多。
2 可在调用数据库的后端服务器层面编写触发器模式的程序,间接实现数据库中触发器的能力。
3 基本能达到实时增量抽取
2.3 基于快照的CDC 【非侵入式CDC + 异步CDC】
【概念】
可通过比较源表和快照表来获得数据变化。【特点】
1基于快照的CDC可检测到插入、更新和删除的数据 (相比基于时间戳的CDC的优点)
2需要大量存储空间来保存快照
2.4 基于日志的CDC 【非侵入式CDC + 异步CDC】
- 【概念】
源数据库会把每个插入、更新、删除操作记录到日志里。
通过分析已经发生的事件提交(commit)的日志记录来得到增量数据信息,有一定的时间延迟。 - 【特点】复杂、异步、非侵入式
2.5 补充方案:与数据库引擎直接集成的CDC 【侵入式CDC + 同步CDC】
例如:数据库厂商Oracle
Oracle新增CDC特性,其在【数据库层面】上直接实现增量抽取功能;
在【性能层面】,由于和数据库引擎的直接集成,比第三方的实现方案应具有一定的优势。
3 参考文献
X 推荐文献
- 数据仓库学习笔记:数据仓库增量抽取(CDC)有哪些方式? - CSDN
(2021-01-06 补充)
[转帖][大数据]ETL之增量数据抽取(CDC)的更多相关文章
- [大数据]ETL之增量数据抽取(CDC)
关于:转载/知识产权 本文遵循 GPL开源协议,如若转载: 1 请发邮件至博主,以作申请声明. 2 请于引用文章的显著处注明来源([大数据]ETL之增量数据抽取(CDC) - https://www. ...
- Tapdata 肖贝贝:实时数据引擎系列(六)-从 PostgreSQL 实时数据集成看增量数据缓存层的必要性
摘要:对于 PostgreSQL 的实时数据采集, 业界经常遇到了包括:对源库性能/存储影响较大, 采集性能受限, 时间回退重新同步不支持, 数据类型较复杂等等问题.Tapdata 在解决 Pos ...
- 如何实现Qlikview的增量数据加载
笔者备注: 刚刚接错Qlikview,上网搜集的资料,如何处理增量数据. 1 寻找增量时间戳(1)各种数据库:表的创建时间字段和修改时间字段或者最后的修改时间字段:(2)sql server:可以用找 ...
- Qlikview 处理增量数据的脚本
一般设计Qlikview报表的时候需要些2个脚本文件,一个针对Qlikview的Server job 导出数据到qvd数据文具. 另一个用户访问的Qlikview的脚本是直接展示qvd文件的数据. 事 ...
- sqoop导入增量数据
使用sqoop导入增量数据. 核心参数 --check-column 用来指定一些列,这些列在增量导入时用来检查这些数据是否作为增量数据进行导入,和关系行数据库中的自增字段及时间戳类似这些被指定的列的 ...
- DataPipeline的增量数据支持回滚功能
DataPipeline的增量数据支持回滚功能 第一步:数据任务有增量数据时,回滚按钮激活,允许用户使用该功能进行数据回滚. 第二步:点击回滚按钮,允许用户选择回滚时间或者回滚位置进行数据回滚.选择按 ...
- ETL中的数据增量抽取机制
ETL中的数据增量抽取机制 ( 增量抽取是数据仓库ETL(extraction,transformation,loading,数据的抽取.转换和装载)实施过程中需要重点考虑的问 题.在ETL过 ...
- 大数据ETL详解
ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...
- Mysql大数据备份和增量备份及还原
目前主流的有两个工具可以实现物理热备:ibbackup和xtrabackup ;ibbackup是需要授权价格昂贵,而xtrabackup功能比ibbackup强大而且是开源的 Xtrabackup提 ...
- 大数据离线分析平台 用户数据Etl
Etl目标 解析我们收集的日志数据,将解析后的数据保存到hbase中.这里选择hbase来存储数据的主要原因就是: hbase的宽表结构设计适合我们的这样多种数据格式的数据存储(不同event有不同 ...
随机推荐
- Spring WebFlux 简介
本文基于 Spring Boot 2.6.0 基于之前提到的 Reactor 的出现,使得编写响应式程序成为可能.为此,Spring 的开发团队决定添加有关 Reactor 模型的网络层.这样做的话将 ...
- Angular 实现分页器组件
很感谢 angular实现简单的pagination分页组件 - Amor丶Diamond - 博客园 (cnblogs.com) , 我根据这位博主代码做了修改, 增加了跳转和每页行数功能. 先看图 ...
- 如何在SAP GUI中快速执行新的事务代码
当我们成功登录SAP的某个连接后,在SAP GUI起始页(SAP轻松访问),我们可以通过点击[收藏夹]或者在界面左上角的输入框输入对应的事务代码,直接进入对应事务的界面.但是下面列举的场景,你是否知道 ...
- 如何使用loki查询日志中大于某一数字的值的日志
简介 loki是一款轻量级的日志收集中间件,比elk体系占用的内存更小,采用go语言开发,可以利用grafana来查询loki中存储的日志,loki存储日志只对提前预设的标签做索引,所以日志存储空间占 ...
- JavaScript异步编程3——Promise的链式使用
目录 概述 详论 1️⃣回调地狱 2️⃣Promise实现 参考 概述 在上一篇文章<JavaScript异步编程2--结合XMLHttpRequest使用Promise>中,简要介绍了A ...
- windows环境下如何优雅搭建ftp服务?
目录 0. 前言 1.ftp简介 2.下载Apache FTPServer 3.下载并解压压缩包 4.修改配置文件 4.1 修改users.properties配置文件 4.2 修改ftpd-typi ...
- 如何去学好JS的8条小建议
摘要:如何才能学好JS?在这里给大家总结一些学习Js的经验,希望能对你们有所帮助. 在我们第一阶段完成HTML+CSS的学习之后,很多同学都会被第二阶段JS难倒--JS语法.JS数据类型.JS对象,J ...
- 云图说|移动应用安全服务—App的体检中心,全面检测,安全上路!
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 移动应用安全服务 ...
- 华为云UGO正式公测:4大核心优势破解异构数据库迁移难题
摘要:华为云数据库推出了数据库和应用迁移 UGO(Database and Application Migration UGO,简称为UGO),是专注于异构数据库对象迁移和应用迁移的专业化工具,帮助用 ...
- 华为云GaussDB深耕数字化下半场,持续打造数据库根技术
摘要:华为云数据库CTO庄乾锋携华为云数据库多位技术专家和优秀合作伙伴共同参与DTCC2021大会并发表了重要主题演讲. 10月18日,以"数造未来"为主题的第12届中国数据库技术 ...