开发者学堂课程【大数据分析之企业级网站流量运营分析系统开发实战(第三阶段): 网站流量日志分析—数仓设计--维度建模三种模式】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/695/detail/12198
网站流量日志分析—数仓设计--维度建模三种模式
内容介绍:
一、 星型模式
二、 雪花模式
三、 星座模式
四、 总结
维度建模三种模式可以掌握企业当中数仓常见的三种模式模型以及数仓的发展脉络轨迹。首先一点要明确数仓并不是一次性的行为,而是不断发展维护的过程。随着数仓的不断发展,分析的主题变得越来越多,主题变多之后,所对应的事实表也好,维度表也好,也都会变多,变多之后就会产生各种各样的关系,各种各样的模型,当中最著名的是讲义上所写的三种模式,分别叫做星型模式、雪花模式、星座模式。
一、星型模式
这是最常见的一种,如图,所谓的星型模式是以一个事实表为中心,多个维度表像星型一样在事实表的周围,围绕着事实表呈所谓的星型分布,可以抽象理解为事实表是地球,旁边有很多星型在进行旋转。当中星型模型有一个事实表意味着有一个主题,一个主题企业当中在数仓发展的初期阶段,刚才建立可能分析不多的时候才会有星型模型。
二、雪花模式
通过这个图直观感受到它首先还是有一个事实表,区别在于维度表之上可以继续关留维度表,维度表是看待问题的角度,如果这个维度表分析得不够明确,可以继续往下做一个数据细分。如上图,比如分析事实表上订单的情况,从第一名的分析国家省市,要是想看的更加仔细可以从地域更加细致细分下去,以国家的维度分析,以省份的纬度分析,以城市的维度分析,这样就形成一种关联。维度表不断扩展维度表,就构成了所谓的雪花模型。事实上这种模型有利于人类的事业扩展的,看待问题总想不断的深挖下去,但是知道一旦维度表,关联维度表甚至关联更多之后,这种模式它的维护成分关联比较高,因为涉及到多层关联,维护起来性能是一个大的问题。所以在企业当中,作为架构师数仓领域有权利的人,要避免把数仓模型拆分。
三、星座模式
星座模式本身是星型模型的延伸,通过上图发现最明显的区别是有多个事实表,多个事实表意味着数仓当中有多个分析主题,意蕴着数据仓库发展肯定不是一天半天了,应该是企业当中数仓发展的中后期,有多个事实表没有问题,可以发现当中有些维度表是可以共用的,如上图,维度表 A 可以支持左边的事实表1,也可以支持右边的事实表2,通过 FK ,这就意味着无修维度可以共用就没有没必要维护两个同样的维度表,这个维度表把两个进行关联就像星座一样。
这三种模型是企业当中常见的三种企业模式,一个是初期,一个是中后期,一个是避免变成这样的模型,为了更加贴近于实际理解的模式,比如今天大家同时来入职,来一家新的公司,这家公司建立新的大数据分析数仓领域,首先今年上半年老板布置一个活,让我们去分析公司的订单销售情况,确定主题之后,事实表可以马上确定,分析的是订单销售情况,这个事实表就是订单表。确定了所谓的事实表可以从哪些分析,比如说分析哪个省份哪个地方买的多,按照地域维度分析,发现根据事实表就可以从不同维度上分析,按照时间的维度分析,哪个时间买的多,哪个时间买的少,一月上旬买的多还是一月下旬卖的多,对一天来说早上卖的多还是晚上卖的多,发现又可以分析一个维度,也可以按照商品的维度来分析,分析哪个商品卖的多;还可以按照销售渠道维度来分析了,现在购物 PC 端、移动端,微信也可以小程序购物,这时候发现一旦从不同的角度去分析这些维度和事实表产生了关联,这样就构成了一个事实表,多个维度表。维度表跟时代产生关联像星型一样围绕在事实表周围,这就是星型模式。这种模式往往是企业发展初期模式。
雪花模型不利于维护关联避免设计成模型,比如说工作了半年,老板下半年又来一个新的需求,留下来一半人继续去分析订单销售情况,剩下一半人开展新的主题(公司网站访问情况),确定主题之后,接下来还要去确定事实表,要分析网站的访问情况(访问的日志表),这时候从从侧面上再次感受到事实表跟主题息息相关,要分析什么主题,事实表就跟主题相对应,这是主题一个客观的度量。
网站的访问情况也可以按照时间维度分析一天当中是上午来的多还是下午来的多;公司有不同的栏目,有不同的模块,所以可以按照栏目来分析,新闻类的模块,科技类的模块,房地产相关的,汽车相关的,军事相关的以及政治相关的,按照栏目来分析看网站到底哪个栏目来得多,对电商来说也一样,日用品的、化妆品的,生鲜的、水果的看看哪个栏目来得多,这又是一个分析的角度。我们访问网站是通过手机端还是移动端,是通过电脑打开还是手机安卓或 ios 以及浏览器,这叫做终端信息,又发现可以扩展一个按照终端维度分析,比如公司当中90%的人都是通过手机来访问,这时候针对手机端做一个最好的优化,图片通过流量访问并且压缩,信息显示精准一点错。不管怎样去扩展,又发现开展了一个星型模型。
左边一个星型模型,右边一个星型模型,但是这时候作为数仓的架构者或者维护者,分析发现左边的一个事实表有一个时间维度,右边的也有个时间维度,产生一个问题这两个时间有没有关系(如下图),
举例,比如分析左边的订单时间维度是从2018年1月到2018年6月,右边的是2019年1月到2019年6月,这两个时间维度没有关系以致不能合并,但是有一种情况如果恰好右边分析时间维度,18年1月到18年6月,这两个维度表的数据完全一样,这种情况下没有必要维护两份一样的表。
如果数仓中某些维度表可以共用,只需要维护一个维度表即可。意味着该维度表可以给不同的事实表提供分析的支持。这两个关联有一个事实表叫做时间的维度表来分析之后就构成星座模型。
四、总结
所谓星型模式是一个事实表多个维度表,维度表之间没有关系,维度表跟事实表进行关联,这是企业数仓发展初期常见的模型。
所谓雪花模式是一个事实表多个维度表,维度表可以继续关联维度表,形成一个多级关联的关系,像雪花一样扩散开来,但不利于后期的维护,因此企业中尽量避免演化成该种模型,如果涉及该种模型,花费的精力比较大,随着不断演化,维护成分越来越高。
所谓星座模式是多个事实表多个维度表,某些维度表可以共用,企业数仓发展中后期常见模型。
通过这些模型可以从客观层面上去看一下这家公司的数仓到底是一年半年还是一个月半个月,还是怎么发展,设计的好不好。
以上就是数仓设计里常见的三种模式星型模式、雪花模式、星座模式。