00:00
嗯,好了,各位同学,那上节课我们已经把第一张实时表叫做加购车事务时表的表结构设计完毕了,那现在呢,我们就要来做一下什么,就是它的数据装载了。那来说他的数据状态我们应该怎么去做呀,他的数据状态怎么做呀?嗯,怎么做是不是还是老规矩,咱得先分析一下这个数据的流向嘛,对吧?因为最终咱们要写的circle是一个inser,诶到某一个地方,然后某一个地方对吧?那数据到底是从哪来呢?最终又到底到哪去,咱先把这个流向给它搞清楚对吧?搞定之后咱们再去搞里边的这个具体的逻辑啊好,那现在呢,我们就来分析一下这上面的数据状态的流向,首先那我们要考虑的第一个问题就是我们将来往这张表里装载数据,我们应该来自于哪个表对不对,咱们应该来自于哪张表对不对?那大家要注意啊,我们现在这张表是一个什么?是一个加购物车事务时表对吧?里边要存放的内容是一个一个的加购操作,对吧,没问题吧,好,那所以说我从哪儿去找这一个一个的加构操作呢?这个其实大家应该得能够想起来,咱们之前讲到的一个一句话是什么,哪句话呢。
01:12
就是你要想知道就这张表的数据它是从哪来的,那我们就得知道什么,就是这个表所对应的这个业务过程会对哪张表产生影响吧?没问题吧,OK,那你想一想,加购物车这个业务过程会对哪张表产生影响呢?会对我们业务系统当中哪张表产生影响呢?会对谁产生影响,是不是会对加购物车那张表产生影响,对吧?卡尔联络这张表吧,对吧,之前已经分析过了嘛,对吧?那所以说那我们往咱这张表里边装载数据的时候,我们主要的数据来源不就应该是car info这张表嘛,对不对?OK,好,那完了之后呢,我们就得考虑一下,我们从这张表里去拿数的时候对不对,我怎样去拿到咱们需要的那一个一个的加构操作,对不对,那这张表里给我们放的是一个一个的现成的架构操作,这是吗?这个可能是,也可能不是,对吧,是不是我们得具体的去进行分析才可以,对不对,也是我们得想办法从这张表里拿到我们所需要的那个架构操作好,到底怎么拿?
02:14
对不对?到底怎么拿?这个是不是取决于加购操作是如何影响这张表的呀?没问题吧,那大家还记不记得加构操作是如何影响到这张表的?它是in色的一条数据还是update,这还能想起来吗?应该还能想起来吧?OK啊,好,那现在呢,我们先简单的把这张表给他复习一下,我们熟悉它的表结构,我们得熟悉加构操作是如何影响到它的,你把这些东西搞清楚,我们才能准确的吸引那个circle,对吧?好,那现在先明确一下这两本的表结构啊,事先其实之前已经说过了啊,首先每行数据在这儿指代的是一个什么?是一个是一个架构操作吗?那其实并不是这张表当中啊,每行数据指代的是一个人,一个用户购车当中一个商品的是不是建数上对吧?是这样的,OK,这是这两条每行数据所指来的内容,它这一行数据并不一定代表一个架构操作,没问题吧?啊OK啊好,那这个完成之后我们继续往下看,我们看看这个表里边的关键字段,这里边关键字段呢,用户ID,商品ID,这个自然不用说,对吧,还有一个SQ number,这是它的一个商品的件数,这个都不多说,然后呢,我们重点看一下后边,后边有几个时间咱们必须得关注一下啊,主要是俩,一个呢是cur time,还有一个是op time,这俩时间大家还记得是什么意思,很简单,Cur time指的是什么?指的往往是一个用户把一个商品,对吧,第一次加到他的购物车当中的时间吧,对吧,这是cur time OK,好,那接下来我们继续往进行,那这个al指的是什么来着?
03:42
是这条数据的一个修改时间,对吧?只要数据发生变化,Of time是不是就会变成变化的那个时间呀,对吧?诶这一点咱们要给他搞清楚好了,那这俩时间咱们暂时呢,就先回到这这一点,那接下来我们再来继续往下就行,我们分析分析加购这个操作到底是如何影响到这张表了啊,怎么影响啊,前面就讲过啊,可能有两种情况对吧?一种情况呢,是一个用户把一个不存在的,就是购物车里边原来不存在的商品加到购物车里,对吧?这时候对这张表产生的影响是什么?是一个音色的操作没问题吧?好,那如果说我们用户呢,把购物车里边已存在的一个商品又加到了购物车里,好,那这时候对于这个数据来说是一个什么变化,是一个update的一个操作,对不对?好,那具体的修改逻辑是什么。
04:27
具体修改逻辑是什么?是SQ number是不是会变大呀,对吧?诶这一点要搞清楚好了,那这就是加购物车这个业务,这这个业务过程对咱们这两边的一个影响的逻辑,好了,那截止到现在呢,我们就已经搞清楚了,搞清楚什么了啊就是说啊,那我们这张表对不对,所对应的那个业务过程,也就是加购业务过程,对吧?到底会影响到哪张表,以及对这张表产生什么样的影响了,咱们把这些东西是不是搞清楚了,对吧?你只要把它搞清楚了,那将来我们再去写这个数据状态语句的时候,那就轻松多了啊好了,那咱接下来呢,就继续往下进行,下边呢,来咱们具体的分析一下我们这个数据的诶流向啊,这个所谓的具体的流向呢?呃,咱们不能说光定位到表了,你不能说这个数据来自于这张表,那不够,你还得明确什么呢?还得明确来自于哪个分区,最终这个数据写到哪个分区吧,对吧,这个咱们必须得明确一下,好了,各位同学,那接下来呢,咱们就呃详细的去深入看一下啊来,首先我们打开这个文档,打开文档这边呢,由于这个流向相对来说有点特殊,所以我单独的。
05:27
做了一个PPT,咱们一起来看一下啊,好在这个PPT当中呢,上边代表的就是我们刚刚看到的啊,那个与加购物车这个业务过程的相关的表,当然现在对应的是ods层的表啊,OK,其实就是那个卡做那张表对吧?好,那现在往下走,这个就是咱们这加购物车的实时表,好了,那现在我们来看一看啊,就是我们每一天的这个数据流向到底是什么样的,首先我们现在先看第一天,第一天的时候我们能够从ods层的这张表里获取什么数据。咱们获取什么数据?是什么?是全量的数据吧?什么意思啊,就是我们要想做一个加购样的一个操呃,加购加购车那样的一个事务时表,对吧?那我们需要对业务系统当中那个card的in表做哪种类型的同步啊,你做每日全量行吗?不行,你得做什么?得做每日增量同步才行,对吧?因为我们需要拿到in色的操作,Update的操作,对吧?所以说我们需要做增量同步,但所有的增量表我们在第一天的时候都需要做一个什么来着,全量同步没问题吧?那所以说ods层的那个card info,咱们第一天的数据其实就是一个什么,就是一个全量的购物车记录吧,对吧?那实际上大家应该都知道,你这个所谓的全量记录是通过基于查询的这个bootstrap去同步过来的,对不对?基于查询呀。
06:42
那言外之意就是什么呢?是不是就是我们目前ods层这张表14号分区的数据就跟哪是一样的呀,跟MYSO当中,咱现在看到的这个car ino的数据是一样的吧,应该是这个道理吧?好了,那现在问题来的,那你说我们这张表当中每行数据它能不能作为一个架构操作呢?
07:05
显然是不能的呀。是是这个道理,我们刚才不是刚分析了吗?这张表一行他指的是这个人,他的购物车里边,那现在有这个商品有多少件,对不对,他不能代表一次架购操作对不对,那所以现在问题来了,怎么拿到咱们这个架构操作,你要注意我们第一天这个所谓的全量同步,同步过来,那其实就是买S当中的card info这张表的全部的历史数据,相当于是对吧,我是不是需要从这些数据里边找到咱们这个想要的一个一个的架构操作呀,对吧,这个咱能不能拿到大家说。能不能拿到。能拿到吗?其实你是真拿不到的,为啥你只能知道,就是说这个人他购物车里边有这个商品,他有几件,有两件,但是这两件他到底加了几次,咱们能知道吗?不知道对吧,所以说在这儿呢,咱们根本就拿不到这些所谓的历史的家口操作,你拿不到,拿不到这个怎么办呢。
08:00
拿拿不到没办法,我们只能在这儿是妥协一下啊,咱们只能妥协一下了,那因为我们之前是没有记住他的每一个明细操作的,对吧?那所以我们这拿不到这个真正的这个架构操作拿不到,那我们就只能是妥协一下,我们就认定或者是假定对吧?这里边这张表里一行数据,那它就是一个架构操作对不对,那就好比是什么呢?OK,这个人对不对,把这个商品加到了购物车里边,加了几件呢?加了三件对不对,OK,那什么时候加的呢?后边是不是有时间呀,对吧?哎,一个时间是cur time,一个是time,这个cur time能不能作为咱们这个加构时间,能咱们只能用它作为加构时间,时间大家都知道这个加购时间,他他这个可瑞time,它其实真正的呃含义是什么呢?是这个人是不是第一次把这个商品加到购物车的时间啊,对吧?啊,这一点要搞清楚,但是咱这儿没办法,我们只能是暂时先把这一行当做一次加va操作,把create time就作为这一次操作的操作实验了,诶咱只能是做一下这个妥协了,诶但是呢,大家要注意注意思考另一个问题啊,就是你说我们到了第二天之后,第二天之后我们是不是基于查询的了,我们是基于blo了,对吧,那你拿到的是不是就是真正的变更操作了,诶那说那个时候咱能不能拿到真正的架构的那个操作记录呢?能不能是可以的,诶这一点咱要搞清楚啊好,那现在呢,我们再回到这个数据流向的问题上面来,那第一天的时候呢,刚才我们看到了说这时候我们会拿到是不是全量的这个加构记录啊,对吧,我们会把那个cur time是不是作为作为什么作为加构时间,对吧?但是你注意观察这个cur time我们是不是有十号的。
09:30
有11有12有13有14啊对吧,也就里边相当于是有很多的历史的架构操作吧,没问题吧,好,那这个历史的架构操作咱们拿到之后,我应该给他放到咱们这个表的哪个分区呢。对不对?你拿到假定已经拿到了所有的历史的价构操作了,你应该放在咱们这个表哪个分区呢?大家想想,你说放在哪个分区,这个取决于什么来着,那取决于两点,第一点是什么?就是你拿到的数据都有啥,第二点就是你下边这张表我的分区规划是什么样的,对吧?咱们刚才说了,我这儿拿到的相当于是很多的历史架构操作没问题吧?那我下边这张表咱们是一个什么分区,增量分区,我们要求它按天分区,每天的分区存放的是什么,当天新增的架构操作对不对?是二,也就是你这个加构操作是哪天的,那我就得放在哪个分区,对吧?那我们刚才看到了,我这里边有十号的,有11,有12,有13,有14,那我就得怎么办,是不是就得写到这个十十一,十二十三,44这个分区里边啊,对不对,哪天产生的就放在哪个分区嘛,这一点要搞清楚OK啊,所以说咱们首日的时候,这需要做一个什么动态分区吧,对不对,我是不是应该把不同天的架构操作放到不同的分区当中,对不对,诶应该来一个动态分区,这个搞清楚啊好了,那第一天那咱们再装载任务。
10:45
算始结束了,来,接下来我们看往下往后走,随着时间推移来到第二天了,第二天我们能拿到什么数据?注意,第二天的时候我们拿到的就是真正意义上的增量数据了,对吧?有新增的操作记录,有变化的操作记录,对不对?好,那拿到之后我们就要怎么了,是不是咱们得根据我们刚刚的那个逻辑对吧?什么逻辑?就是加构操作对这张表的一个影响逻辑去反推我们应该需要什么样的操作记录吧?对吧?你需要用到ins inside,你需要用到update等等等等,把这样的记录找到,是不是就拿到了咱们真正意义上的加构操作了,对吧?拿到之后我们需要怎么办呢?是不是也得写入到这个实值表里对吧?写到哪个分区呢?写哪个分区,是不是只需要写到15号这一个分区就够了,为啥?因为你这拿到的是不是只有15号发生的加购物车记录啊,对吧?哎,OK,那完了之后呢,你就放到15号分区,那就完事了呗,对不对,OK,那这个就相对来说比较简单了,那我到了16号呢,是不是也得拿16号的加格操作,然后呢,放到16号的分区啊,对吧?从这儿大家应该能看出来。
11:45
哎,看出来啥,哎,就是说咱们现在呢,这个首日的这个数据的流向跟每日的流向是不是又不一样啊,对吧,不一样,那咱写三个是不是又得写两对吧,首日跟每日OK好了,那这实际上就是加购物车这个时时表的数据的流向,来我把视频停一下。
我来说两句