数据抽取 之 CDC(变化/增量数据捕获)


  • 基于时间戳CDC
  • 基于触发器的CDC
  • 基于快照的CDC
  • 基于日志的CDC

基本用时间戳CDC,日志CDC!

分为侵入式和非侵入式。侵入式:对源数据库有sql操作,有性能影响(前三种都是)

1.基于时间戳CDC

两列时间,分别记录create_time和modify_time,可以识别变动数据

缺点:

1.无法识别多次更新

2.无法识别删除

3.不具有实时能力

2.基于触发器的CDC【少】

原始数据表+insert触发器,可以在另外一张表中记录对原表的增删改查操作

事件机制

影响性能:因为数据库中直接多了一张表!所以很少使用此方法。

3.基于快照的CDC

比较某个表现在的情况 vs 某个时间点某个表的快照 => 差异检测出更新情况

缺点:需要大量存储空间保存快照

4.基于日志CDC

binlog用来记录对mysql的操作日志,如何开启binlog => https://www.jb51.net/article/157187.htm

场景:日志抽取 => kafka实时/hbase/redis但不会hive(慢) => spark计算 => 展示

(在hive中,transactional=‘true’表明如此我可以进行事务操作如更新,一般情况不更新)

 场景应用:

  • flume收集日志工具 + binlog日志= 整合,实时监控,使用flume-ng-sql-source
  • 专门用来同步binlog的工具:canal,可以实现“ MySQL Binlog通过Canal同步HDFS ”

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM