数仓模型设计详细讲解
前言
今天给大家分享下数仓中的模型设计,一个好的数仓项目首先看一下它的架构以及他所用到的模型,它们使用的模型也都是非常巧妙的,好了,我们话不说到直接开始。
一、维度建模基本概念
维度模型是数据仓库领域大师Ralph Kimall所倡导
,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。
维度建模是专门应用于分析型数据库、数据仓库、数据集市建模的方法。数据集市可以理解为是一种小型数据仓库
。
1.1 事实表
发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。
事实表表示对分析主题的度量。比如一次购买行为我们就可以理解为是一个事实。
图中的订单表就是一个事实表,可以理解他就是在现实中发生的一次操作型事件,每完成一个订单,就会在订单中增加一条记录。
事实表的特征:表里没有存放实际的内容,他是一堆主键的集合
,这些ID分别能对应到维度表中的一条记录。事实表包含了与各维度表相关联的外键,可与维度表关联。事实表的度量通常是数值类型(条/个/次),且记录数会不断增加,表数据规模迅速增长。
1.2 维度表
维度
表示要对数据进行分析时所用的一个量,比如你要分析产品销售情况, 你可以选择按类别
进行分析,或按区域
分析。这样的按..分析就构成一个维度
。上图中的用户表、商家表、时间表这些都属于维度表。这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。
例如:交易金额分析分析
男性用户的订单金额、联想商品的订单金额、第一季度的订单金额、手机的订单金额、家里下单的订单金额
例如:学生分析
姓张的同学有多少、男性的同学有多少、江苏的同学有多少、身高小于170cm的同学有多少、年龄小于23岁的同学有多少。
每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。
总的说来,在数据仓库中不需要严格遵守规范化设计原则。因为数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操作。
事实表的设计是以能够正确记录历史信息为准则。
维度表的设计是以能够以合适的角度来聚合主题内容为准则。
二、维度建模三种模式
2.1 星型模型
星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。
星形模式的维度建模由一个事实表和一组维表成
,且具有以下特点:
- 维表只和事实表关联,维表之间没有关联;
- 每个维表主键为单列,且该主键放置在事实表中,作为两边连接的外键;
- 以事实表为核心,维表围绕核心呈星形分布;
2.2 雪花模式
雪花模式(Snowflake Schema)是对星形模式的扩展。雪花模式的维度表可以拥有其他维度表
的,虽然这种模型相比星型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。
2.3 星座模式
星座模式是星型模式延伸而来,星型模式是基于一张事实表的,而星座模式是基于多张事实表的,而且共享维度信息。
前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。
总结
好了本篇文章就分享到这里了,本篇文章主要讲解了维度模型三种模式,在设计数仓的时候尽量将表设计为星星模型
和雪花模型
这样的话我们在实现功能的时候就比较简单,原因是星星模型
和雪花模型
架构基本上是一对多的。信自己,努力和汗水总会能得到回报的。我是大数据老哥,我们下期见~~~
获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板等资源请去GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData
扫码关注
数仓模型设计详细讲解相关推荐
- 本地数据仓库项目(一) —— 本地数仓搭建详细流程
1 准备 1.1 本地虚拟机器准备 使用本地搭建三台机器,搭建数仓,模拟实际平台数据仓库的搭建.具体的搭建框架如下 安装软件 角色 主机1 主机2 主机3 Hadoop NameNode √ Seco ...
- 猜数游戏(详细讲解)
今天给大家介绍一款小游戏,猜数游戏,规则很简单,电脑随机生成1~100直接的一个整数,由玩家进行猜测,猜的数比电脑生成的大了,电脑会告诉你猜大了,比生成的小了,会告诉你猜小了,猜对了的话,会恭喜你,猜 ...
- 数仓模型设计时代理键的使用
在关系型数据库设计中,代理键是在当资料表中的候选键都不适合当主键时,例如资料太长,或是意义层面太多,就会用一个attribute来当代理主键,此主键可能是用流水号,来代替可辨识唯一值的主键. 在数据仓 ...
- 数仓缓慢变化维SCD深度讲解
维度缓慢变化维SCD(Slowly Changing Dimensions)一些维度表的数据不是静态的,而是会随着时间而缓慢地变化(这里的缓慢是相对事实表而言,事实表数据变化的速度比维度表快,如果还不 ...
- 本地数仓项目(二)——搭建系统业务数仓详细流程
1 说明 本文基于<本地数据仓库项目(一)--本地数仓搭建详细流程>业务数据,在本地搭建系统业务数仓. 根据模拟sql脚本生成业务数据,依次执行生成业务数据即可. sql脚本提供如下 链接 ...
- 数仓建设保姆级教程,离线和实时理论+实战)
文档大纲: 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先来谈数仓架构,"架构"是什么?这个问题从来就没有一个准确的答案.这里我们引用一段话:在 ...
- 数仓建设(离线和实时)
文档大纲: 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先来谈数仓架构,"架构"是什么?这个问题从来就没有一个准确的答案.这里我们引用一段话:在 ...
- 数仓建设保姆级教程,离线和实时一网打尽(理论+实战)
本文大纲: 因内容较多,带目录的PDF查看是比较方便的,点击下方链接获取完整PDF版: 数仓建设保姆级教程PDF文档 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先 ...
- 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上
文档大纲: 一.数仓基本概念 1. 数据仓库架构 我们在谈数仓之前,为了让大家有直观的认识,先来谈数仓架构,"架构"是什么?这个问题从来就没有一个准确的答案.这里我们引用一段话:在 ...
最新文章
- EXE 文件打不开的处理办法
- 未来50年的神经科学会是什么样呢?
- usaco2.1.2(frac1)
- 听得我都激动了……喝死奥巴马,你怎么看?
- 高效读取大文件,再也不用担心 OOM 了!
- 不能使用 float 和 double 来表示金额等精确的值
- 安装VMware出现无法访问你试图使用的功能所在的网络位置
- ubuntu20.04安装nvidia显卡驱动/CUDA/cuDNN
- gabor matlab pudn,matlab-Face-recognition 基于Gabor特征提取和人工智能的人脸检测系统 271万源代码下载- www.pudn.com...
- niosii 把程序固化到epcs中的步骤
- linux yum用法,Linux系统yum的使用与说明
- mac电脑软件卸载不掉 如何用CleanMyMac X彻底删除?
- 利用Python做一个漂亮小姐姐词云跳舞视频
- JavaEE知识点总结详细版(一)计算机是如何进行工作的
- 使用C语言编写三子棋小游戏
- Android简单集成友盟统计
- 每日一记 - 3.6
- linux停止tomcat 8005,严重:无法联系localhost:8005 . 关闭时Tomcat可能没有运行错误...
- USB转232串口驱动程序
- ffmpeg图片视频gif互转
热门文章
- Excel图表5——旋风图(对称条形图)
- 小程序前端获取手机号码
- 网页/公众号音乐下载
- html图片缩小属性,CSS属性实现同比例缩小图片
- IMU(LPMS-B2)分析随机误差
- 【EtherCAT分析】三、EtherCAT从站设备描述文件设计
- 一个炒鸡简单计算拼音声母出现次数及概率程序
- 计算机硬件网络设备,[计算机硬件及网络]网络设备的选型.ppt
- Android WebView 因重定向无法正常goBack()的一种解决小方案
- 安卓11客制需求:在设定时间开启深色主题模式,21点开启,次日8点关闭