00:00
呃,好了,各位同学,那咱接下来呢,就继续往下进行,那下边首先我们要讲的内容就是dim层的设计要点啊,一共三点,咱们一个来先看第一点,第一点是什么呢?是dim层的设计理论依据对吧?那想想dim层的设计理论是不是肯定是维度监管理论呀,对吧?哎,这个就没啥可说的了啊,OK,那这一层呢,我们主要是存放维度模型当中的维度表,OK,那这提到了这个呃,维度建模理论了,对吧?又提到了维度表,那大家现在还能不能回忆起来,就是说我们去设计维度模型当中的维度表的那个具体的过程还能想起来吗?还还能想起来吗?就是我们设计维度表的过程还能想起来吗?稍微的回忆一下啊,来,我们往前找一下之前的那个建模理论,找到建模理论应该是在哪一节,应该是在这一节对吧?4.2维度表设计步骤对吧?咱们第一步是干什么来着?是确定维度或者叫做确定维度表对吧?其实这一步刚刚咱们在做整体规划的时候,不是已经做过了呀,相当于没问题吧,OK,咱们是怎么做的,我们是不是找到这个业务总线矩阵对不对?然后呢,在这里边呢,我们确定下来了,我们一共需要这六张维度表,其余的是不是咱们都做了退化了呀,对不对?那OK,这实际上就是咱们第一步叫做确认维度,这个确认维度怎么确认的?其实很简单,咱其实就是根据什么确定是不是根据与这些业务过程相关的维度去确定的呀,对吧,你看这儿都有对根,那就表明啥,是不是这个维度跟我这些业务过程都是有关的呀,对吧?那在这儿呢,我就应当去创建一张与之相关的维度表了,对不对?OK,咱就是这么创建的,也就是第一步咱相当于就完成了啊,那接下来咱继续。
01:39
往下走,下边一步是什么?是确定主为表和相关为表,对吧?大家还记得这个主为表相关为表的概念吗?首先他们指的是不都是与呃,与谁相关的,与这个维度相关的哪儿的表,是不是业务系统当中的表啊,对不对?那也就是我们再去确定这个所谓的主维表和相关的表的时候,你得怎么确定,是不是得一个维度一个维度的确定了,对吧?比如说我接下来我要设计的是商品维度表,那首先呢,你就得干啥,是不是得现在去找一下业务系统当中与这个商品相关的表都有谁啊,对吧?诶,找到之后呢,这里边是不是力度最小的那个,往往我们称之为是主维表啊,对吧?其余的我们往称为这个相关为表,是这样的,这是我们第二步,好,那只要主维表相关维表确定下来了,那咱是不是就可以去确定这个维度表的表结构了呀,对吧,那表这构首先就是行呗,那行通常跟谁保持一致,跟主为表保持一致对吧?好,那列呢,列是呃,就是来自于咱们这个主为表和相关为表了,对吧?来的方式呢,有两种,一种是什么来着,是直接取。
02:39
还有一种呢,是进一步加工得到对吧?诶就是这样的几个步骤对吧?OK,那大家呢,需要先把这个维度表的设计的过程先给它回忆起来,好,那回忆起来之后一会儿我们就严格的按照这个过程去设计咱们的每一张维度表啊,好,到时候再说,那现在我们先继续往下看啊,走走走来到这个DM层的这个位置好了,那现在第一第一点,那基本上咱们就回忆完了啊,就是我们需要根据那几个步骤去设计我们的每张维度表啊,接着往下走第二层啊,第二步,第二步是干什么?第二步也是在给我们指明dim层的这个表的存储格式啊对吧?呃,第一第一步呢,其实是告诉我们怎样去设计这个表结构,对吧?那第二层呢,主要是给我们声明一下,哎,就是说我们到底应当如何去,呃,或者说我们到底应该怎样去选择这个存储格式,对吧?啊,那我们这采权的存储格式什么呀?是orc劣式存储加上死内皮压缩,你会发现dim层跟ods层,是不是这个存储的格式发生了很大的变化呀,对不对,咱们Di ods层相对于什么呀,就是文本文件。
03:39
再加上一个GZ和压缩,对吧?那在这儿呢,首先我们的文件格式是orc啊,这样的一个列存储,然后压缩呢,也变成snap了啊,为什么会有这样的一个变化啊,啊,其实我这个需要给大家说明一下,就是因为dim层跟ODI层咱们的职责已经不一样了,对吧?啊,ODM层咱们的职责是保存历史数据,所以说我只要把数据压的够小就可以了,对不对?但是dim层呢,它将来会作为什么呀?是不会做为我们做需求对不对,它的这个数据的主要来源呀,对吧?OK,为啥你想啊,就是将来我们做需求,要么就是从DWS层取数,要么就是从DWD加上DM层取数,是不是应该是这样一个逻辑啊,对不对?那OK,那你从里边取数去做需求的时候,我应当尽可能保证,保证什么呀,保证这个查询速度对吧?啊,实际上你查询速度越快,这是我越想看到的这个情况没问题吧,那所以说怎样才能让它更快呢?哎,两种方式,那一个呢,就是列尔存储,再一个呢,就是使用一个快速的压缩格式嘛,对吧,那列存储能够加快咱们这个查询,大家应该都呃都能想明白对吧。
04:39
为啥?因为将来呢,我们去做的这个需求的时候,我通常都是怎么去查询数据的,我们不会一行一行的去查某一行数据,我们一般情况下就是查啥,就是查一个表或者一个分区当中的是不是一个列的所有数据啊对吧?那所以说你采用列的存储,把列啊,就是把同一列相邻的这个,这个把同一列的数据我放在呃这个相邻的位置,那我查的时候是不是更快一些啊对吧,实际上所以说呃,在这儿我们采用列势存储是很有用的,那再有一个呢,就是死的压缩,那它是不是它的特点就是快速的解压和和压缩呀,对吧?那所以它速度也比较快,那所以说那它俩配合诶,我们就能够,呃,就是实现更好的这个查询速度,诶,这一点要体会一下啊,OC跟snapy就是一个比较经典的搭配,就是外边企业当中呢,也大多数都采用的是orc加snap的一个压缩格式啊好,那这个理解一下,那接下来咱继续往下进行,下边我们看一下第三点要求是什么,第三点呢,其实也是为我们指明了一下这个表明的命名规范,对吧?那我们现在来看一下它这个具体的规范是什么啊,也是一共有三部分组成,第一部分DM。
05:39
是不是就是层名对吧?第二部分呢,是表名啊这样的,也就是说假如说你是商品维度,是不是得把这个商品给体现出来才行,对吧,你要是用户维度,得把用户体现出来才行啊好,接下来继续往下走,那下边呢,诶,是不是也是一个全量或者是拉链表的标识啊,对吧?大家稍微回忆一下,就是我们的维度表是不是我们大致可以分成两类啊对吧?一类我们称之为每日全量快照表对不对?那还有一类呢,是干什么来着,叫做拉链表对不对?那这两种类型的表他们为什么这么设计,主要是为了干啥来着,是不是为了保存维度的历史状态啊对吧,这个要回忆起来啊,OK,那所以说我们的表可以分为这样的两类,那所以我们在这儿呢,需要给咱们去加上一个区分,对吧,如果你是每日权利快照表,我加一个负啊,如果是拉链表,我加一个Z,就是在这儿,我们为什么要去加这个,加这样一个标识啊,这个标识你别看它简单,但很有用。
06:32
有用在哪呢?大家想想啊,我们之前在讲那个维度加值理论的时候,对吧?哎,我们应该分析过,就是每日全量快照的维度表和拉链表,它的使用方法,使用逻辑是完全不一样的吧,对不对?那你每日全量快照表是通常就是根据分区去过滤数据就行了,对吧?那拉链表咱们得根据什么来着,什么开始日期,结止日期是去过滤对吧?他俩的使用方式是不一样的,所以在这儿呢,如果你不加这个标识,那我用户拿到这个维度表之后,他知道怎么用吗?他不知道怎么用对吧?诶你加了标识之后,诶一看就是个全量表,那我就按照全量表的方式去查对吧?这一款,那我就按照拉链表的方式去查,对不对,这个其实很有用的啊好了,同学,那这就是咱们的dim层每张表的表明的命名规范啊,行了,那同样是啊,就是后边这两点,我们只需要做一个简单的遵守就行了,然后核心呢,仍然是第一点,就是到底如何根据见闻理论这个维度见文理论对吧,来去设计咱们所需要的每张维度表,OK,那咱接下来呢,就重点把这个第一步去给它做一下去。
07:32
落实一下啊,来,视频我录上,咱们继续往下走。
我来说两句