在进行数据同步的时候,通常会提到两个词,全量同步和增量同步,到底全量和增量到底有何区别。在此之前先对以下几个概念有个了解:
(1)存量:系统在某一时点时的所保有的数量;
(2)流量:是指在某一段时间内流入/出系统的数量
(3)增量:则是指在某一段时间内系统中保有数量的变化
(4)增量=流入量—流出量
(5)本期期末存量=上期期末存量+本期内增量

1.全量

常说的全量表:即当前时刻存放了所有的历史记录数据。 每一次在同步数据的时候,都要将全部的数据进行拉取,这样做的好处就是,每一次进行查询的时候,表里存放了所有的历史数据,不需要再和之前的数据进行关联,便于SQL的书写,但是这样做的不好之处在于,每次都要拉取全部数据,很耗资源,耗时长,当数据量达到一定程度的时候,这样做根本是不行的。

对于一个全量表来说,可以总结成以下三点:
(1)有无变化,都要报
(2)每一次查询的时候都是所有的历史数据
(3)只有一个分区

2.增量表

新增数据,增量数据是上次导出之后的新数据。每一次同步的时候,只是将当天的变化数据进行同步,加入一个用户在昨天进行了一次操作,今天又进行了一次操作,那按照全量的意思来讲,今天在全量表中进行查询的时候其存在两条该用户的数据,而增量表在当天的分区中只有一条该用户的数据,昨天的那条用户数据需要在昨天的分区中进行查找。
因此,一个增量表有如下的几个特征:
(1)记录每次增加的量,而不是总量;
(2)增量表,只报变化量,无变化不用报
(3)每天一个分区

3.快照表

  1. 快照表的存在是为了备份的全量表,其和全量表并无任何差别,只是,快照表为了便于存储数据,按日分区,记录截止数据日期的全量数据<br />(1)快照表,有无变化,都要报<br />(2)每次上报的数据都是所有的数据(变化的 + 没有变化的)<br />(3)一天一个分区

4.拉链表

  1. 在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间。 <br />拉链表,记录一个事件从开始到现在为止的历史变化信息,感觉像是快照表 / 全量表 ,但是拉链表在快照表上进行了优化,在去重的前提下又保留了所有事件从开始到当前的变化信息 ;一般这种表有每一个事件开始活跃到当前的时间信息,记录截止数据日期的全量数据。<br />拉链表适用于以下几种情况吧 数据量有点大,表中某些字段有变化,但是呢变化的频率也不是很高,业务需求呢又需要统计这种变化状态,每天全量一份呢,有点不太现实,不仅浪费了存储空间,有时可能业务统计也有点麻烦,<br />这时,拉链表的作用就提现出来了,既节省空间,又满足了需求。 总的来说,拉链表有如下几个特征:<br />(1)记录一个事物从开始,一直到当前状态的所有变化的信息;<br />(2)拉链表每次上报的都是历史记录的最终状态,是记录在当前时刻的历史总量;<br />(3)当前记录存的是当前时间之前的所有历史记录的最后变化量(总量);<br />(4)只有一个分区