
谈谈数据的增量更新
在数据同步的过程中,必然会遇到数据增量更新的需求。但如果没有一个有效的数据增量更新的设计与机制,可能每次上游数据更新时,你都需要将全量的数据同步一遍,即使只有1%的数据发生了更新。
全量数据同步在数据首次同步的时候是需要的,而且定期的全量同步也能够修复一些偶发的数据不完整的问题。
但是全量同步作为定期的增量数据更新方式并不是十分合适的,因为:
- 耗时长:对于具有一定规模的数据量,全量同步通常需要较长的时间,比如几个小时,几天甚至几周,所以全量同步经常无法提供实时或者准实时的数据更新服务;
- 占用资源:全量同步会对数据源和全量同步目标同时产生较高的计算压力,可能会影响平台其他的计算、分析服务;
- 带宽占用:全量同步会占用较大的网络带宽,可能会导致网络产生抖动。
随着数据量的增长,上面几个问题的影响也会变得越来越明显。
如果要做数据的增量更新,你必须在数据源上能找到定位数据更新/变化的方式,这个概念叫做CDC-Change Data Capture-数据变化捕捉。
在实现过程中,有若干种常见数据变化捕捉方式,但以下两种比较常见。
1 基于每一行的更新时间戳来做增量更新
在数据源中,每一行数据通常会有更新时间戳,来表示最近一次创建/变化的时间点。
基于这种情况,我们要做的就是找到哪一列是更新时间戳,基于这个时间戳将需要的增量数据提取回来,大致流程如下:
- 确认每一行的更新时间戳

本文探讨了数据同步中的增量更新方法,包括基于时间戳和数据库更新日志的方式,以及它们的优缺点和挑战。时间戳更新简单易用但无法处理删除,日志更新对数据库影响小但格式不统一。面对性能、时间精度和无更新标记的挑战,需要精心设计增量更新策略。
最低0.47元/天 解锁文章
2544

被折叠的 条评论
为什么被折叠?



