00:00
好,那现在我们已经掌握了scoop的基本用法了,没错吧,那其实理论上接下来呢,我们就可以使用这个scoop去同步咱们买circle当中的业务数据了,没错吧?啊,那这个具体怎么操作呀。啊,其实很简单啊,那首先我们需要先明确啊,咱们要同步的是,诶,哪张表当中的哪些字段,或者是哪些行对不对,然后呢,诶,写一个与之对应的circle查询语句啊,然后放在这儿就行了,对吧?啊之后呢,再明确,诶我们最终希望把数据写到HDFS的哪个路径,之后呢,是不是再把这个target DR的值给它替换一下呀?那完之后呢,这个任务一提交,这些数据是不是就会被同步到哎我们指定的路径上去啊。没错吧,其实很简单,但是在我们真正开始之前啊,文档当中呢,还有一个理论知识点需要我们去学习一下啊,这个知识点是什么呢?就是同步策略,那这个同步策略都有啥?我们又应该如何去理解这个同步策略呢?啊来咱一起看一下啊,那首先先看一下同步策略都有啥啊,这里边有全量同步,有增量同步,还有新增及变化同步啊这个呢就是三大同步策略,那除此之外呢,还有一些特殊的情况,那一会儿特殊情况我们再特殊的说明啊,OK,那这三大同步策略我们应该怎样去理解它呢?其实我们要想真正的去理解这个同步策略啊,首先我们就得搞清楚我们同步数据的目标是什么,其实我们同步数据的目标很明确,那就是保证数据仓库当中的数据和业务数据库当中的数据是一致的,那由于我们业务数据库的数据呢,每天都会有变动啊,那这个变动呢,还包含每天新增的数据,也包含每天变化的数据,那所以说。
01:41
说呢哎,我们就得每天把这个变动信息同步到数仓当中,来保证两者之间的数据是一致的,那大家可以想一想啊,我们要想保证这两者的数据是一致的啊,你说最简单的方法应该是啥?那其实最简单的方法应该就是每天把业务数据库的全部数据同步一份到数据仓库当中,那这样一来两边的数据它肯定是一致的,对吧?那这种数据的同步策略呢,就叫做每日全量同步。
02:08
啊,那大家应该能够感受出来,这个每日全量同步啊,其实是比较简单的对吧?啊,但是这种策略在某些情况下呢,是不太适用的啊,比如说我给大家举一个例子啊,假如我们的业务数据库有这样的一张表啊,那这张表的数据变动有这样的一个特点,什么特点呢?就是它每天只会新增啊,然后原来的数据呢,是不会发生变化的啊,就是只会新增不会发生变化,那假如这张表我们也采用每日全量同步的话啊,那我们每天呢,就会同步大量的重复数据啊为什么会有重复数据呢?来我举一个具体的例子啊,比如说这一部分数据,就是这张表前一天的全部数据啊,这是前一天的全部数据啊,那假如说我们在前一天的时候呢,诶,已经使用全量同步把这部分数据给他同步到了数仓当中,没错吧?啊,那这部分数据是啥呢?诶是今天新增的数据。注意啊,这张表是不是只会新增,原来的数据是不会发生变化的,没错吧?啊,那假设到了今天我还是采用全量同步,那这下来会有什么问题?是不是这部分没变的数据我们又会同步一份啊,对不对?那这就相当于是每天同步的重复数据。
03:13
那显然对于这样的表,我们采用每日全量同步,这个效率呢是比较低的,那这时候呢,我们就可以考虑第二种同步策略,也就是每日增量同步了,啊这个每日增量同步它具体怎么做呢?啊,就是很简单啊,那比如说这就是我们刚刚提到的那张只会新增不会变化的表,没错吧?啊,那我们每天去同步数据的时候呢,咱只同步啥。只同步他每天新增的这一部分数据,那原来的未发生变化,那部分数据呢,咱们就不同步了,为啥呀?啊,因为原来的数据我们是不是在之前就已经同步到数仓了呀,对吧?啊,那这样一来呢,我们每天只同步新增的,每天只同步新增的,是不是也能够保证我们的业务数据库和数据仓库的数据是一致的呀?好,那这就是所谓的每日增量同步啊,那其实还有一种情况啊,也不太适合使用每日全量同步。
04:05
啊,具体什么情况呢?诶还是一个例子给大家说明一下啊,假如说我们的业务数据库有这样的一张表啊,那这张表呢,首先它的数据量是比较大的,那再一个呢,这张表每天都会有新数据产生,也会有原来的数据发生变化,也就是既会有新增又会有变化,但是它新增和变化的比例是比较低的,比如说举个例子啊,假如全秒呢,一共有500万行数据啊,那每天新增以及变化的条数呢?诶,可能只有几千条。啊,那这样一来是不是这个比例相对来说比较低啊,对吧?啊,那这样的表我如果采用每日全量同步,那它的效率其实也是比较低的啊,为啥?因为这张表绝大多数的数据每天都是不会发生变化的,对吧?啊,那我每天进行全量同步,是不是也会同步大量的重复数据啊,那这种情况下我又应该采用哪种同步策略呢?啊,首先我们来分析一下使用增量同步行不行?增量行不行,增量不行为啥不行啊,啊,因为增量同步是不是只适用于那种只会新增不会变化的表啊,对吧?那咱这儿是不是会发生变化啊,所以说使用增量同步是不行的,那我们到底应该用啥呢?诶在这儿我们可以使用新增及变化同步啊,这个所谓的新增及变化同步呢?哎,就是说我们每天呢,需要从业务数据库当中精确的去找到啊,每天新增及变化的那一部分数据啊,然后呢,只同步这部分数据到数据仓库当中,然后呢,再把这部分数据与数仓当中没有发生变化的这部分数据进行一个整合,那这样一来呢,也能够保证数据仓库和业务数据库的数据是一致的。
05:43
OK啊,那这就是我们刚刚提到的三种同步策略啊,这三种同步策略呢,大家一定要深入的去理解一下啊,一定要明确一下每种同步策略到底适用于什么样的场景,然后呢,我再简单给大家说一下啊,就是我们业务数据库的数据同步到数仓之后啊,那在数仓的表里边儿是如何被保存的。
06:03
啊,那其实这块啊,如果我们采用不同的同步策略啊,那我们保存数据的方式呢,也会有所不同啊,比如假如在这儿呢,我们采用的是全量同步啊,那通常情况下,我们保存这个数据的表呢,就会是一个每日全量表啊,那什么叫做每日全量表啊,首先呢,它是一个分区表,按什么分区呢?按日期分区啊,一天一个分区,一天一个分区啊,那他每天的分区里边保存的是什么数据呢?每天的分区里边保存的就是当天从业务数据库同步过来的全量数据啊,那这就是所谓的每日全量表啊,那再比如啊,我们这儿如果采用的是增量同步,那我们保存数据的表呢,那通常就是一个每日增量表,那什么叫做每日增量表呢?啊,那首先呢,它也是一个分区表啊,那同样呢,是按日期分区,一天一个分区,一天一个分区啊,那他每天的分区里边放的是什么数据呢?很简单啊,那它的每天的分区当中存放的就是我们业务系统同步过来的新增的那一部分数据。
07:08
啊,这就是所谓的每日增量表啊,那如果说我们采用的是新增变化同步呢?呃,那这个表呢,相对来说就比较复杂了啊,为啥?因为前面咱们提到过啊,如果我们采用每日新增及变化同步的话啊,那我们每天需要从业务数据库里边去同步今天的新增及变化的数据,对吧?那之后呢,是不是还得把这一部分数据和数仓当中已存在的未发生变化的那部分数据进行一个整合呀,对吧?像这个整合的逻辑是比较复杂的,那所以说这种表呢,我们暂时就先不展开讲了啊,到后边呢,再详细的给大家去介绍啊,OK,那三大同步策略的内容就全部讲完了啊,那接下来呢,再给大家说一下这个特殊情况啊,这个特殊情况指的是啥呢?来,我们往下看啊,下边一小节啊,来我们看一下,他说某些特殊的表呢,可不必遵循上述同步策略。
08:01
啊,哪些特殊的表能往后看啊,比如说有一些不会发生变化的表,比如说地区表,比如说省份表,或者是民族表啊,你像这些表呢,它大概率呢是不会发生变化的,对吧?啊,那所以你说我们有必要每天去同步它吗?诶,其实没必要的,对吧?啊,对于这样的表呢,我们可以只同步一次,然后呢,在书仓里边呢,只保存一份就够了啊,这就是所谓的特殊情况啊,特殊情况咱们特殊处理就可以了,那最后啊,我们再来把这三大同步策略总结一下啊来,我们先看第一个全量同步策略啊,那假如说这个就是买SQ当中的一张表啊,那这边呢,就是have当中与之对应的一张表啊OK,那这个每日全量同步具体怎么做呀?是不是就是每天都需要把买SQL这张表的全部数据同步一份到have当中对不对?那当然呢,是放到have当中,这张表的一个分区当中,没错吧?啊,OK,那到了第二天呢?第二天买S的数据是不是有可能会发生变化呀,对吧?那OK,那我们就把变化之后的全部数据再同步一份到have当中,那当然了,第二天的数据是不是要放在一个新的分区里边,对不对?一天一个分区,一天一个分区,那这个呢,就是所谓的每日全量同步啊,那每日全量同步适用于什么样的场景呢?来我们看一下啊,那它适用于表的数据量不大,并且每天既会有新数据写入啊,又会有旧数据修改的场景。好,那我们再来看下一个增量同步啊,那同样呢,假如这个就是买SQL当中的一张表,对吧,那后边呢,是与之对应的have当中的一张表啊,那我们做每日增量同步的时候,咱们做的具体工作是啥呀?是不是就是每天把买circle这张表的新增数据给它同步一份,放在哪?是不是放到have的这张表的一个。
09:47
分区当中啊,没错吧,那到了第二天呢?第二天MYSQ是不是还会新增一部分数据,那我们就再把这部分新增的数据放到have的第二一个分区当中啊,也就是一天一个分区啊,这就是所谓的增量同步,其实很简单啊,那增量同步适用于什么样的场景呢?来我们看一下啊,那它适用于表的数据量比较大,并且每天只会有新数据插入的场景啊,那这就是增量同步啊,那我们再看最后一个新增及变化同步啊,那同样啊,假定这就是买SQL当中一张表啊,那后边呢,是have当中与之对应的一张表啊OK,那这个新增及变化同步策略我们每天做的工作是啥呀?那首先我们需要先找到买SQL这张表新增及变化的那一部分数据,没错吧?然后呢,把这一部分数据给它同步到have当中啊,之后呢,我需要将这一部分数据与have当中,诶已存在的没有发生变化的那部分数据做一个什么,是不是做一个整合呀,对吧,那这块具体怎么整合啊,我们现在先不用考。
10:47
虑啊,后续我们会详细的讲的啊,好,那新增及变化同步它适用于什么样的场景呢?诶,它适用于表的数据量比较大,并且每天既会有新增又会有变化的场景,好,那同步策略的内容我们就全部讲完了啊,那一会儿呢,我们需要根据咱们买SQ当中的每张表的特点去选择不同的同步策略。
我来说两句