etl 增量对比解决方案 etl-engine 如何实现增量对比
什么是增量对比
增量是相对于全量来说的,它们都是处于“同步数据”这个场景中。
- 全量同步实现的逻辑是不管原表与目标表数据是否发生过变量,都要定期将原表数据全部覆盖到目标表,以保证目标表数据的完整性。
- 增量对比实现的逻辑是将原表与目标表的数据通过算法进行对比,然后只将差异数据(增加、删除、修改)同步到目标表,在最小化操作目标表的同时还保证了目标表数据的完整性。
增量对比的必要性
模拟一个使用场景,业务系统A表中的数据要同步到数据仓库B表中(最简单的样例是A表与B表结构完全一样),
- 全量同步实现方式:
把A表数据全部同步到B表中,目的是让两表数据始终保持一致,这种方式一般都是采用简单粗暴的方式来实现,实现起来就是先删除B表数据,然后再将A表数据全部插入到B表,
优点是操作简单,缺点就是数据量大时(假设A表有1亿条记录,其中只有一条记录发生变化),也要先删除B表中的1亿条记录,然后再将A表中的1亿条记录插入到B表中 ,很显然全量同步方式已经不适合了。
- 增量对比实现方式:
1、选择出A表与B表中业务属性相同的字段作为对比的主键;
2、根据主键进行两表的对比,如果主键不同,证明A表中有数据删除或新增;
3、如果主键相同,再对比其它字段,如果其它字段都相同证明数据未发生变化,否则A表中有数据做了修改。
4、将差异数据同步到B表中。
优点是只将差异化数据同步到B表中,缺点是要事先按条件进行筛选对比的记录集(事先做好充分的业务分析),否则要对比的数据量过大会占用大量内存进行运算,并且等待对比结果的时间也很长(对比时间的长短取决于对比数据量的大小)。
etl-engine增量对比节点
etl-engine 提供的增量对比节点实现了上述增量算法,只需要按配置要求进行相关配置,很容易实现增量对比效果并直接将差异数据入库到目标表(或转存差异数据),提高了开发人员及实施人员的工作效率。
增量对比场景1
增量对比场景2
参考资料
[免费下载](https://github.com/hw2499/etl-engine/releases)
[etl-engine使用手册](https://github.com/hw2499/etl-engine)
[etl-crontab使用手册](https://github.com/hw2499/etl-engine/wiki/etl-crontab%E8%B0%83%E5%BA%A6)
[嵌入脚本开发](https://github.com/hw2499/etl-engine/wiki/%E5%B5%8C%E5%85%A5%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91)
[etl-engine配置样例](https://github.com/hw2499/etl-engine/wiki/etl-engine%E4%BD%BF%E7%94%A8%E6%A0%B7%E4%BE%8B)
1 声望
0 粉丝
推荐阅读
dbtemplate 是什么
可嵌入到设备上,充当访问设备端数据库的中间件,也可以是小型WEB服务端的选择(当然要看你业务的复杂程度,基本上数据表的操作都能满足,适合快速交付使用)。
weigeonlyyou阅读 350
花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
民工哥赞 14阅读 1.9k
终于卷完了!Redis 打怪升级进阶成神之路(2023 最新版)!
是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的IO与性能的瓶颈,同样它是关系型数据库的一个补充,有着比较好的高效率与高性能。专注于key-value查询的redis、memcached、ttserver。
民工哥赞 10阅读 810
算法可视化:一文弄懂 10 大排序算法
在本文中,我们将通过动图可视化加文字的形式,循序渐进全面介绍不同类型的算法及其用途(包括原理、优缺点及使用场景)并提供 Python 和 JavaScript 两种语言的示例代码。除此之外,每个算法都会附有一些技术说...
破晓L赞 7阅读 906
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...
民工哥赞 6阅读 450
「刷起来」Go必看的进阶面试题详解
逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详解。
王中阳Go赞 4阅读 1.9k评论 1
架构设计-高性能篇
大家好,我是易安!今天我们谈一谈架构设计中的高性能架构涉及到的底层思想。本文分为缓存架构,单服务器高性能模型,集群下的高性能模型三个部分,内容很干,希望你仔细阅读。
架构狂人赞 4阅读 771
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。