00:00
啊,好,同学们,我们现在继续往下走,那下边有一小节叫做不足,对吧?这个是谁的不足?应该应该是事物事实表的不足,对吧?OK,好,那我们来看一下这个不足到底咋回事啊,好,那现在呢,我们先把这段话给他读一下啊,他说事物事实表它是不是保存的是所有业务过程的最细力度的操作时间是最细力度的,对吧?OK,那所以说理论上啊,你说它是不是可以支撑与这个业务过程相关的各种统计力度的需求,你想啊,因为我们是最细力度,对吧?那我做需求的时候,最终我是不是都是对原始数据进行聚合,对吧?理论上你有了最细的,我不管聚合到什么程度,我是不是都应该是能够满足的呀,对吧?那所以说理论上这个事物实施表应该是全能的,它是可以应对所有的需求的,理论上应该是这样的,对吧,但实际我们真正去操作的时候,你发现并不是这样的啊,为什么呢?因为在某些特定的场景下,我们用事物实表去做,OK,那这个逻辑。
01:00
呢,会比较复杂,或者说呢,效率会比较低,那是这样的啊,那所以说事物时表呢,它并不是万能的,在某些场景下它是不行的啊,这样的些场景下它会存在问题呢,我们现在呢,来看一下,来往下走,各位同学,首先我们先看第一种,这个所谓的存量型指标,就不适合去使用这种事物时表去做,那包括下边的这个所谓的多事物关联统计的指标,也不适合使用事物时表去做,好啊,这里边又提到了两个新的概念,对吧?呃,这个大家遇到新的概念呢,你不要头疼啊,这个东西只要一解释就明白了,其实都是非常简单的概念啊。好,那现在我们逐个来看一下,先看第一个,第一个呢,就是所谓的存量型指标,那什么叫存量型指标,什么叫存量?这有例子,商品库存,账户余额,这都叫存量型指标,对吧,我这个所谓的存量其实很简单,就是还剩多少还有多少,这个就是所谓的存量了,对吧?诶,那这就是咱们这儿的第一个就是呃什么呀,就是这个事物师表的一个不足的一个。
02:00
场景好,那接下来呢,我们来看一看啊,就是类似的这种指标,我们用事物时表去做,为什么它会诶不好使对吧?它为什么不足对吧?那咱们现在往后看,呃,这儿有一个具体的例子,当然这个例子呢,我已经写在了文档上边了,所以在这儿咱们一起把它读一下就行啊好,那此处呢,它以谁为例呢?以电商当中的虚拟货币为例,呃,这个电商当中的虚拟货币大家应该都知道是啥吧,比如说我们京东当中是不是有这个京豆啊,对吧?那淘宝里边是有那个淘金币啊对吧?那当然咱们自己的那个电商系统,咱们是没有这个虚拟货币的概念的啊,假然咱们就随便举个例子就行,那假如说我们现在以京东当中的京豆为例,来,大家来想一想啊,你说与这个精道相关的这个业务过程会有什么?与京东相与京豆相关的业务过程会有什么啊,业务过程,业务过程是不是就是一个一个的什么东西啊,是不是原子操作呀,对吧?那你对于精豆而言,那你说相关的业务过能会有啥呀?无非就是俩呗,对吧,一个就是啥呢?一个就是使用精豆,那还有一个是啥呢?获取精豆呗,无非就是这两对吧,OK,好,那我们理论上按照这种事物时表的这个理论,咱们去设计的话,我们应该给他建几张事物时表,是不是得两张对吧?因为一个业务过程是不是对应一张事物时表对吧?OK,那咱们需要建两张,那一张呢,我们就称之为是获取精豆的事物时表,还有一类呢,我们称之为使用精豆的实物时表,那大家想一想,你说获取金豆的这张表当中,咱们存储的应该是什么记录,是所有人的,是不是获取金豆的操作记录啊,对吧,比如说当三获取了俩李四获取了三个,王五获取了六个当等,是不是应该是这样的一些记录,对吧?好,那完之后我们继续往下看,那你说使用。
03:45
金豆的那个表里存的是啥呀?很简单,是不是应该是所有用户的使用京豆的这个记录啊,对吧?比如说张三今天使用了一个,李四今天使用了八个对吧?呃,王五昨天使用了六个等等,是不应该是这样的一些记录啊,对吧?OK,那这两张表咱们假如说已经设计好了,好,那接下来咱们继续往下进行,假如说我现在有一个这样的需求,大家来看。
04:05
什么需求呢?让大家统计一下截至当日的各用户虚拟货币的余额。啥意思,是不是就是统计一下每个人对吧,到今天他一共还剩下多少个京豆啊,对吧?比如张三啊,还剩下这么这么多,李四还剩下这么多,是不是就是所谓的余额呀,对吧?然后这个余额你想一想,这是不是就是一个典型的存量型指标,对吧?是不是就还有多少啊对吧,这就存量指标,好那我现在问一下,问一下大家,我要想去算这个指标的话啊,如果我从这两张表里取数,我应该怎么算,对吧?咱们从这两张文取数,我怎样去算,每个用户的虚拟货币额怎么去算,有没有思。这怎么算呀,余额啊,你要知道是余额,要是截止到现在的余额对吧?这个得怎么算呀,咱们大体的速率应该是这样的啊,首先我们应当先找到这个使用精豆的,呃,或者是获取都都行,谁都谁谁先都可以啊,比如我们先找到这个获取的吧,先找到获取精豆的这张数食量对吧?你需要先干啥,先拿到是不是得拿全表的数据啊对吧,你得拿到全表的数据,然后呢,对数据进行一个分组聚合,按什么分组呢?按用户分组对不对,然后呢,对这个诶获取的这个精豆的这个个数是不是进行一个求和,对吧?然后你就能得到一个什么样的结果,就是每个用户历史至今一共获得了多少京豆对不对,注意这是获得了总数,这是余额吗?不是,你还得考虑到使用嘛,对吧,然后你还得再找到使用啊,这个京豆的那张表对吧,然后也是拿到全表数据吧,对不对,然后呢,对他进行分组聚合,那聚合然后聚合逻辑也是啥呀,是不是也是按照用户进行这个分组对吧,然后对使用的。
05:48
那个个数是不是间去求和,对吧?那完之后你就能得到一个这样的结果,就是每个用户历史至今一共使用了多少精豆,对吧,之后呢在干啥,是不是把这个,诶,每个用户获得的这个京豆跟每个用户使用的这个英特他俩做一个什么操作,得做一个join吧,对吧,用用户ID进行关联招唤到一起,然后用获得的减去使用的,是不是才是每个人截至当日的虚拟货币的一个余额呀,对吧?OK,好,那这就是咱们这个需求的一个计算逻辑,那你想一想,你说这个需求咱们虽然能实现,但是它实现的效率它高不高,显然是不高的,为什么?你想啊,你这儿需要拿到两张事务实表,注意,这可是事实表啊,事实表咱们前面提到过,这是什么来着,是大表对吧,而且是这个行的增速是比较快的,对吧?诶OK,那完之后你需要拿到两张这样的表,而且你需要把它全表数据都进行一个聚合,那显然这个数据计算量是非常非常大的,而且这个需求你再去算的时候呢,它随着我们这个数据。
06:48
去仓库运行的时间的一个推移,你这个计算量会越来越大,为啥呢?因为你想啊,我们是不是数据仓库当中,咱们强调过我们会保存所有的历史记录,对吧?没问题吧?OK,那也就是我只要有新的获取记录,诶只要有新的使用记录,那我是不是都会加到这张表里来,对吧?OK,那也就是表的数据量会越来越大,那假如说我到第十年的时候,你是不是甚至需要把十年的历史数据都做一个聚合呀,对吧?这个显然计算量就太大了,也就是说在计算这种所谓的存量型指标的时候,咱们用这个事物实表去做是不是就不太合适了呀?对吧?OK,啊,好,那到底怎样去解决类似的问题,咱们暂时先不用考虑,我们现在只需要意识到,就是我们这种事物时表,它不是万能的,它是有不足之处的就可以了,倒也不是说这样的指标我用事故实表算不出来,能不能算出来呢?能算出来,但是呢,它的效率是比较低的啊,这一点咱们要搞清楚,那接下来我们继续往下看,再来看一下另外一种这个场景,另外一种场景呢,我们称之为多事物关联。
07:49
管什么叫做多事物关联统计呢?所谓多事物关联统计就是说你再去算这个指标的时候呢,你需要把两个事物时表进行关联,你才能算出来,这就叫所谓的多事物关联统计,那你想一想啊,这种场景是不是咱们理应避免,为啥?因为事物时表本身都是大表嘛,对吧,你事物时表跟实物时表进行关联,是不是大表照大表对吧?这种操作我们应当尽量避免,好那现在什么情况下我需要把它俩关联呢?来看一个具体的例子,比如说那我现在有一个这样的需求,让我们统计什么东西呢?统计最近30天对吧,用户下单到支付时间的一个呃呃用户到呃,用户的下单到支付时间的间隔的一个平均值啊这样的啊诶我要求的是什么?用户下单到支付时间间隔的平均值,诶大家想想,你说这个需求咱们要想做的话,我应该怎么做,我们这当然呢,还是以事物实时表为例啊,那你要是想算这样的一个指标,你需要用到哪两个事物实表啊?
08:50
你得拿到下单吧,对不对,你还得拿到啥呀,是不是支付实物时表啊,对吧?因为下单这张表当中有下单的时间,支付这张时表当中是不是应该有支付的时间呀?没问题吧?好,那你得拿到这两张事务时表,那怎么去算这个事儿呢?首先你需不是需要先对这两张事物时表做一个简单的过滤啊,对吧?你得先把最近30天的这个记录是不过滤出来,没问题吧?好,那两个表咱们都拿30天的数据拿出来,拿出来之后下一步怎么做呀?
09:17
你要求时间间隔的平均值,你是不是得先把时间间隔求出来,对吧?那所以说你现在要做的工作就是把下单这张事物时表的数据跟支付事物时表的数据是不是进行一个关联,对吧?那关联的条件应该是啥?大家应该知道是不是应该用那个订单ID作为关联条件,对吧?那这样一来你是不是能拿到同一个订单的下单时间和支付时间了,对吧?拿到之后是不是干啥对他俩进行一个减法的操作,减完之后是不是再求一个AV这平均值,那就完事了,对吧?啊,那也就是这个需求,咱们用事物实表做能不能做出来,也能做出来,但是它效率高吗?显然是不高的,为什么?因为你这是不是就用到了两张事物时表进行关联了,对不对?OK,那那刚才就说过了两张事物时表,那咱们都是大表对吧,大表照大表的操作,我们应当尽量的避免,那所以说在这种场景下,我们这个所谓的事物师表它也是有不足之处的,好了,那截止到现在呢,我们这个事物师表的两个不足的场景,咱们就算是讲完了,OK,那这两个。
10:17
场景,那我不用事物实表去解决,那我到底应该用什么去解决呢?哎,其实现在就可以告诉大家,就是我们下边的这两种类型的市实表,那实际上这个所谓的周期快照时表就是用来解决存量型指标的,然后下边这个累积快照时表的就是用来解决啥的呀,多事物关联统计的啊,是这样的,那所以咱们接下来呢,要学的内容就是哎,周期快照表和累积快照表了,OK,那咱们一会儿再说,我把视频先停一下啊。
我来说两句