00:00
好,接下来呢,我们继续往下看啊,有三节课呢,我们把这个数据已经生成完了,生成完呢,就是你在这个SQ样里面能够看到MYSQL里面对应生成的数据,这样呢就OK了,OK之后呢,来到下一节,就是说同步策略。什么叫同步策略呢?那现在抛出一个问题。呃,还是这里面MYQ里面现在已经数据了。啊,并且把安装好了,SCO呢也已经准备到位了。现在的问题是,我把买里的数据要往HP里面导HTFS里面导。那问题是MYQ里的所有的数据我都要正常的每天导一次,每天导一次吗?比如说买里面,假如每天里面有个。就订单吧,几十万订单啊,几十万的订单,几十万的订单。嗯,而且呢,每张表里面都有很多数据。那你要把所有的数据都导过来吗?哎,并不是这样的啊,并不是把这里面所有的数据都导过来,那这里面在导入的这个策略过程当中呢,分这么几块啊,分这几块。
01:06
呃,数据同步策略,包括全量表,增量表,新增集变化,乍一看晕了,什么叫全量表,增量表来一个一个来说,那第一个呢,叫全量表。那全量表的含义呢?就是把MYSQL里面这张表的所有数据。全部倒回来。比如说来一张表啊。里面找一个。一级分类,比如说商品的这个一级分类,这就是一张表,这表里面存储了这么多信息,18条是吧?那我就会把这18条数据全部导入到AJS。啊,每天倒一份,为什么要每天倒一份呢?大家有没有想过我每天倒一份?那如果你看啊,这里面有新的商品,商品上架,会有这个这个有一些商品推出,比如说谁呢,这个去。被退出了,那就相当于这张表已经发生更发生更改了,那在你的书里面如果没有进行更改,那就不对了。
02:07
那你需要怎么做呢?哎,你需要做的是这样的,这里面不是每天的数据吗?好,那我在as。里面就建对应的分区。比如说今天3月10号。数据找过来,那第二天的时候。我还是要全量的再导一份。啊叫3月11号。然后再来一份,3月12号。你只要有数据,我就全部拷过来,那这样做的好处什么呢?你始终拿到的都是当前这张表里面最新的数据。对吧,全部的最新数据啊,那至于至于这个定不定时器哈,我们后面会有阿兹卡班对吧,进行一个调度。对啊,那就是每天倒一份,然后13号那再倒一份。那你会发现哇,这里面是一天一个备份,一天一个备份,那是不是这个十盘空间还是很占磁盘空间呢?对,它确实很占磁盘空间,但是呢,你想想我这里面才18条啊。
03:05
18条的话,能能有几KB的数据啊,你就是这个复制这个1000份,它也没多少数据啊,对吧?哎,所以说这块呢,如果数据量比较小的话,那我们就是导量。就行了,就全部来一份就倒一份,那比如说这个像这个二级分类,它也是你看到这个里面啊,挺多的30条。30条能有多大呀,就那么三个字段是吧,啊,连连这个1KB都不到啊,HB都不到啊行,那这个呢,就是全量表,就是把这个存储完整的数据,你说整个这里表里面有什么数据,我就全部倒过来。那一块呢,叫这个增量。它存储新增加的这个数据。增量表,那比如说我给大家找一个什么样什么样类型的是增量表呢。打开。打开找一个支付吧,支付。这呢是一个支付详情。啊,一个支付表,看这个呢是支付时间,比如说对某一个商品进行了一定的支付。
04:06
啊,这是一条信息,那这个支付表的特点呢,它就是一旦产生它就不会变化。比如说你3月10号这里面有这些订单。那到了3月11号或者3月12号,他不会对以往的这个订单进行一个修改。那问题来了哈,你看啊,那就是上面这是这个买车库里的数据,我往这个ADS里面导哈,往A里面导,导的过程当中呢,诶3月10号建一个分据。对吧,那我就已经把这个3月10号从这到这的数据已经倒过来了,那我3月11号再建一个分区。那问问你就是如果你要全量导的话,那我是把3月10号,3月11号数据都倒过来,那都倒过来的话,那我这个这一块的数据其实没有必要啊。为什么说没有必要呢?因为3月10号这个分区里面已经有了。而且我们能确定的是,这里的数据没有变化。
05:00
对吧,你能改变这个支付这个订单吗?是不可能改变的。哎,不可能改变的,那不可能改变的话,如果你公司有钱的话,或者说这个机器服务器这个性能各方面非常优越,你导全量就说你记住哈,你导全量表肯定是能满足要求的,所有数据都过来。但是问题是有没有必要的问题,哎,正常情况下呢,是没有必要,比如说3月10号我建一个分区,3月11号我指导你这个3月11号的数据导过来就行了。哎,以后呢,我要想查数据的时候,那我就按这个分区去查。哎,这样就OK了。这就是这个增量表的含义,因为增量表的特点呢,就是以往的数据不能变。哎,那我才能导增量,如果以往的数据,这3月10号的数据这个产生了之后,他在3月11号有可能对这个数据又操作了。那这种不行啊,这种不能导增量啊,不能增量OK,那你看除了这个支付表能导这个增量之外,嗯,还有谁能导这个增量呢?我看一下啊找一下。
06:08
嗯,订单详情对。我再找一个订单详情。订单详情。订单详情的特点也是。他只有这个订单详情的一个创建时间,比如说3月10号哦,创建了这么多。那我就直接把3月10号的数据放到这个have的一个分区里面。那3月11号的数据呢?哎,我再放到3月11号的一个分群里面,那以后我想用到3月10号的数据,那我就关联去查询3月10号了,想查3月11号的,那就查3月11号的,想全面扫描,那我就每个表每个分区都关联一下。这样就能实现我们想要的这个结果哈。好,回来。那刚才说了一个是全量啊,全量肯定是都能满足需求啊,另一个是增量,增量呢就要求你这个数据不变化。那再往下呢,是新增极变化。
07:02
新增级变化,你说我存储这些数据啊。它有新增加的,也有以前数据的一个变化的,那这里面最典型谁呢?订单。找一下订单表。这是一个订单表,那订单里面往右看。看到这他这里面有一个订单的创建时间和修改时间。创建时间3月10号了啊,这是3月11号的数据,那如果你3月10号,比如说对3月10号的数据创建一个分区。对吧,创建一个分区,那么到了3月11号呢。到了3月11号。他会对3月10号的有一部分数据呢,是对他一个修改。有一部分数据呢,是3月10号新增的,就是这里面它有自己新增加的,有一部分呢,是把这个3月10号的数据进行改了,然后又并过来了。啊,有这些数据。那这块你怎么找呢。那同学说,那简单的,我把这些所有的数据直接导过来不就完了吗?
08:01
我说把3月10号的和3月11号的都都过来。这肯定满足要求。那你捋捋这个思路哈,我直接覆盖,把你这些所有的数据直接漏过来。可以没问题,但这样带来的问题就是什么呢?啊,这个数据量太大啊,数据量太大,因为我们每天这里面的数据量呢,都是这个,像一个小电商啊,也是这个几十万条啊,几十万的订单,每天几十万的订单,那一个月累积下来的话就是这个啊上百万啊,如果个别大的话,就上千万的订单啊,数据量呢,是越来越越来越大啊,那你这里面数场里面存储的空间啊,压力比较大,同时呢,主要是因为计算的压力比较大。因为你只要计算,就要进行一个全表的扫描。就说你这里的所有的数据都会过来。那这个啊不合适,那我们怎么办呢?由于你数据量比较大,而且呢还变化。那这种我知道你的新增和变化什么意思,如果你的创建你看啊,这是3月10号的数据,我们先把3月10号的倒过来。
09:01
对吧,哎,你创建时间是3月10号的就没问题了,倒过来,然后3月11号的时候。我们导什么呢?我导创建时间或者是操作时间是3月11号的数据,那比如说你看下面这块,这是它的创建时间是3月11号,那肯定稳稳的倒过来没问题。那问题是上面这一块,看这里面他会对你3月10号的有一些订单进行修改,比如说这个。比如说这条。这三条数据他是对3月10号的数据的一个修改,那我也给他倒过来。哎,我记住你变化那就简单了,那这事你看啊,这事就简单了,怎么说呢,3月11号的数据,它存储着3月11号新增的数据,同时呢,又存储着3月10号变化的数据。3月10号变化的数据,那剩下的这些,那如果你再想查这些就是没变化的数据,那你是不是从3月10号里面就能取到,比如3月10号里面能取到一直没有变化的。那3月11号里面能取到3月10号变化的和3月11号新增加的。
10:05
那我整个数场里面就能代表了你这里面所有的数据。啊,这个数据,那我省去了哪一部分呢?省去了3月10号没有发生变化的订单的表。捋一下这个关系啊,这里面有这么几个状态。啊,首先呢,是有这个3月10号的数据,假如说3月10号数据对吧,然后呢,到了3月11号。那3月10号的数据包括什么呢?包括两部分,一个呢是三月11。新创建的数据,还有3月10号修改的数据,修改的数据那我省去了谁呢?省了哪一步呢?省去了。3月10号没有变化的数据,没有变化的数据,那比如说3月10号这里面哈,一共呢,它有了这么呃1亿条数据。
11:05
一条数据,一共一条数据,但是呢,到了3月11号。只有1万条儿,数据发生变化。1万条发生变化,那他只有1万条发生变化的话,那就呃,1万条的少1000万吧,1000万。嗯,1000万条,那我还剩下9000万条。对吧,那我这一块呢,就已经省去了9000万条,重新的一个导入,省去了这一块,那这样的会对这个数仓啊,相当于是一个呃一个优化,当然如果你这个数据量比较小哈,那每天都全量,那肯定是最好的啊,确实有这个公司啊,有这种这个啊小公司小公司一共这么27张表。那27张表全部全量。
12:04
啊,全部全量哈,你说你资源允许的情况下,全不全量全倒呗,每天都倒一份啊,这个无所谓,那他只剩这个,这就就查最后一天的啊就行了哈,那这样的话,嗯,那如果你出去面试的话,那肯定这个面试官是接受不了的哈,稍微正规一点啊,有点规模的公司呢,都不会这样去这样去做,嗯,行,这是这块,那就是导他的新增和变化,就能代表他其实所有的全部的数据哈。那还有一些特殊的表,那这些特殊的表呢,它只存储一次。比如说哪些表呢,比如说时间表。有些表你只需要存储一次。这个你看这个是后来的时间是吧,哎,时间说这个,呃,这个这一天呢是元旦,二呢表示春节,三表示什么清明,嗯,四暂劳动节,五月份端午节,六月份中秋节。啊,这个七啊七啊,不是不是月份啊,是编码,那七呢表示国庆节,那这之后呢,这个是year。
13:02
这是2019年到2020年,呃,所有的节假日哈,这是2019年到2020年对应的。对应的这些节假日,这七个节假日的时间哈,对应的这个假日时间。那还有一个date in for that in for呢,这张表呢,就是这个,你看啊呃,什么日期,然后呢,哪一个。嗯,这是周一,这是周的ID,周day,这是某一,是某一个月。这是一个季度。哇,这数据量有点少,回头我给大家导导另一张表啊,这数据量有点小。我看看还有什么地区,还有这个,还有个像这种省份这个表,你像这种省份的表啊,说实话你说它会总变化吗。对吧,啊不会啊,至少这个最近这几年它不会变啊,而且变化的时候呢,你知道的变化了,手手动这个改一下啊也就OK了,所以说这块呢,也没有必要每天都去导这一份。你想每天导一份这个省份有啥用啊,对吧,没有什么用啊,包括这个,还有这个地区是哪一个,华北啊东北啊,华中华南啊,什么西南西北啊,这些地区你只要一份就行了,说你只要建这个的时候。
14:12
我就找这么一次啊,以后每天也没有必要再再去找他。啊,这呢属于一些呃,特殊的表,只有一次就OK。
我来说两句