IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> [笔记]CDC(Change Data Capture) 数据变化捕获,实现原理 方案 -> 正文阅读

[大数据][笔记]CDC(Change Data Capture) 数据变化捕获,实现原理 方案

整理了下对CDC的理解,以及基于Oracle的实现方式。备案如下

CDC(Change Data Capture) 数据变化捕获
实现方式原理缺点优点典型方案
时间戳/版本号/修改状态列根据更新时间戳列,识别数据变化。
一般是非实时。
1) 实时性
2) 不能识别多次更新
3) 不能记录删除操作
4) 要改程序
   
快照通过比较源表和快照表来获得数据变化。1) 实时性
2) 不能识别多次更新
3) 需要大量存储空间保存快照
4) 做数据比较的消耗
   
触发器创建数据增/删/改的触发器,将变更数据写入临时表。1) 影响数据库性能
2) 引入一些不可控的影响
 SymmetricDS
java开源项目
1)会根据用户的配置自动安装触发器
2)会定期地再次安装新的触发器和更新原有的触发器(默认情况下,是在每天午夜)
3)数据库触发器记录的数据变化都在DATA表
4)变化的数据被插入到DATA表之后,会被分批交给节点处理
数据库日志绝大多数数据库都会有种日志,记录操作产生的数据变更,用来做多副本同步或者数据恢复。注:得到的是行级更改,如:一条update语句可能修改多行记录。1) 开发难度
? a)没统一标准
? b)格式不公开
1) 实时性
2) 通过数据库自身机制实现

Oracle
? GoldenGate
? LogMiner
? Xstreams

MySql

? Maxwell
Debezium

GoldenGate是直接解析的日志
Debezium及很多三方方案都是基于LogMiner/Xstreams
抓取命令通过网络抓包得到发给Oracle数据库的TNS命令包(仅Oracle响应是执行成功的),从中解析得到数据变更操作的语句和参数。1) 存在漏命令包的可能
? a)抓包程序故障
2) 开发难度

其他不确定:加密、命令包顺序
1) 实时性
2) 不依赖数据库功能
  

基于 Oracle redo log 实现数据变化捕获
方式介绍说明
Oracle提供解析原生日志  
GoldenGate  
LogMiner是由一组SQL包和一些动态视图组成,能帮助我们从 redo logs (Online/Offline) 中提取数据。特别是可以分析出所有对于数据库操作的DML和DDL语句。Oracle 8i 开始提供的工具
后续可能被阉割或砍掉?Vs. Xstreams & OGG
XStreamsOracle数据库组件和API,能够直接解析出数据库操作的DML和DDL发送给应用程序。需要购买OGG授权
最初可能是要给OGG用的,但最终OGG是直接解析的 redo log
三方库/工具OpenLogReplicator
(c++开源项目)
是一个转换器,读取 Oracle redo log 并输出成JSON。1) 不支持 Oracle 11.2 之前的版本;
2) 不保证能捕获100%完整的数据库事务操作
? a) 如果遇到无法解码的 redo log 会立即停止,但用户可以强制跳过无效的日志记录并继续工作;
? b) 有许多安全检查来验证 redo log 的完整性;
Debezium
(java开源项目)
支持多种数据库的数据捕获,但对Oracle 数据库实际是调用? LogMiner or Xstreams 实现的。 
  

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/debug_fan/article/details/121035162

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:37:23  更:2021-10-30 12:38:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:27:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码