00:00
来,呃,那大家继续跟我分析啊,刚才咱们这张表,呃,分析了一下什么,分析了下这种周这个累积型快照时表,它这个修改数据的特点,对吧?就是每天往里放数据,我需要修改原来的数据,然后呢,咱们又紧接着又说了一下have当中怎么去修改数据,怎么修改,是不是只能把数据从表里查出来,然后判断一下,然后再放回去啊对不对?那既然这个修改数据有这样的特点啊,那这时候咱们就来分析个问题了啊,咱们这个呃,累累计性快照时表啊,那咱们就必须得有一个特点了,什么特点呢?啊,就得分区,他一定得分区。为什么一定得分区啊,前面那些表咱们并没有强调什么分区不分区啊,那这张表是一定得分区的,为啥啊,你想一想啊。就是基于它这个修改的特点,因为还有当中我去修改一个,呃,表里边的数据呢,啊,我要么以表为单位去修改,什么叫以表为单位呢?就是假如说我这张表呢,有10万条数据啊,然后呢,我可能我只需要修改里边的100条数据,那你也得怎么做,如果没分区也得把整张表全查出来,然后呢,去修改那100条,然后再insert over right回去啊啊如果说你不想以整张表为单位修改,那你就得怎么做,就得分区啊,OK,我分这样的几个区啊,比如说按天分区吧,就假如说按天分区,然后呢,还是10万条数据啊,但是这时候我只需要修改100条,哎,但是这时候呢,你会发现啊,假如我这100条呢,我只分布于这若干个分区当中的两三个,诶,你就可以只只怎么做了呀,只把这两三个分区。
01:35
查出来啊,或者是只查一个分区,假如100条都得为这一个分区,那你就把一个分区查出来就行,分区查完之后呢,怎么办?Insert over right回你自己那个分区就行了,对吧?哎,这样一来你就可以以分区为单位进行修改了,那没有变的数据你就不用动了。能理解吧,啊所以说那对于咱们这个事实表来说啊,你要考虑到事实表本身它数据量是不是就比较大呀,数量本身就比较大啊,那如果说你要部分区啊,你每天都把整张表数据查出来,做个便历对吧,你是不是得便历啊啊去判断哪个要改,哪个不改,得得得做便历,那这个再放回去,这个效果效率就太太低了啊,那咱们肯定不能不分区啊,必须得分区,这是必须得考虑一个问题啊,分区这个事。
02:22
啊,然后问一下大家啊,那咱们要分区的话,你说我这张表咱们要想分区啊,我这个分区咱们应该怎么设计啊。啊,所谓分区怎么设计,第一点咱们按啥分区。按什么分区啊啊,其实咱们可以跟前面保持一致,就按天分区呗,一天一个分区对不对,一天一个分区,一天一个分区啊,这个很好定,那现在关键是咱们要决定一个问题啊,就是我这一个分区当中应该存储什么数据。应该存什么数据啊,这个跟前面就不一样了啊,前面你像咱们那种事物形式表又是增量表对吧?增表一天的问句里就存当天的增量,很简单对吧?那如果是那个什么呢?如果是咱们那个每日全量,那个周期性快照呢?周期快照是每日全量表,每日全表当天的分取就存当天的全量数据是不是就OK了?那你这个累积型观照时表呢?累计观察表咱们采用的同步策略是啥?是新增级变化对吧?那新增级变化。
03:24
我拿过来了,我怎么办?我直接把当天的新增级变化放到当天的分区里可以吗?啊,这个行不行啊,行不行啊,咱们分析一下呗,啊咱们分析一下啊好,那这时候我们先看一下之前那个呃思Q脚本吧,诶我这个怎么也断了呢,OPT猫,然后呢,进到呃,不知道我有有进到咱们那个库脚本啊C叫B,咱们打开那个库脚本啊买图HS咱们找到那个领券那个啊来往上翻,哎,这是不是咱们那个领券的那个跑数据的那个circle啊对吧?啊你看啊咱们这个很显然看Y2过滤条件咱们就能看出来,这个同步策略是每日的新增级变化,对吧?啊这个新增变化怎么体现呢?
04:12
从优惠领券这个角度去考虑啊,所谓的新增就是啥?就是领取呗,今天领取是不是就是新增的领取记录啊,对不对,那变化是什么呀?诶你使用时间发生变化,就是你用这个券呢,是不是就相当于这个领取记录发生变化了呀,对不对?哎,这就是新增啊,这就是诶变化相当于,所以咱们这呢,肯定是新能级变化啊,那所以说我们每天从MYSQL当中找到have当中的数据啊,这里边包括了什么?包括了三部分数据,一部分呢是你今天的领取记录,还有一部分是啥?是你今天的使用下单记录。还有一部分呢,是今天的使用支付记录,是不是这样三部分记录啊,那这就是我们新增级变化的所有数据啊,那咱分析一下啊,我现在这个优惠券领时表,我要分区啊,按天分区啊,那如果说我直接把这个今天领取,呃,就是导过来的这三部分数据直接放到今天的分区里,这个合适不合适啊。
05:12
合适不合适?啊,合适不合适啊,啊很显然不太合适,为什么啊,咱们思考一下,那咱们先一点一点考虑啊,我假如说我把今天的新增,把今天新增,我假如说放到今天的分区里了。这个目前看没啥问题对吧,那就来看下边,那我把这个今天的使用记录,这个使用当然包括下单支付啊,我这会儿就混在一起了,我就直接就说使用记录了啊,那OK,我把使用记录假如说也放到今天的分区里。这个行不行。这个显然就不行,为什么啊,因为大家能想到你今天使用的这个优惠券是不是有可能是今天领的,但也有可能,而且很有可能是什么,是前边一天两天或者是三天领的,对不对,也是你今天的使用记录有可能已经插入到前边某一天的分区里了,对吧,对不对?所以说你拿到今天的这个使用记录,你应该怎么做才对呀?
06:06
你应该去看一下啊,你今天使用的券是哪一天领的对不对,哪天领的啊,你就去哪啊,你就去找哪天的那个,诶分区,然后呢,你去把那个数据给它怎么做啊,是不是得修改一下啊对不对,至于到底怎么修改,肯定是先查出来再放进去对吧?那咱们就先不说这个事儿,咱们就说怎么去,到底怎么做啊,你应该是先把今天的呃,这个变动数据拿到就是使用,就是拿到,拿到之后呢,看他使用这个券是哪天领的,然后呢,去修改原来的那个领取记录。啊,把它领取记录的,其实改就改谁呀,主要是不是就改这个什么优惠券的状态呀,或者是使用的时间,是不是就改这些东西,对不对,你给他改了啊,哎,是不是应该是这样的一个逻辑呀,哎,这才是咱们这个分区啊,这个设计的最终的一个思想,那最终咱们总结一下,那怎么去设计咱们这个分区是比较合理的呀。
07:00
第一联啊,第一联那首先按天分区啊,那第二点呢,每天的分区当中啊,按照咱们刚才的这个分期,应该只存放什么,只存放当天的领取记录。对不对,就是说白了,你这个券哪天领的,我就得在哪天的分区里边,对不对,哎,就是这样的啊,就是这样的啊,那所以说那最终咱们就定下来了啊,我们这个呃呃,这个领券时表咱们的结构应该什么样的呢?按天分区,每天的分区当中存储当天的领取记录啊,存储当天的领取记录啊,是这样的啊啊那这就是咱们这个分区的规划,那至于这个表到到底怎么维护啊,那咱们这个下节课再说吧,啊,我把视频录一下啊。
我来说两句