BI大数据的星形模型和雪花模型

2023-10-29

23333

架构模式的选择

数据仓库的架构主要有星型和雪花型两种方式,下面从多个角度来比较一下这两种模式的利弊。

从查询性能角度来看,在OLTP-DW环节,由于雪花型要做多个表联接,性能会低于星型架构;但从DW-OLAP环节,由于雪花型架构更有利于度量值的聚合,因此性能要高于星型架构。

从模型复杂度来看,星型架构更简单。

从层次概念来看,雪花型架构更加贴近OLTP系统的结构,比较符合业务逻辑,层次比较清晰。

从存储空间角度来看,雪花型架构具有关系数据模型的所有优点,不会产生冗余数据,而相比之下星型架构会产生数据冗余。

根据我们的项目经验,一般建议使用星型架构。因为我们在实际项目中,往往最关注的是查询性能问题,至于磁盘空间一般都不是问题。 当然,在维度表数据量极大,需要节省存储空间的情况下,或者是业务逻辑比较复杂、必须要体现清晰的层次概念情况下,可以使用雪花型维度。

-------------------------------------------------------------

一、概述

在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。

当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型,如图 1 。

星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家 A 和省 B 的信息分别存储了两次,即存在冗余。

图1. 销售数据仓库中的星型模型

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 " 层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。如图 2,将地域维表又分解为国家,省份,城市等维表。它的优点是 : 通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。

图 2. 销售数据仓库中的雪花型模型

星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花型模型要高。星型结构不用考虑很多正规化的因素,设计与实现都比较简单。雪花型模型由于去除了冗余,有些统计就需要通过表的联接才能产生,所以效率不一定有星型模型高。正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的 ETL、以及后期的维护都要复杂一些。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。

二、使用选择

星形模型(Star Schema)和雪花模型(Snowflake Schema)是数据仓库中常用到的两种方式,而它们之间的对比要从四个角度来进行讨论。

  1.数据优化

雪花模型使用的是规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量。通过引用完整性,其业务层级和维度都将存储在数据模型之中。


▲图1 雪花模型

相比较而言,星形模型实用的是反规范化数据。在星形模型中,维度直接指的是事实表,业务层级不会通过维度之间的参照完整性来部署。


▲图2 星形模型

  2.业务模型

主键是一个单独的唯一键(数据属性),为特殊数据所选择。在上面的例子中,Advertiser_ID就将是一个主键。外键(参考属性)仅仅是一个表中的字段,用来匹配其他维度表中的主键。在我们所引用的例子中,Advertiser_ID将是Account_dimension的一个外键。

在雪花模型中,数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的。而在星形模型中,所有必要的维度表在事实表中都只拥有外键。

  3.性能

第三个区别在于性能的不同。雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低。举个例子,如果你想要知道Advertiser 的详细信息,雪花模型就会请求许多信息,比如Advertiser Name、ID以及那些广告主和客户表的地址需要连接起来,然后再与事实表连接。

而星形模型的连接就少的多,在这个模型中,如果你需要上述信息,你只要将Advertiser的维度表和事实表连接即可。

  4.ETL

雪花模型加载数据集市,因此ETL操作在设计上更加复杂,而且由于附属模型的限制,不能并行化。

星形模型加载维度表,不需要再维度之间添加附属模型,因此ETL就相对简单,而且可以实现高度的并行化。

  总结

雪花模型使得维度分析更加容易,比如“针对特定的广告主,有哪些客户或者公司是在线的?”星形模型用来做指标分析更适合,比如“给定的一个客户他们的收入是多少?”

--------------------- 本文来自 nisjlvhudy 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/nisjlvhudy/article/details/7889422?utm_source=copy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BI大数据的星形模型和雪花模型 的相关文章

  • ubuntu 16.04 镜像下载

    下载地址 http mirror pnl gov releases xenial Ubuntu 14 04 5 LTS Trusty Tahr http releases ubuntu com 14 04

