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