数仓模型设计详细讲解

前言

         今天给你们分享下数仓中的模型设计,一个好的数仓项目首先看一下它的架构以及他所用到的模型,它们使用的模型也都是很是巧妙的,好了,咱们话不说到直接开始。 封面图git

1、维度建模基本概念

         维度模型是数据仓库领域大师Ralph Kimall所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。<font size="3" color="red">维度建模以分析决策的需求出发构建模型</font>,构建的数据模型<font size="3" color="red">为分析需求服务</font>,所以<font size="3" color="red">它重点解决用户如何更快速完成分析需求</font>,同时还有较好的大规模复杂查询的响应性能。          <font size="3" color="red">维度建模是专门应用于分析型数据库、数据仓库、数据集市建模的方法。数据集市能够理解为是一种小型数据仓库。</font>程序员

1.1 事实表

         <font size="3" color="red">发生在现实世界中的操做型事件,其所产生的可度量数值,存储在事实表中</font>。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。          事实表表示对分析主题的度量。好比<font size="3" color="red">一次购买行为咱们就能够理解为是一个事实。</font> 事实表          图中的订单表就是一个事实表,<font size="3" color="red">能够理解他就是在现实中发生的一次操做型事件</font>,每完成一个订单,就会在订单中增长一条记录。          事实表的特征:表里没有存放实际的内容,他是一堆主键的集合,<font size="3" color="red">这些ID分别能对应到维度表中的一条记录</font>。事实表包含了与各维度表相关联的外键,可与维度表关联。事实表的度量一般是数值类型(条/个/次),且记录数会不断增长,表数据规模迅速增加。github

1.2 维度表

         <font size="3" color="red">维度表示要对数据进行分析时所用的一个量</font>,好比你要<font size="3" color="red">分析产品销售状况</font>, 你能够选择<font size="3" color="red">按</font>类别<font size="3" color="red">进行分析,或按</font>区域<font size="3" color="red">分析</font>。这样的按..分析就构成一个维度。上图中的用户表、商家表、时间表这些都属于维度表。这些表都有一个惟一的主键,而后在表中存放了详细的数据信息。面试

例如:交易金额分析分析          男性用户的订单金额、联想商品的订单金额、第一季度的订单金额、手机的订单金额、家里下单的订单金额数据库

例如:学生分析          姓张的同窗有多少、男性的同窗有多少、江苏的同窗有多少、身高小于170cm的同窗有多少、年龄小于23岁的同窗有多少。          <font size="3" color="red">每一个维度表都包含单一的主键列</font>。维度表的主键能够做为与之关联的任何事实表的外键,固然,<font size="3" color="red">维度表行的描述环境应与事实表行彻底对应。维度表一般比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。</font>架构

总的说来,在数据仓库中不须要严格遵照规范化设计原则。由于数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操做。工具

事实表的设计是以可以正确记录历史信息为准则。oop

维度表的设计是以可以以合适的角度来聚合主题内容为准则。性能

2、维度建模三种模式

2.1 星型模型

         星形模式(Star Schema)是最经常使用的维度建模方式。星型模式是以事实表为中心,全部的维度表直接链接在事实表上,像星星同样。          星形模式的维度建模由一个事实表和一组维表成,且具备如下特色:大数据

  • 维表只和事实表关联,维表之间没有关联;
  • 每一个维表主键为单列,且该主键放置在事实表中,做为两边链接的外键;
  • 以事实表为核心,维表围绕核心呈星形分布; 星星表

2.2 雪花模式

         雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模式的维度表能够拥有其余维度表的,虽然这种模型相比星型更规范一些,可是因为这种模型不太容易理解,维护成本比较高,并且性能方面须要关联多层维表,性能也比星型模型要低。因此通常不是很经常使用。 雪花模型

2.3 星座模式

         星座模式是星型模式延伸而来,星型模式是基于一张事实表的,而<font size="3" color="red">星座模式是基于多张事实表的,并且共享维度信息</font>。          前面介绍的两种维度建模方法都是多维表对应单事实表,但在<font size="3" color="red">不少时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到</font>。在业务发展后期,绝大部分维度建模都采用的是星座模式。 星座模型

总结

         好了本篇文章就分享到这里了,本篇文章主要讲解了维度模型三种模式,在设计数仓的时候尽可能将表设计为星星模型雪花模型这样的话咱们在实现功能的时候就比较简单,缘由是星星模型雪花模型架构基本上是一对多的。信本身,努力和汗水总会能获得回报的。我是大数据老哥,咱们下期见~~~

获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板等资源请去GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData

相关文章
相关标签/搜索