00:00
好,那接下来呢,我们看第一章,第一章呢是关于这个分层的介绍,分层介绍呢,我们刚才说了,这里边我们讨论两个问题,第一是我们为什么要分层,第二。我们分了几层,每一层干什么事儿,对吧?我们主要解决这两个问题,那其实大家可以想象一下,在离线收藏当中,我们为什么要分层?对吧,大家呢,可以思考把这个问题答案呢敲在我们弹幕里边,但是现在我看不到,因为我还没有搞这个外接屏啊,只是说我等会呢。截截屏的时候,我可以去看一下大家所的所有的发言啊,是这样子的。好,那这第一个啊,我们为什么要分层,想一想离线数高。对吧,啊,我估计啊,大家现在挑出来的东西,我盲猜一下啊,有这些吧,嗯。九。对吧,一个结偶提高什么复用性啊,提高复用性啊,然后呢,将复杂需需求简单化,那分层了嘛,本来一个复杂的需求可能要十几步,那现在我们分层每一次呢,只要做这么一步两步,一步两步就就够了。
01:16
对吧,好,那其实最重要的也是这里边了吧,但是大家知道刚才我们所说的什么这个复用性啊。这个屏蔽数据啊,对吧,做解偶嘛,解耦就屏蔽数据嘛,对吧,还有。重复计算等等这些问题最重要的其实在于复用啊,最重要的在于一个提高它的一个叫复用性。啊,提高一个复用性,这个是最关键的一个点啊好,那接下来呢,我们对比一下看一下啊,首先普通实时计算呢,优先考虑的是这个时效性啊,然后呢,通过从数据源采集之后,直接经过实时计算得到结果。啊,是这样的一个过程,那比方说大家所写的Spark stream这个项目,对吧,你们有求GV,也有求日活啊,求这个销售明细,还有这个预警等等的这些需求,那是不是都是直接从数据源把数据拿到,拿到之后呢,接下来直接做计算加工数据出去了。
02:21
对不对,是这样的一个过程,那这个呢,它完全考虑时效性,那你想啊,如果说我需求特别多的时候,你只有四个对吧,看着还好,但是你要在生产环境当中,首先我们表很多。第二个,我们的需求也很多的时候。那随着这个的增长会怎么样?开发需求的成本直线上升。因为就像我们说的,每一个需求呢,可能有共同点。啊,你比方说对于这个订单表,我们求GMV的时候。
03:02
对吧,我们可能只要这个新增数据,大家在求销售明细的时候呢,也只要新增数据,所以你们之前在canal里边,大家还记得读取到订单,也就on in four这张表的时候,直接把数据过滤出来了,做了一个过滤,做了什么过滤呢?做了。订单的过滤。对吧,对于这个表呢,我只取新增数据。啊,那这是你做的过滤,比方说在真正生产环境当中,咱们这个更新的这种数据是不是照样要做保留。对不对,照样要做保留,那这个时候你要写两个需求过滤,是不是要做两次了,因为之前咱们其实那个需求当中比较少,所以没用到新增啊,没用到变化的数据啊,没用没有用到更新数据,所以这个做源头我们就干掉了,但是大家仔细想一下,从源头的时候我们能干掉吗?
04:05
我们能不能干掉?我们不能干掉这个数据吧,是不是我们压根就不能干掉这个数据?啊,所以从源头考虑呢,我们应该把新增加这个什么变化的数据都得保留下来,那么你在求GMV以及求最后的销售明细的时候,那你想一下啊,你想一下一个问题,这两个是不是都只要新增数据,那对于我们主题当中这个数据是不是要过滤。对,他要做一次过滤,做这个需求也要做一次过滤,大家思考一下是不是这个问题。对吧,那这个假如说后面还有abcd各个需求呢,很多需求都要用到这里面新增数据,是不是每一个需求都要过滤一次,有必要吗?做这个事儿,那这个过滤我们是不是只过滤一次就够了啊,所以传统的以前的这种实时计算呢,它更考虑的是时效性,没有考虑到。
05:03
复用性,也就是说它的一个复用性很差。非用性很差,会导致我们开发成本上升,那就传统的A原A对吧,大家都是数据源A经过abcd加工流程得到abcd,但实际上我们仔细分析发现这里边很有可能,诶对于这个数据源A,我们先做一个共同的操作,这个操作呢,就比方说这四个需求是要对数据集进行过滤,哎,每个人都要做。对吧,我就做一次,然后呢,接下来对你BC做一次,哎,BC呢是上面一二这两个需求要的一个过程啊,然后你独有的E,独有的F,你就独有的自己去写就行了,对吧,那C这个过程呢,很有可能是我三四两个需求所共有的流程。对吧,那我们就提出来,然后呢。分过程G和H啊,过程G和H,所以其实数仓它的一个建立,我们所谓的这个分层对吧,数仓跟传统的实时分析最重要的一个区别就在于叫分层。
06:14
最重要的。是这个分层啊,这是最为重要的一个点,那分层最重要的一个点呢,它的作用好处就是在于。复用性啊复用性,但是呢,它会牺牲一定的时效性,这个大家能想明白吗?他为什么会牺牲一定的这个时效性啊?对吧,是这个样子的啊来。呃,为什么会实现实效性呢?因为经过计算A,由于我们要给B和C共同使用,所以我们应该把这个结果给它干什么?保存下来吧。是不是要做一个保留,然后BC都去共同的地方,怎么样去读取这个数据吧,对吧,啊要保留下来啊,这个呢,会牺牲一定的时效性,但是。
07:10
生长环境当中表特别多,需求特别多,复用性是更为重要的一个因素。啊,这一点时效性我们通常不是那么关心了啊,这个一定要清楚,所以这里边这第一个问题我们解决了,为什么要分层提高整个计算的叫复用性,跟刚才我们所说的DWM层,大家之前在离线数当中所没有的这个DM层,我做介绍的时候,其实就是通过这个点来说的,叫提高服用性。对吧,一定要注意这个点啊。
我来说两句