00:00
好,接下来我们简单对比一下关系建模和维度建模,呃,先来看关系建模啊,那关系建模是将复杂的数据抽象为两个概念啊,分别是实体和关系啊,并且使用规范化的呃这个方式给它表达出来,那所谓规范化的方式呢,就是我们刚刚所提到的这个三范式啊,那关系模型的特点是什么呢?是哎,模型较为松散零碎啊,这个模型当中物理表的数量是比较多的啊。下边有一张图,我们可以简单看一下。啊,从图中我们应该能看出来啊,确实这个模型哎,看起来相对比较松散零碎,没有什么规律可循,对吧?啊,而且物理表的数量是比较多的啊,这就是关系模型的一个初步的一个特点啊,OK,那其实大家可以深入的思考一下啊,就说为什么关系模型它的表的数量会这样比较会会这么多,那再一个表与表之间的关系为什么会这么复杂呢?啊,其实这个是由于三范式导致的,对吧,咱们刚才是不是演示过这个三范式对吧?那在进行三范式的过程当中,我们可能会对表进行拆分对吧?那拆分之后,那表的数量肯定会越来越多,对吧?啊,那所以说那这就导致关系模型,那它的这个特点就是表的数量多啊表与表之间的关系是比较复杂的。
01:20
啊好,那接下来往下看啊,下边有一个总结,一起来看一下,那关系模型严格遵循三范式,那所以说它的数据冗余程度低,那数据的一致性就容易得到保证,对吧?这是它的优点啊,那它的缺点是什么呢?缺点就是由于数据分布于众多的表中,那查询会变得相对的复杂,那在大数据的场景下呢,查询效率还会比较低。那为什么在大数据的场景下查询效率比较低呢?啊,这个我们简单思考一下啊,那由于表的数量多啊,那我们的查询是不是可能会用到这个draw的操作,对吧?啊,那他进行join的时候呢?那大家都知道,我们以海王MR为例啊,那是不是每次join我们可能会用到呃,会涉及到一个这个MR的杀货操作呀,对吧?啊那大家都知道在MR当中,这个沙货是一个比较重的操作啊,是一个比较呃慢的操作,那对吧?所以说你照的多,那我沙就会多,杀错多了,那我的查询就会慢啊查询效率呢,相对来说就比较低啊这个呢就是关系模型它的一个特点啊OK,那接下来我们再往下看啊,再来看一下这个维度模型的特点是什么?
02:27
啊,OK,那维度模型的特点是模型相对清晰,然后简洁,那从下边这个图当中我们也能看出来,那确实这个模型的结构是比较简单,表示的数量也比较少,对吧?它能够跟我们刚刚的关系模型形成一个鲜明的对比。啊,是这样的啊,那接下来我们往下看啊,看一下下边的这个,呃,文字描述。那维度模型呢,是以数据分析作为出发点的啊,那当初rap kin ball在设计维度模型的时候呢,就是以数据分析作为出发点。
03:00
啊,也就是说它是更适合做数据分析的啊,那他不会去遵循三分式,那所以说我们数据呢,是存在一定的冗余的啊OK,继续往下看,那维度模型面向业务啊,那它将业务用事实表和维度表呈现出来,那这句话咱们怎么理解啊,首先我们需要先给大家介绍一下,呃,事实表和维度表这两个概念。啊,OK,事实表和维度表是维度模型当中的两类表啊,就是一个维度模型啊,那它所有的表会分为两类,一类就是事实表,一类就是维度表啊,那谁是事实,谁是维度呢?我们看一下上边的这个维度模型的例子啊,这就是一个典型的维度模型,那谁是事实表呢?中间这张表我们就称为事实表,那周围的这一圈表呢,我们就称之为维度表。啊,维度表,那一般情况下事实表当中存储的是什么数据呢?存储的就是我们,哎,具体的业务事实。
04:01
呃,比如说订单的这个操作,比如说这个支付的操作啊,比如说退单的操作,退款的操作等等等等,那这些我们都称之为业务事实对吧,业务事实存储在事实表当中。啊,那周围的维度表当中存储的是什么数据呢?存储的就是这些业务事实的描述信息,那也就是我们之前提到的何人何时何地等等等等这样的一些信息。啊是这样的啊OK,那这个呃,事实表和维度表的概念我们就给大家介绍完了啊介绍完之后呢,我们再继续往下看啊,那这里边怎么样呃去理解这句话呢?对吧?啊维度模型面向业务,然后呢,将业务用事实表和维度表呈现出来,我怎样能够通过事实表和维度表把这个具体的业务呈现出来呢?那在这儿我们举一个简单的例子啊,比如说我,呃以一个下单的业务为例啊,那下单,那通常情况下我们要记录的信息应该是谁样,是不是就是比如说举个具体的这个例子啊,比如说张三啊在2020年10月25号,那在呃某商城呃购买了一件商品,呃,然后呢,花了多多少钱,没错吧,这是不是就是一个典型的下单的业务事件呀,对吧,那这个下单的业务事件,我怎样通过一个维度模型去表示呢?很简单,我只需要呃,用到一个订单实时表。
05:25
啊,用到一个订单实时表,那订单实时表当中我需要存储什么数据呢?存储啊user ID,那user ID,那它去关联谁呢?关联用户维度表,那这样一来我们就知道是谁下的单,对吧?那除此之外呢,我还得再有一个呃时间ID,那时间ID联。啊,那这样一来我们就知道是谁在什么时候下的单,对吧?那除此之外,我们还得再需要一个,哎什么什么什么字段呢,哎,还得再需要一个商品ID,那这样我们就知道那这个人他买了什么商品。
06:02
啊,那除此之外,我们还得再知道一个,比如说地区ID,那这时候呢,我们就能够用地区ID去关联地区维度表了,啊,那这时候我们就知道啊,他在什么地方购买的商品。啊,是这样的啊,那除此之外,我们40秒当中还得存储一部分数据,那什么数据呢?比如说那下单所购买的商品的数量,那这样一来我们就知道他购买了几件商品啊,那还有一个字段就是诶订单的金额,那我们这样就知道他下单一共花了多少钱了。啊,是这样的啊,那也就是说我们现在是不是就可以通过这样的一个维度模型,将我们这个业务事件清晰的表示出来了,对吧,我们就知道是谁在什么时候什么地方购买了什么商品啊,然后买了几件,一共花了多少钱。啊,对吧,那这个就是一个典型的维度模型。啊,不光咱们这个订单业务可以用维度模型这样表达出来啊,我的支付啊,我的退单,哎,我的退款业务也都能够使用同样的维度模型清晰的表达出来啊,那这就是我们对这句话的一个解释说明,就是说维度模型是面向业务的啊,那它能够将事实,呃,它能够将一个复杂的业务用事实表和维度表呈现出来。
07:25
啊,而且不管是什么业务哎,都能够用同样的套路来去表达啊,都可以用实时表加维度表去进行呈现啊,这就是维度模型,哎,它的第二一个特点相当于是啊好,接下来我往下看,那还有一个特点就是维度模型啊,它的表结构是比较简单的啊,那所以说查询简单,查询效率相对来说比较高,大家能看到啊,那咱们的事实表,那咱们的维度模型,那我是不是最多啊,就是需要用事实表跟维度表做一次关联啊,对吧?那所以说我们draw相对来说是比较少的,那撞少沙就少沙少,查询效率呢,相对来说就较高啊OK,那这个呢,就是维度模型的哎几个特点。
08:06
啊OK,那现在呢,我们呃,就把这个维度模型和关系模型做了一个简单的对比,那关系模型在这儿呢?我们呃以了解维度啊,然后维度模型大家需要重点掌握啊,所以说在在这儿呢,我们再来把维度模型啊最终总结一下啊,那维度模型大家能看到啊,整个模型分为两类表对吧?一类刚才我们提到了,我们称为事实表,那还有一类呢,我们称之为维度表啊,那事实表当中存储的是什么信息呢?啊,存储的是业务事实对吧?啊业务事实比如说下单记录,比如说订单记录,呃呃,不是啊,比如说订单记录,还有这个支付记录啊,退单记录,退款记录加购车记录,收藏记录等等等等,这是不是都是典型的啊业务事实啊对吧?他们都存储在相应的事实表当中。那呃,除此之外,我们还有一类表叫做维度表,对吧?维度表当中存储的是什么信息呢?呃,是对业务事实的描述信息啊,是描述信息,那也就是说呃,何人何事,何时何地等等等这样的一些信息啊,OK,那我不管是什么样的复杂业务,都可以用事时表和对应的维度表去去进行来表达啊,OK啊,这是这样的啊,然后我们再深入一点。
09:24
来看一下啊,事实表当中的字段,那其实我们可以做一个分类啊,那分为哪些类呢?我们可以分为这样的两类啊,那可以看到啊,其实一类是什么?是不是就是各种维度表的外键啊,对吧?啊,各种ID,比如说什么商品ID,用户ID,时间ID,地区ID等等等等啊,这是事实表当中的第一类字段啊,那除此之外还有一类字段,还有一类字段实际上大家也能够感出来,它应该是一个数字类型的字段,对吧?你像我们刚刚举的那个下单的例子,对吧?那除了维度表的外键,我们是不是还有一个什么商品的件数,还有一个订单的金额,对吧?你看这是不是都是一些数字类型的值啊,对吧?啊,那这些值我们实际上是有术语的,我们叫做度量值。
10:09
啊,是度量值啊,那也就是说啊,事实表的字段主要分为两类,一类是维度外键,一类是度量值。啊,这是事实表,那维度表呢,那当然它里边的信息啊,那就是一些描述性的信息。好,这就是对维度模型的一个简要总结啊好,那现在我们大家只需要对维模型有一个基本的认识就可以了啊,我们知道什么是事实表,什么是维度表啊,那事实表当中存储的是什么数据,那维度表当中存储的又是什么数据啊,把这些基本概念搞清楚就可以了,那至于呃,我们呃如何去构建维度表,如何去构建事实表,呃如何去构建维度模型,对吧?那这这个我们后续会详细的去阐述的啊。
我来说两句