随机推荐

  • 面试重点算法题

    笔试如果用牛客会让自己写输入输出 参考https ac nowcoder com acm contest 320 question 面试手撕一般写函数即可 just for me 复习时间少 红色较难免看 黄色简单免看 黑色看一下代码 绿色
  • golang int和float计算 加减乘除

    go加减乘除 加载 go get github com shopspring decimal decimal手册地址 https godoc org github com shopspring decimal Decimal Sub 初始化
  • 拷贝构造函数中访问私有成员

    class Complex private double m real double m imag Complex const Complex c 将对象c中的数据成员值复制过来 m real c m real m imag c m ima
  • STL——Stack常见用法

    Stack 栈 是一种后进先出的数据结构 也就是LIFO last in first out 最后加入栈的元素将最先被取出来 在栈的同一端进行数据的插入与取出 这一段叫做 栈顶 使用STL的stack需要include一个头文件
  • 解决chrome css本地映射不成功&&附带映射方法

    解决办法 把本地文件夹名改成英文的 不要有中文 顺便写一下怎么把在chrome调试的本地项目中的css映射到本地 1 F12 option command i 启动chrome调试工具 2 打开source面板 选择Filesystem 点
  • Modbus-RTU需要特别关注的点(及容易被遗漏忽视的地方)

    1 单主 多从协议 从设备间不能通信 分为单播和广播 2 Modbus寄存器功能 分为线圈 离散输入 保持寄存器 输入寄存器 线圈主要负责开关量的控制 保持寄存器主要负责模拟量的控制 3 Modbus不同寄存器寻址地址相同 虽然两个PLC寄
  • Notepad++背景颜色设置

    经常试用notepad 看代码 白色的背景连续看的时间长了眼睛很容变花 所以找了相关的设置选项 分享给大家 具体设置步骤如下 然后如下设置 这样前景色背景色已经发生改变了哟 下面再修改下选中行的背景色吧 你懂的 可以按照上面的内容来进行以进
  • 国密SM4对称加密算法(对本地文件的加解密)代码展示

    代码 package com example demo MIMAXUE SM import sun misc BASE64Decoder import sun misc BASE64Encoder import java io Buffer
  • 2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践

    2018 2019 2 网络对抗技术 20165318 Exp2 后门原理与实践 后门的基本概念及基础问题回答 常用后门工具 netcat Win获得Linux Shell Linux获得Win Shell Meterpreter 实验内容
  • Android中的ListView和适配器(Adapter)

    Android ListView 使用详解 一个ListView通常有两个职责 1 将数据填充到布局 2 处理用户的选择点击等操作 一个ListView的创建需要3个元素 1 ListView中的每一列的View 2 填入View的数据或者
  • 【Σ-Δ型ADC芯片】

    文章目录 TOC 文章目录 前言 一 型ADC工作原理 二 型ADC 1 理论分析 2 电路分析 总结 前言 前边讲了ADC的各种参数 这里具体介绍 型ADC 这个是ADC类型里比较难理解的一种 我先介绍这种 之后再介绍其他类型的ADC 一
  • 【Vue】vue.js中组件的使用

    文章目录 组件 创建全局组件 创建局部组件 组件中的data和methods 组件 组件 Component 是 Vue js 最强大的功能之一 组件可以扩展 HTML 元素 封装可重用的代码 在较高层面上 组件是自定义元素 Vue js
  • SpringSecurity基于WebFlux实现验证授权启动报conversionServicePostProcessor already been defined

    基于WebFlux实现SpringSecurity验证授权报以下错误 The bean conversionServicePostProcessor defined in class path resource org springfram
  • jdbc连接sqlserver2008过程注意几点(非web项目)

    教材上的是sqlserver2000版本的连接 网上写的又都太散 看了一直蒙圈 只能报一次错解决一次 断断续续弄了两天 1 下载驱动只需要将sqljdbc4 jar添加到项目中 网上有说最好把sqljdbc jar和sqljdbc4 jar
  • C# 依赖倒置原则(DIP)

    目录 一 引子 1 1 传统的程序架构 1 2 依赖倒置 1 3 依赖倒置的作用 二 依赖注入 一 引子 1 1 传统的程序架构 在程序执行过程中 传统的程序架构如图 可以看到 在传统的三层架构中 层与层之间是相互依赖的 UI层依赖于BLL
  • jsp利用cookie实现记住账号,密码

    这个功能很简单 不过 因为太简单 所以不是很安全 后续可以引MD5对账号密码进行加密 好了废话不多说 上代码 1引入cookie js 2 复选框 默认选中的 你也可以改为false
  • gta5nat严格怎么办_如何解决在游玩 GTA 在线模式时出现的 NAT 类型为“严格”(Strict)的错误...

    问 有错误信息提示我的 NAT 类型为 严格 Strict 这是什么意思 我该如何修改我的 NAT 类型 答 NAT 的全称是网络地址转换 特指您路由器或网关设备将您电脑的私有 IP 进行转换 并将其传输至公网 IP 和端口的功能 您的 N
  • 2022Robocom省赛(本科组)RC-u1 不要浪费金币

    哲哲最近在玩一个游戏 击杀怪物能获得金币 这里记击杀第 i 个怪物获得的金币数量为 Pi 然而这个游戏允许拥有的金币数量是有上限的 当超过时 超过上限的部分就会被系统光明正大地吃掉 哲哲就拿不到了 为了不浪费金币 哲哲决定 当下一个要击杀的
  • Java 1017 A除以B

    题目内容 本题要求计算 A B 其中 A 是不超过 1000 位的正整数 B 是 1 位正整数 你需要输出商数 Q 和余数 R 使得 A B Q R 成立 输入格式 输入在一行中依次给出 A 和 B 中间以 1 空格分隔 输出格式 在一行中
  • BI大数据的星形模型和雪花模型

    23333架构模式的选择 数据仓库的架构主要有星型和雪花型两种方式 下面从多个角度来比较一下这两种模式的利弊 从查询性能角度来看 在OLTP DW环节 由于雪花型要做多个表联接 性能会低于星型架构 但从DW OLAP环节 由于雪花型架构更有