00:00
好,那再往下呢,我们稍微详细一点啊,比如说这个全量同步表这块,那这里面呢,就是每日全量。呃,就是每天存储一份完整的数据,作为一个分区,适用于表数据量不大的情况,记住哈,一定是数据量不是特别大。且每天既会有新数据插入,也会有旧数据修改的这种场景。比如说这个品牌表。品牌表呢,他这数据量不大,那你看一下这个品牌表来我看啊。品牌表这个。对吧?贝,你看品牌,我这里面有小米,有荣耀,什么Apple TCL,还有什么北纯啊,这几个品牌,那品牌你就再多能有多少个,几几万个品牌就不错了,你像京东才有能有多少个啊,我觉得最多也就是个几万几万个啊,几万个这个商品的大品牌。那这么多品牌数据量不大,然后呢,既每天有新数据插入,也会有旧数据的一个修改,你看这个品牌啊,你看着是不大,但是它有可能有变化呀,比如说今天小米入驻了这个京东商城。
01:04
由于这个处理的这个关系不好啊,第二天就退出了,那这个退出的话呢,你这个品牌就要干掉。那你说这个品牌的表呢,是有可能发生变化的,对吧,那除了他之外还有谁呢,你像这个一级分类。二级分类啊,三级分类也是有同样道理的,那这里面突然间某一个品牌,诶干掉了,那干掉了它就有有更新,有更新你就需要把它导入进来,那这个呢,数据量不大,我一般怎么处理呢?哎,就是把它全量的导入过来,每天导一份全量。那比较有代表性的这个同步这个这个全表呢,有这种编码表。品牌表。啊,还有商品三级分类,二级分类,一级分类,那先看一下这几个,比如说这个编码表。编码表这儿就是你看用这个编号,幺幺代表支付状态,1101代表支付宝啊,1102微信,1103银联。
02:00
那这里面一共他也没有多少状态,就真正的开发的时候,他也没有多少状态啊,就是用这个编号呢,代表一些中文。啊,是这么一个含义啊,所以说像这种码表记住了啊,像这种码表用什么?呃,这个编号去代表具体的内容的时候,往往都是这个。呃,需要全量去导入的,因为它数据量小嘛,而且变化的可能性就是不管你变不变化吧,啊就接点数据啊,直接全搂过来就行了哈。行,那这个品牌表刚才看过了,商品三级分类,二级分类,一级分类也带大家看过了,那还有这个优惠规则表,那优惠规则表。找一下。啊这啊这呢,你看我这个优惠这优惠券这个规则表,那就太简单了啊这个呢是是针对哪一个活动啊,然后呢,优惠这是优惠的金额,优惠100,优惠200,优惠300啊这个呢是优惠的这个数量嘛,啊数量其他的还没设置。所以说这个呢,表呢,数据大呢,也比较小啊,直接全量,这一共才三行,就加一起的话,100多行也也没事哈,再之后呢,是活动表啊活动表那我们找一下活动表activity in,你看我们这里面就说啊,就找了一个什么这个联想品牌的一个活动,其实就是活动,那这一天你你觉得这个电京东电商它会有多少活动呢?啊不是特别多哈,有几百个我觉得不错了哈,像比较大的有几百个活动,那已经算很大很大了。
03:21
所以说这里的数据量呢,也不大啊,所以说数据量不大的场景啊,通常情况下我们就是全量导入。呃,还有呢,活动参与的商品表。你像这个商品表本身就不是特别多哈,京东的话能有几十万个啊,几十万个商品就不错了,几十万的这个商品那相对来说那就已经很少了,那当然要参与活动的这个商品表那就更少了。参与活动的商品能有多少对吧?啊,咱本身活动就不是那么多,咱可以看一眼啊,参与活动的商品表。参与活动的这个activity。啊,这个参与活动的商品。活动的ID,活动这个SQID啊,还有这个创建时间。
04:03
每家都有很多活动和优惠等等,这个应该数据量比较大吧,啊不可能哈,你就活动你说的大量级,我给你出一个量级1万个活动可以吗?1万个活动你觉得大吗?啊,或者说或者说我再说多一点,10万个活动你觉得大吗?啊,10万个活动这都是小数据量对吧?啊,在整个这个电商里,就是大数据场景里面,这都是小数。所以说这块呢,它不是特别大哈,那这是这一块,那我们再往下啊,再往下像这个加入购车,加入购车呢,这个呢是一个呃全量,嗯,正常情况呢,它确实它这里面有变化啊,来看一下架构呢,是比较特殊。加入购物车这看了一份加入购物车呀,本来这个里面的这个数据量呢,其实是比较大的啊,而且呢,它这里面有创建时间和修改时间啊,比较麻烦,但只不过呢,我们后面呢,要对这个加入购物车呢进行一个特殊处理。
05:02
啊,特殊处理,如果我们知道它的这个新增和变化的话,后面分析一些指标呢,是没法分析的,所以说这里面呢,我们只能这个权证导入。就是这个购物车是特殊的一个处理。那再往下呢,是商品收藏啊,收藏表商品收藏,那这里面我们导的也是这个全量啊,也是后面要有一个特殊的对它一个处理啊,像那个加入购物车收藏啊,属于特殊处理啊,正常情况呢,你找他的这个呃,新增和变化也是可以的啊,也是可以的,只不过呢,我们后面要分析他一些特殊的指标啊,所以说这里面。呃,这个稍微处理了一下,因为我说过所有的表只要导全量,你肯定能满足所有的需求,只不过呢,对你的电脑这个服务器的性能呢,是会带来一定的这个压力,带来压力呢,但是并不是代表说一定就处理不了。再下面呢,是这个优惠券,优惠券呢大家看一下。这啊优惠券,你看优惠券啊,什么粮食的优惠券啊,还有粮食优惠券二啊,就是你购买粮食产品啊,他会对你这个这是给的金额吧,给你100块钱啊现金券,这是200块钱现金券。
06:10
呃,其他的这是啥呀。这是满减啊,类似的这种哈,啊总总之就是这种不是给钱就是啊折扣哈。好。那再往后呢,这是SKU商品表啊和s pou商品表,这俩数据量啊,都不是特别大啊,看一下s po。这个呢,属于这个商品啊,商品商品表的话,大家可能觉得哎,这一个京东网站,它这里面会有N多个商品啊,这不是商品的创业时间嘛,都有很多很多商品,我告诉你有有个几十万个商品啊,甚至多一点啊,最多上千万,那他也不是特别大啊,也不是特别大啊,所以说这块呢,还是可以接受的,嗯,所以说这个商品这块呢,我们一般呢,也都是导全量。正常一个小电商有1万个商品,已经很大很大了。
07:00
呃,再之后呢,是这个PUPU的商品的一个品类。PU呢,一个商品的品类啊,那就是PU具体的类型,小米啊小米,然后这是Apple啊,荣耀十。你看这就典型的一个码表,这表不是都不是特别大。不是说这里面我们插入的数据量少,你就觉得不大,就是因为你看他一共能有多少个品牌呀,品类啊。对吧,你你看那个京东网站上,他一共也没多少啊。对吧,一共这么多品类,然后你再点进去,这是二级分类,再点上三级分类啊,一共也没多少啊,你看它这密密麻麻的这么多,有几百个是吧?啊几百个加一起这里面我记得有1万个,顶多1万个。像这种几万几万的,这都是小数据哈。行,那这是这一块,那再往下啊。那上面就没有了哈,这属于这个全量导入啊,全量导入,那导入的过程当中呢,就是。哎,你每天产生的数据,我对应的都给你倒过来哈,这么写错了,这还有个3月12号该是。
08:08
稍微改一下啊,这个是3月12号每天的嘛,那这个呢是三月12,那在还有表里面对应的,你就需要每天建对应的这个分区啊。再见。OK,那下面呢是增量表啊,增量表呢,这里面我找几个比较有代表性的啊,大家看一下,增量呢是每日的增量,就是每天存储一份增量数据,作为一个分区。适用于数据量较大,且每天呢只会有新数据插入的场景,这点很重要哈,有时候它只能是新插入的,一定是不能有修改的。那这里面比如退单表啊,这个推单啊,咱们这个推单呢,是只有这个创建时间是没有修改时间的,你可以看一下。退单退单。看着只有这个退单的一个创建时间,并不像那个订单,这个订单表里面有这个操作时间,也就是说我们这里面特殊处理了一下,只允许他创建,创建完之后退单这事就结束了。
09:12
啊,你就可以按照这个正常的退单流程啊,把它过过呢,给他退回去啊就行了啊所以说这里面呢,只有一个状态啊,只有一个状态,你说他只需要一个增量就行了,没有这个操作的这个时间。好,那其实我们这张表里面,我们这个照这个退单表的时候啊,忘把一个字段给删了。嗯。诶没有啊,不是啊,那这个就就是没照啊,那挺好啊,另一张表有一张表是多照了一次的,行,那这里面只有一个创建时间,那就这个呃,跟我们这个需求就正常了哈,就是说那这种呢,它就满足了这种表它只能是。新插入的。那再之后呢,是这个订单状态,那订单这个状态啊,大家可能会理解,订单状态一定是变化的,你这应该是变化的,这个不应该放在这个增量里面,那你看一下这表数据哈。
10:01
你看一下订单状态的表。你看一下。看一下什么呢?你看啊,我们比如说这个商品ID,商品ID的3210,找一下3210。然后呢,3210,你看它状态是,它状态是1001的时候,1002的时候,10005的时候,那这个查谁呢?这个码表要查谁呢?我看啊10011002码表在。啊,这码表你看这几个吗?幺零零幺幺零零二幺零零三幺零零四幺零零五原零六,那对应的状态是未支付,已支付,已取消,已完成,退款中退款完成。对吧,哎,这就关联起来啊,也说这个码,这张码表呢,就是呃,代表不同的这个含义哈。行,那回到回到我们刚才的这个订单这个表啊,这表那你别看这个书式看不懂啊,其实它就是代表着不同的这个完成状态啊,它一般的不会把这个中文放在这里面,它会放到另一张表里面。
11:01
表示他现在的状态,那这里面比如说哎,3210,他从1001~32101002,再之后呢,3210~1005。啊,这一套这个流程啊,状态的变化,那每发生一个变化呢,我就增加一条,那既然它是增加一条的话,那么我就可以只增,就是相当于是指导他增量的数据就行了,因为比如说你看3月10号的数据过来,那我就3月10号,3月11号过来数据,他一定没有对3月10号的修改,那我直接再对过来,那这里面就记住了这个整个表里面的全量数据啊,那再往后呢,是这个支付流水。啊,支付流水也是,一旦这个产生之后,它就不会发生变化,刚才大家看了是吧,你说支付流水里面它只有一个时间,你说只有一个支付时间。再下面呢,是一个订单详情,那订单详情呢,它的特点呢,是也是一旦产生就不变化,你看一下。订单详情。
12:01
嗯,Order detail它呢只有一个时间,只有一个对这个订单的一个创建时间,并没有对它进行一个修改时间,所以说那这里面只需要导入增量,OK。在之后这里面有一个商品评论表啊,这个呢,对这张表呢,是见表的时候有点有点错误哈,来看一下这个商品评论表,你先看我这个笔记吧,我这个笔记改过来了。这啊上面评论表,评论表里面这里面,哎,我这个呢,是有一个特殊的一个说明,比如说我只允许这个商品,就说啊一次性评论评完之后,下次呢,你不允许对你以前评论的东西呢,进行一个修改,你可以进行追加,追加没问题,比如说你追加评论没问题,但是追加呢属于另一条评论了。但是呢,你不能说这个我这个平台啊,好说了一个好之后呢,第二天又来了一个坏,哎,不能这样去,不能这样去修改啊,啊是这个这个含义。所以说呢,那你只允追加的话,那这个评论表呢,就会诶不断的往里面增加一条,增加一条啊是这样的状态啊,但是你不要看这个哈,我这里面嗯,这块呢,没给它删掉。
13:07
啊,评论表里面有个值忘删了哈,就说这个opera time这个忘删了,你看这里面其实造数据的时候呢,也没有给他照啊,它就是一个空值哈,所以说把这块呢给他啊干掉啊就行了哈,这是这一块。呃,那往下啊,再往下走。那这个呢,是这个同步的这个新增加的一些数据哈,啊同步的这个策略,那再往下呢,下面呢,是这个新增级变化的一个策略。也就是说,每日新增及变化存储创建时间和操作时间都是今天的。这个啊,非常重要啊,在面试的时候经常被问到,就是你怎么把my circleq里数据的新增和变化的数据导入到AJS那里面的创建时间,操作时间是不是?比如说创建时的时间,创建时间和操作时间,只要有一个是3月11号的,那我就倒过来。
14:00
对吧,啊,记倒了就行了,适用的场景呢,这里要注意表的数据量比较大。这是前提啊,数据量比较大,如果不大的话怎么办?直接导全量,数据量不大就导全量就完事了啊,直接把全量搂过来,然后呢,这里面要既有新增又有变化。是这种场景哈,就是数据量很大,既有新增又有变化,那在我们这个电商里面呢,我们对谁进行了这个新增和变化的一个导入呢?还有一个是用户。一个是订单,还有个优惠券领用,那像这个用户这个哈,用户这个呢,是不同的级别的电商呢,处理的方式不一样,如果是小电商。小电商啊,直接就全亮了。这我见过很多啊,小电商里面直接对用户表就全量。啊,每天导一份这个用户的钱量,不管你啥我自己导,那这种限于这种像这个呃,10万用户以下的。啊,或者是100万用户,其实不是特别大。当然你要是一个用户,像那个阿里腾讯那种,每天的用户就是几个亿。
15:04
那这种的话,你还是可以导这个,呃,这个新增和变化,还有呢,就是订单。那订单呢,这里面其实也是分这种大电商和小电商。大电商或者中大型电商,那这个数据量呢是比较大的。那往往他每天的这个每一个用户可能下好几个单,那这样的话,这个订单也还是非常大,那怎么办?哎,也导致他的新增和变化,但是小小电商怎么办,小电商直接全量啊。啊,直接把这个今天的这这个所有订单全部搂过了啊,是这样的哈啊优惠券领用表啊,严格来说这个优惠券领用表啊,其实我们直接导全量就OK,只不过呢,后面呢,我们会对它呢,进行一些呃,更详细的一些指标分析,所以说对它相当于是一个特殊处理啊,特殊理所以说放在了这个新增和变化里面去哈。你说正常情况下这两个就够啊,但是呢,这个呢,是额外的一个处理。下面呢,是这个特殊策略啊,特殊策略呢,这里面啊,说明一下,就是某些特殊的维度呢啊,不可追寻上面的同步策略,比如说它呢,那只要一直客观世界里面存在的,不会发生变化的,它列出了一些什么性别,地区,民族,政治成分,斜着尺码啊,如果这些不发生变化,那就存一份,那当然了,这里面像这个啊,性别是可以改变的,对吧?啊居住的地区也可以改变,民族应该是改变不了,政治成分呢,这个也可以改变。
16:27
比如说这个是党员啊,团员啊,啊随着你的表现优秀是吧?啊给你晋升为党员啊,这也是可以的,那斜着尺码呢,这个一般指的是成年人哈,要是小孩的话,那他这个尺码也是变化的,这个呢,只是说明了一些说客观的维度,那客观维度最直接不变化的是谁呢?这两个。日期啊和地区这个呢,变化的是最少的哈,你像日期这块可以一次性导入一年或者若干年的数据,它倒是不都能够推推测出来的,你说未来的某一天,他是星期几。
17:00
对吧,啊,星期是否是节假日,这都可以推出来,那像地区这块。哎,地区省市县对吧啊,省市县在中国内部的话,它都是一致的啊,除非发生一些战争对吧?啊改变了一些省份啊等等,那这种可能性呢啊,非常小,如果那时候发生了,那你再你再变对吧?啊这个呢,属于这种特殊维度的处理啊,往往我们说的是这个日期和呃地区哈。这是这么多特殊的维度。
我来说两句