00:00
好,各位同学,那接下来咱就正式开始上课,呃,然后今天上午呢,咱们讲到哪了,讲到了维度表的设计步骤了,对吧?啊维度表的设计步骤我们分为呃三个步骤对吧?那分别是确定维度表,那他呢,能告诉我们一共需要建哪些这个维度表需要一共需要建几张维度表对吧?那么到下边一步呢,叫做确定主页表和相关维表,那实际上这个呢,主要就是在确定业务系统当中与每个维度相关的表都有谁对吧?那确定之后呢,那基本上呃,我们每一张维度表的设计灵感基本上就有了,对吧?呃,我们这张表的这个表结构啊,包括行还有列,其实都是是不是根据这个主格表和相关为表去确定的呀,对吧?啊然后呢,我们下边要要做的一步呢,就是确定每行是什么,每行跟谁跟谁保持一致来着,是不是跟那个主维表保持一致啊,对吧,那列跟谁一致,列其实没有说跟谁一致对吧?列主要就是来自于主外表或者是相关表啊,那然后呢,来的方式呢有两种,一种呢是直接从里边拿,还有一种呢是。
01:01
是不是经过加工呃,得到啊,对吧?有这样两种方式,那这就是我们这个维度表的设计的步骤啊,这些东西呢,咱们还是,呃那句话就是不用去记,也就是理解就行了,知道每一步是在让指导我们去做什么工作就完事了啊等将来咱们真正去做到这个维度板的时候了,诶咱们前前后一对照,然后呢,大家就基本上就记住了啊,不用刻意的去记,行,那接下来呢,我们继续往下走,下边我们要讲的内容是什么啊?是维度设计要点这一小节,呃,这一小节它包含的内容是什么?大家可以看,一共有四个部分的内容,对吧?这四个部分的内容都是我们在设计维度表的过程当中可能会面临的问题啊,这个所谓的社交点是我们在设计维度的过程当中可能会面临的问题,以及在这个遇到这个问题之后呢,我们相应的解决方案啊,实际上所以这一部分内容呢,相对来说还是比较重要的,那现在咱们就正式开始,呃,首先我们先看第一个问题,就是我们在设计维度表的时候呢,我们需要考虑一个规范化。
02:01
和反规范化的问题,呃,首先这个规范化和反规范化这两个概念,我觉得大家现在应该大概能猜出来是什么啊,规范化其实就是我们之前所讲的那个数据库规范化,反规范化呢,是不是正好跟规范化是相反的呀?对吧?啊来,那咱们先来看一下这个具体的定义是什么啊?那首先先看规范化,规范化呢指的是使用一系列范式去设计数据库的过程,对吧?那它的目的是什么呀?前面讲过是不是主要是为了减少数据的冗余,增强数据的一致性啊,对吧?呃,在通常情况下呢,我们这个规范化之后,是不是一张表的字段可能会被拆到多张表之前,咱们其实呃是不是学过那个三范式啊,对吧?三范式下来之后,我们确实是由一张表是不是拆成了多张表啊,对吧,那这个大家应该是之前体会过的啊,那接下来我们再来看一下这个反规范化,那反规范化是什么呢?正好跟规范化相反,它是将多张表的数据冗余到一张表,那它的目的是什么呢?哎,它就是为了减少照样操作,提高查询性,提。
03:01
查询性能,诶这是反规范化啊OK,那所以在这呢,我们在设计维度表的时候呢,我们就需要去考虑一个问题,就是说我们这个维度表到底应该是选用规范化的方式去设计,还是选择反规范化的方式去设计呢?大家觉得应该用谁?是不是肯定是反规范化呀,对吧?而而且之前咱们看到的那个维度模型,咱们往上走,呃,找到之前我们这个维度模型那张图,对吧?那从这张图当中我们也能看出来,就是咱们这儿设计出来的这个维度表,这都是反规范化的吧,对不对,那他们都没有经过规范,你要经过规范化,是不是这一张表肯定都会被拆成多张表啊,对吧?啊是这样的,所以这个答案很简单,那就是使用反规范化的方式啊,这个没有什么权限啊,是这样的啊呃,然后呢,咱这之所以要安排这样一节呢,其实主要是为了给大家引出一个知识点,哪两哪个知识点呢,我们往下看啊,那把这段话咱们一起来读一下,哎,他说了,在设计维度表的时候,如果我们选用规范化的方式,那我们最终设计出来的这个维度模型呢,我们就叫它,叫它什么呢?叫做雪花模型,那如果我们采用的是反规范化的这个设计,对不对?那我们得到这个模型呢,我们就称之为是星型模型,其实在这儿呢,主要是为了给大家把这个雪花模型和星型模型这个知识点引出来好。
04:18
那接下来我们就来看一看这个所谓的星型模型,雪花模型到底长什么样啊,来我这儿呢,专门准备了一个PPT,咱们点开一起看一眼,嗯呃,来,把它打开。好了,各位同学,那这儿呢,一共有两张图,左边是星型模型,右边是雪花模型,这俩看起来是不是很像啊,对吧?那现在大家开始这个找不同,你看看这两边哪不一样。哪不一样,那首先中间是不是都是一张事实表啊,对吧?啊,OK fact table是不是就是事实表对吧?那周围是不是都是维度表对吧?那它俩区别在哪?区别是不是这有一处不同,这儿是不是也有一处不同啊,对吧?OK,好,那这个不同很明显,其实啊,啊,这个不同在哪呢?它的主要区别在哪呢?哎,其实很简单,学员模型、星型模型的主要区别就在于维度表是否进行规范化,你看星型模型这边咱是不是并没有规范化,我们将多多张表的数据是不是冗余到了同一张维度表当中,对吧?里边肯定是存在数据的冗余的啊,然后右边呢,我们之所以会把一张表拆成两张表,那肯定是因为我们对它进行了规范化,对吧?哎,是这样的啊,那这就是星型模型和雪花模型的一个主要的区别,哎,这个大家要注意好了,那这个星型模型,雪花模型它们的名字是怎么来的啊,其实这还是比较形象的,大家说根据什么来的,其实就是根据这两个模型的形状来的吧,对不对?你比如说咱们以星形模型为例啊,星形模型它的这个大体的形状是不是就是中间有一张。
05:40
事实表啊,对吧?那周围呢,是不是会有一圈的维度表对不对?你把它连起来之后呢,这个看起来是不是就有点像一个星星啊,对吧?呃,可能画的比较难看啊,但是诶,你补上两笔之后,你这么去看,哎,就有点像一个星星对不对?这个星星确实不太像啊,但是这个雪花模型相对来是比较形象的,那雪花模型是怎么回事呢?全方是不是中间会有一张事实表对吧?那周围是不是会有一圈的维度表对吧?然后维度表是不是进行了规范化,也就是它会有分支对不对?那也就是说,OK,我这儿有一个维度表,那我这个维度表呢,还会去关联其他的维度表,那这个呢,我是不是也会再去关联其他的表,对吧?那完了之后呢,我们继续给他补上,那其余的是不是也是类似这样的分支啊,对吧?OK,那这个东西看起来是不是就有点像一个雪花了呀,对吧?就这个意思啊,OK,这是星型模型跟雪花模型这个名字的来源啊,就是来自于他们的形状啊,OK,其实除了这两种模型呢?啊,大家以后可能还会再听到一种模型叫做星座模型,星座模型,那什么叫做星座模型呢?
06:40
啊,其实很简单啊,来大家思考一个问题啊,你想一想,就是将来咱们这个数仓里边啊,你说我们的事实表只能有一个吗。不是吧,咱们是不是是不是肯定会有很多呀,对吧?因为一个实时表是不是对应一个业务过程,业务过程很多,那我们的这个事时表是不是就会很多呀,对吧?那这些事时表之间是不是肯定会有一些共用的维度表,对不对?比如说举个例子,咱们之前以用户维度举个例子,对吧,我们是下单是不是跟他有关,支付跟他是不是也有关啊,对吧?诶也就是说一些师表之间会有一些公用的维度表,好,那好比是什么呢?是不是就是多个星型模型会通过一些维度表是不是连接在一起啊,对吧,没问题吧,OK,那完了之后他们就连接一起,就组成一个什么东西了,就组成一个星座了吧,对不对,其实就是这么个意思啊,也就是说将来大家如果听到这个星座模型也不用觉得陌生,它实际上呢,是我们这个数据仓库当中的一个常态啊,对吧,就是我们很这个所有的数据仓库当中,我们都不可能说只有一个业务过程,肯定都是有很多的业务过程,也有很多的实时表,那些实时表之间呢,肯定会有一些共用的维度,对吧,那只要有共用的维度,相当于这些星型模型是不是连在一起就相当于组成了一个。
07:51
所谓的星座呀,对吧,就这个意思啊,那当然了这个,呃,咱们这提到的是星型模型,我连接在一起,我们叫做星座模型,那你说雪花模型,它连接在一起叫做什么东西呢。
08:02
呃,也有的同学可能管它叫雪球模型什么的啊,没没必要啊,它也叫做星座模型就完事了,也就是说,呃,我们这儿呢,就是只要是有多个实时表对吧,通过一些共用的维度连接在一起了,我们就管它叫做星座模型,那就完事了啊,是这样的啊好了,那这就是给大家演出来的几个简单的概念,星星模型,雪花模型,还有星座模型,呃,这个咱们得知道是什啊好了,完了之后我们继续往下进行,呃,然后这里边呢,文档当中这儿也最终给出来了一个结论,就是说我们再去设计这个维度模型的时候,我们到底是选用星型模型啊,还是选择雪花模型啊啊,那完了之后咱们大家肯定要知肯定是选哪种啊星型模型对吧?呃,然后既然这给出来了这个文字说明,我们也把它读一下吧,来来咱们一起看一下啊,但数据仓库的主要目的呢,是用于数据的分析和统计,对吧,所以说是否方便用户。进行统计分析就决定了咱这个模型的优劣,对吧?那你采用雪花模型的话呢,用户再去统计的,呃,这个过程当中需要大量的关联操作,这个应该是能体会出来的,对吧?因为雪环模型你的维护员这个规范化了,你需要做更多的转one对吧?那使用复杂程度比较高,同时查询性能比较差,那我们要是采用星型模型的呢?诶,那咱们这个是不是更加方便易用且性能更好,对吧?那所以出于这几点的考虑呢,维度表一般都是很不规范化的,是不规范化的,是冗余的,这一点大家要理解啊,OK,好,那第一小节规范化与反规范化的问题咱就说完了,这个相对比较简单啊,来视频我一。
我来说两句