00:00
好,那我们看第一章数据仓库的一个概述啊,那这个是概念,不用多聊了吧,呃,我们稍微看一下吧,为数据分析而设计的企业级数据管理的一个系统,对吧?就把数据收集过来,然后呢去整合。对吧,呃,那你哪个部门要什么数据我提供呗,其实就是这样的一个作用。对吧,那这边分分分析师写出一些结果指标,分析出结果指标,可能老板要看,或者内部人员要看,对吧,类似这样子,这个我们就不多聊了啊好,那第第二个呢,就是我们第一章里面重点内容就是核心架构对吧,这个架构图是什么样子的。但是在聊架构之前啊。因为架构呢,你可能肯定会涉及到这个框架,就ods必须存哪啊对吧,嗯,DW存哪啊,你才能把架构连起来吧,所以在聊架构之前,我们先聊个事情。在实数仓当中,我们每一层分层的问题对吧?啊分层问题这是第一个啊分层。
01:01
实时数仓的一个分层问题。对吧,那咱们知道分分层呢,是ods分层层次知道,但每一层怎么存对吧?嗯,分层框架问题啊,应该这。就是每一层我们用什么东西对吧,好,那第一个ods。对吧,我要用哪个框架来存这个内容。啊好,呃,那我们在选用这个框架,比如说离线数仓用的是这个have。对吧,而have呢,它。既可以管理这个数据本身,又可以管理计算,他都借用的第三方,那么他可以从第三方拿存储,可以从第三方拿计算,对吧,这两个都可以用人家的,所以呢,我们。
02:01
存储跟计算都交给了have啊,那实时数仓当中它有没有一个这样的东西呢?对吧,而且我们这个说了,我们基于flink的一个。实时数仓,所以计算问题已经交给了谁啊?Fli对吧,这中间呢,我们可能要用fli对吧?啊不是可能啊,就肯定式对吧?啊,那这是计算问题解决了。计算框架为什么呢为对吧。好,呃,那剩下的问题呢,就是存储框架了。这个数据呢,我们想着怎么存。啊,但应该说实时的不需要存,不需要存总有数据流吧,对吧,你得有框架。好,那我们想申诉仓,我们需要达到一个什么的目的啊。
03:02
就是对这个框架有什么样的一个要求呢?对吧,你从这个方面去考虑。嗯。就是在实时收藏当中。我们对于这个。这种框架中间的框架它有什么要求呢?对吧,那这个你比如说啊。弗林格啊,用弗林格计算从ods到DM,哎,然后呢,这个。这样对吧,啊,那可能中间呢,都是用的flink,这是中间他们中间的一个计算对吧,那现在呢,我们是聊这个框架本身我们要用谁。对吧,好颜值低啊不错啊,有这个点对吧。还有什么什么要求呢。什么延迟低呢,对吧,就光延迟低,什么延迟低呢。
04:03
能不能说的具体一点?什么延迟低?传输延迟机实时写入和读取快对了,其实这里边呢,要求我们的框架能够什么能够实时写入。加。实时读取。对吧,这个很重要。啊,因为你比如说啊,我把ods啊,你颜值低嘛,如果你光有写入我ods对吧,我这边呢,用一个。
05:07
我拥有C可不可以呢?对吧,那如果你只考虑实时写入,那这两个框架也没问题啊。H跟克里克house对吧,那你是可以实时写入啊。但是呢,你好,试着读取吗?你根本就不行。你要把这数据读出来还是比较麻烦的,对吧,所以呢,这中间层那肯定不能用这些框架,比如说最后一个,我们可以考虑用这个最终落盘的框架,你直接查出来就行了,对吧?啊,他并不需要再再进行什么计算加工了。所以呢,他得实时写入加实时读取,并且延迟低。能明白吗?这个应该好理解吧,对吧,那这个就是谁呀,其实这个在我们学习的框架当中,指的就是哪个框架呀。
06:07
啊,指的是哪个框架。诶,对了,没有错了,对吧,就是我们的。卡夫卡。啊,就是咱们的卡夫卡。对吧,诶卡卡呢,消息队列满足这样的一个需求,对吧?好,那目前来说呢,我们这样,因为由于离线数仓的一个学习,所以我们感觉呃,这边呢,都得用什么。对吧,姑且呢,我们把所有人都放在。卡夫卡我们看这个东西好不好,对吧,ADS肯定就不放卡夫卡了吧,啊最后这个就先先先不说啊,ADS你放卡夫卡,你在涂卡卡消费出来展示,嗯,没大可不必,因为ADS数据量也不大对吧,你要想落盘就落盘,你要不想落盘其实也可以啊,到时候再说。
07:01
对吧,好,呃,那我们想啊,这个每层用卡夫卡它是否合理。对吧,如果合理的话呢,我们当然就有卡夫卡了,那第一个ods大家想一想。如果我们用卡不卡的话,它满不满足我们的需求。就是ods层我们用卡夫卡可不可以啊,你多思考一下对吧?啊,从它怎么用,我们数据怎么进来,你就是考虑OES前与后嘛。对吧,那都是OS有钱吗?有啊。Ods只是我们实时数仓的ods。前面数据总有来源吧,对吧,你要想啊,那我们ods放在卡普卡可不可以。
08:02
对吧,满不满足我们。这个要求。对吧,是否会满足咱们的一个要求。Ods。对吧,放的卡不卡啊。嗯,前面数据源对接卡夫卡,诶可以写入没问题对吧?嗯,那接下来下游我们要生成这个dim DW d,我直接消费做一些简单的处理,对吧,把这个数据呢,分为实时表跟这个维度表就好了。没毛病吧,他应该是这样的一个情况。啊,所以ods呢,放这个卡夫卡没毛病对吧,那接下来思考第二层dim层,这个我们放卡卡可不可以呢,你还是一样的,从它的写入跟。读取就是怎么用对吧?啊,那首先呢,从ods你把数据写到DM。对吧,然后接下来呢,你这个DM层到底应该干什么事儿,对吧?诶,那我要把这个卡夫卡数据消费出来,我应该要干嘛,你把这事想一想,卡夫卡还适不适合了。
09:10
对吧,啊,还是跟ods一样,ODS可以啊,那DM层呢,DD呢,对吧,我们现在聊的是dim层,那大家觉得DM层可不可不可以。我也给它放到这个卡夫卡里边,可不可以想一想啊。咱们的dim层。啊,放到卡不卡可不可以,诶那个强总说了不可以,理由呢,为什么呢?其他同学呢,不发表一下自己的意见吗?啊,那强总说了他不可以,为什么,你说一下继续具体一点好吗?
10:10
要聚合dim层要聚合什么意思?怎么聚合?就DM层,你说dim层要聚合是吗?这个聚合指的是什么意思呢?就他自己这张表要聚合是吗?要聚合我放在卡布卡,然后呢,我用弗林去消费,我能聚合呀。就是说具体一点对吧,我说其他同学可以来说一说吗。班长。班长在吗?你说一说,那我们dam层放卡不卡合不合适?
11:06
班长在吗?班长来。就是咱们的dim层放在卡不卡合不合适啊,你觉得啊,因为这会儿没得声音了。你是什么看法不太合适,为什么?啊,给出你的理由。为什么他不太合适?你是怎么想法?就就感觉啊。就就光感觉不太合适是吧?啊,那你再感觉一下应该用什么框架呢?你不太合适,你给我找一个框架。
12:21
好,那我们想啊。至于卡不卡,能不能行呢?我们先暂且放在这儿。对吧,啊,我们先放在这儿啊。好,我们想一下DM层怎么用。对吧,那离线数仓当中D层是不是与这个DWD层进行join。对吧,然后呢,做完之后补充这个维表字段。事实数据来了嘛,对吧,补充维表字段,然后呢,呃,聚合做什么事写到DWS里边对吧,做这个事情。呃,那也就是说啊,我们这个dim层其实就干事的。
13:03
实时表。根据主见。查询。维度表明细数据。对吧,他要查这个维表的明细,查我们dim层的一个明细,也就是说看看跟我们这个join语一样嘛,可以理解为就是状语。对吧。好,那你说这个东西你放在卡不卡合不合适啊。很明显不合适对吧,因为你要根据主见第一啊两个点第一。第一点什么呢?呃,不好,根据主键查询。啊,就是无法。根据主见。查询。啊,这个是什么意思呢?就是说你卡卡当中,我我呢存着有12345,比如说12345刚来的,对吧,我现在呢,指定我要二。
14:00
这个ID为二的。好做到吗?不好做的,因为卡不卡呢,你就正常的消费,从头到尾的去消费。对吧,啊,在对于同一个,而且对一个同一个分区来说呢,它还是有序的,这是第一个第二个问题啊。嗯,比如说。我五年前注册的账号,这五年呢,反正我一直也没改,就账号的东西没改,我今天下订单了,那你说我今天下订单了,订单呢是一个事实数据对吧,这个数据事实数据来了,他应不应该去关联。我这个用户的。用户表去补充这个用户的信息要不要。他要不要补充这个信息啊。就是我是五年前对吧,或者八年前注册的这个账号。他要不要补充这个信息啊。
15:07
很明显这个是。需要的吧,这个是需要的啊,所以呢,那既然会起到一个五年,那八年十年二年呢,所以他应该怎么样。所以应该怎么样,他要求啊。永久存储对吧,所以无法永久存储。也就是说我们这个维表呢,它有两个东西,一个呢要可以根据主键查询。对吧。一个呢,要永久存储,它是不是应该要满足这两个条件才能作为这个对吧,所以你想一想,诶,我们可以用哪些个框架呢。对吧,对于这个维表呢,我完全不需要什么实时的放在卡普卡里边对吧,那你就关联这个维表就好了,查这个维表对吧就够了啊,大可不必说你放在卡不卡里边。
16:06
开发里边又不好找,又没办法拥有存储,对吧,所以这个DM层呢,我们就不放在卡不卡,那大家想一想有哪些个框架呢,可以做这个事呢。对吧。啊,大家来说啊,然后我们来分析哪些框架可以,哪些框架不太行。啊,那刚才提到了。好,那我们写上啊,呃,还有呢,买。还有没有?想一想,你觉得哪些方向还可以吗?这个没关系,我们等会再一块来讨论一下,对吧?还有ES对吧,好行,ES好写上。啊,就是大家觉得ES也可以是吧?啊行,那我们写上啊还有没有。有没有同学觉得其他的啊可以啊。
17:01
嗯。还有没有?啊克,诶刚学的对吧。也可以做这个对吧,啊查询的效率很快。啊。而且我们刚学的对吧。好,那就这些框架了吗?还有没有。那其实HDFS还有这个have,那我们就不聊了,对吧,因为它这个延迟性肯定高,如果说你用HDFS或者说这个什么。Have,它虽然能存呢,对吧,但是呢,它它满足这俩条件,第一可以根据主件查询,第二可以用久存储。对吧,啊,这两件事情呢,可以做到,但是。太慢了。
18:00
对吧,我们是这个实时出仓,所以你搞那么慢呢,不太合适啊,你太慢了不太合适,对吧,这个意思,所以呢,这个我就不写了啊。或者写在这也行吧,呃,就是have,或者说IDFS啊,因为毕竟它呢满足这两个条件嘛,对吧,根据主件查询无法永久存储啊,就是根据主件查询以及用户存储,它呢满足这两个条件,所以咱们写在这儿,但是这个呢就是卖啊。差异的慢,所以呢这个呢,直接就pass掉。对吧,这个我们就写在这儿啊好,那上面我们列的这五个框架呢。到底哪个合适哪个不合适呢?我们来考虑一下对吧,首先第一个。H base的话啊。根据主键查询,诶,天生的有这个肉。对吧,永久存储没毛病。啊,就目前来说,好像不太能看得出来这个ES,呃,这这个有什么缺点。
19:00
对吧,啊,暂时先放啊,我们可能聊到其他框架有什么缺点的时候,诶这边同时存在这个缺点呢,有可能对吧,第二一个my circle,大家觉得my circle。合不合适?啊,有的提出来了,我们要维表放在买SL,也就是说我维表不倒过来,因为它本身就在买SQL嘛,我直接就查就好了,我不倒了。我直接查你的买狗。可不可以啊?其实买倒没没什么大问题啊。啊,就是你要单独从这个实数仓这边考虑的话,它其实没有什么大问题。但是你得考虑一个问题,My circle这个东西呢,它是属于Java维护的一个后台的。业务数据库对吧。
20:00
也就每天他呢,要做很多的增加改造,且更多的还要跟这个用户进行打交道。对吧,注册。下单。啊,支付取消订单啊等等这些东西。是不是都会产生我们数据,也就是说你正常的账号后台呢,是要大量的与这个什么。MY进行打交道的,那现在呢,你离线这个实时数仓来了。啊,时舒仓来了,实书仓来了之后呢。你想怎么样?你还得大量的查询,这个买搜狗效率就怎么样。变低了。是不是效率变低了,你会影响到业务库的一个操作啊,你会拖乱业务库的,是这个意思对吧?好,那所以这个东西呢,能不能用可以用。啊可以用,如果这边我们写一下,如果使用。
21:00
买so。注意。要使用属于重库,因为在生长环境当中一定会开这个什么。主从。对吧,他要开这个主从能理解吗?对吧,他要看主从要从从库去读,对吧,买搜狗跟大家说的啊,其实是可以的,其实可以的,对吧,只不过说呢,嗯,不影响,为了不影响业务这边的一个数据库,正常的一个操作,我们要用存库,这个能理解不?对吧,你看每个框架都有它自己的一个特殊性。能不能理解?能理解吧,啊这个呢,咱们要用这个从库啊好。嗯,他可以啊买可以对吧,ES。
22:04
行不行呢?对吧,ES它。可不可以呢?ES如果单从使用的角度来说可以,但是呢,总有一种什么杀鸡用牛刀的感觉,因为这个ES其实不太不太合适啊,比较麻烦,麻烦在哪呢?因为ES默认。键索引。默认给字段建索引,创建索引。对吧,但是你想想看啊,我们要根据主键查询,那也就是说就根据这个,它外面有一个主键啊,比如说文档ID啊,或者什么样子的,对吧?诶根据这个进行一个查询就好了。啊,根据它进行一个查询就好了,那你有必要给所有的字段建索引吗?你还得干什么,你不要索引,你还得OA指令,因为默认呢,它是建索引的,反而在ES里边你不需要索引,怎么样,还需要额外指定,不像以其他的框架,其他框架呢,可能,诶,那我需要索引呢,怎么办?我额外指定我不需要索引。
23:21
我就不指定那ES的反的对吧,它默认的给你所有字段都建所引,你不需要啊,你才要额外指定,那比较麻烦对吧,现呢一般不用那没必要吧,这这我就查这个数据对吧?好。RA,大家想好吧,对吧,啊,这个内存数据库。查的快,你不是实施数三吗?其实也有缺点是吗?啊,其实它也有缺点啊是什么。容易OM。
24:09
规模小,对啊,规模小没毛病啊,内存存储,内存存储啊,主要在于呢,呃吞吐量,嗯,这个倒还好吧,内存数据库啊,而且生产环境当中呢,一般也是这个它是。多台机器一个集群对吧,所以吞吐量呢,这个倒不是什么,问题在于什么呢?我们有一个用户用户。为表数据量大。所以刚才班长说的这个规模小对吧,相对来说是一个点啊,就是咱们有一个用户为表呢,数据量很大,其他的维表倒没有问题,对吧,那只有其中呢,有一个用户为表,数据量太大,那你用就不太合适了,太贵了。因为毕竟内存存储价格太高对吧,价格太高,内存要比固态高太多了啊,我用结合着固态对吧,比你这个red要要要好很多吧,因为啊是这样的克林奥斯能不能行呢。
25:04
啊,查询快呀,对吧。大家想一下,这个克里格号可不可以呢?对啊,可要的问题在于什么呢?我们要查的是什么?我们要查的是明细,也就是说一行数据吧,所谓明细是不是就一行数据啊?但是克林奥是什么?猎犬。它列存是不是也不太合适啊,对吧,相对来说肯定会差一些,比你行存肯定要差一些,好,那这个时候想起来了,那么到底是列存还是行存呢?对吧,那it里面经常提到一个什么列族列族列足对吧,这些东西,那它。
26:09
是什么呢?咱们的h base它是列存存呢。那也是列存的话,那不就不行了吗?他这也不不行吗,对吧,也不好啊。对,主要癌在于什么?大家说的可行可列,对吧?它行和列都是可以的。对,而且说了啊可以啊,大家大家觉得艾还行啊,对吧,啊这块对吧,格格列只有一个列簇的时候呢,它其实就是行存。其实就行存对吧,如果说你呢,十个列有十个列簇对吧,十个列簇,每个列簇里边放一个列,那么这时候它是什么。
27:01
它就是列存,因为一个列组,一个列组呢,在HDF上是一个目录,是一个文件夹,那你数据就分开存了,是不是一个列存在一块,一个列存在一块儿啊。对吧,一个的一个的存在一块是这个意思。对吧,啊是这样的一个点啊,所以呢,呃,其实可行可列,那我们就知道了,如果说我们要选用h base存储的话,那我们应该选用一个。列簇吧,我们就只有一个列簇就搞定了。是不是?对吧,咱们用一个列处来存储这个内容。对吧,我们用它行存的一个点啊好,这是我们所看到的ods跟DM层的一个价,呃框架啊,那后面呢,我们再聊。
我来说两句