【数据仓库】数据仓库常见的数据模型——维度模型

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

目录

一、维度模型

[(1)、星型模型(Star Schema)](#(1)、星型模型(Star Schema))

[(2)、雪花模型(Snowflake Schema)](#(2)、雪花模型(Snowflake Schema))

[(3)、星座模型(Galaxy Schema)](#(3)、星座模型(Galaxy Schema))

(4)、交叉连接

二、选择模型的考虑因素


一、维度模型

在数据仓库的设计和实施过程中,选择合适的数据模型对于优化查询性能提升数据分析效率 至关重要。星型模型雪花模型星座模型是3种流行的数据仓库建模方法,它们各自具有独特的结构、优势和局限性。本文将深入探讨这三种模型的特点、适用场景以及如何根据业务需求进行选择。

维度建模四个步骤:

选择业务处理过程 > 定义粒度 > 选择维度 > 确定事实

1、星型模型(Star Schema)

星型模型是一种简单直观的数据模型。其主要目的是优化查询性能,使数据分析更加高效。星型模型的设计思路源自于对多维数据模型的需求,即通过简化数据结构来支持快速的查询操作。

1、结构:

**星型模型由一个中心的事实表(Fact Table)和多个维度表(Dimension Tables)构成。中心事实表包含与业务过程相关的事实指标,维度表则描述了这些事实的上下文信息。**事实表包含了可度量的数据,如销售额或利润,而维度表则包含了描述这些数据的属性,如时间、地点或产品类型。事实表与维度表之间通过外键连接,形成一个类似星形的结构。

2、优缺点:

优点:

  • 易于理解和查询 :星型模型的结构简单明了,易于理解和查询,适用于简单的分析需求。
  • 性能较高 :星型模型具有较好的查询性能,因为所有的维度信息都存储在维度表中,减少了表的连接操作,查询优化相对容易,能快速处理大量数据。

缺点:

  • 数据冗余:维度表可能存在数据冗余,也可能导致数据不一致性,也增加了存储空间的消耗。
  • 维护难度大:灵活性有限,星型模型对于新增维度的处理相对困难,需要进行表结构的修改

(2)、雪花模型(Snowflake Schema)

雪花模型是在星型模型的基础上进行了维度表的规范化,将维度表进一步分解为多个层次的规范化表。它的目的是通过数据规范化来减少冗余,并提升存储效率。雪花模型的名字源于其表结构的层次化外观,类似雪花的形状。

1.结构:

**在雪花模型中,维度表被进一步分解成多个子表,形成一个层次结构。**这种规范化使得维度数据被拆分到更细粒度的表中,从而减少数据冗余。例如,产品维度表可能会被拆分成产品类别和产品子类别表。

vbscript 复制代码
事实表:订单事实表(与星型模型相同)
维度表:日期维度表(与星型模型相同)
维度表:客户维度表(与星型模型相同)

维度表:产品维度表
产品ID | 产品名称 | 类别 |··
规范化表:产品类别表
类别ID | 类别名称 | 父类别ID |··

2.优缺点:

优点:

  • 减少冗余数据:雪花模型通过规范化维度表,减少了数据冗余,节省了存储空间。
  • 灵活性高:雪花模型支持灵活的维度层次,适用于需要频繁变更或扩展维度的场景,有助于保持数据的一致性。

缺点:

  • 查询性能较差:由于表结构复杂,查询时需要进行多个连接,性能可能受影响。
  • 难以理解和维护:雪花模型的结构复杂,维度表的规范化可能增加了数据模型的理解和维护的复杂性。

(3)、星座模型(Galaxy Schema)

星座模型,又称为星型集合模型(Fact Constellation Schema),是对星型模型的一种扩展 。它允许多个星型模型共享维度表 ,因此++适用于需要整合多个业务领域的数据仓库++。星座模型的出现满足了更复杂数据整合的需求。

1.结构:

星座模型由多个星型模型组成,这些星型模型共享某些维度表。例如,一个数据仓库可能同时包含销售和库存的星型模型,这些模型共享时间和产品维度表,从而形成一个星座结构。

2.优缺点:

优点:

  • 整合多个业务领域:适合处理复杂的业务数据,支持多角度分析。
  • 提高维度表的复用性:通过共享维度表,减少了数据重复。

缺点:

  • 设计复杂:涉及多个星型模型,设计和维护较为复杂。
  • 查询优化难度大:由于涉及多种业务数据,查询优化和性能调优比较复杂。

(4)、交叉连接

从一张表到另一张表有多条筛选路径彼此相连接,属于交叉连接模式

二、选择模型的考虑因素

1、数据复杂性:

如果业务需求较简单,维度层次不复杂,可以选择星型模型

如果业务需求复杂,维度层次较多,可以选择雪花模型

2、查询性能要求:

如果对查询性能有较高的要求,可以选择星型模型

如果对存储空间有较高的要求,可以选择雪花模型

3、可维护性和扩展性:

如果数据模型相对稳定,变更频率较低 ,可以选择星型模型

如果需要频繁变更或扩展维度,可以选择雪花模型

相关推荐
DolphinScheduler社区11 分钟前
大数据调度组件之Apache DolphinScheduler
大数据
SelectDB技术团队11 分钟前
兼顾高性能与低成本,浅析 Apache Doris 异步物化视图原理及典型场景
大数据·数据库·数据仓库·数据分析·doris
panpantt3211 小时前
【参会邀请】第二届大数据与数据挖掘国际会议(BDDM 2024)邀您相聚江城!
大数据·人工智能·数据挖掘
青云交1 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
大数据·性能优化·impala·案例分析·代码示例·跨数据中心·挑战对策
soso19682 小时前
DataWorks快速入门
大数据·数据仓库·信息可视化
The_Ticker2 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
java1234_小锋2 小时前
Elasticsearch中的节点(比如共20个),其中的10个选了一个master,另外10个选了另一个master,怎么办?
大数据·elasticsearch·jenkins
Elastic 中国社区官方博客2 小时前
Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
我的运维人生2 小时前
Elasticsearch实战应用:构建高效搜索与分析平台
大数据·elasticsearch·jenkins·运维开发·技术共享
大数据编程之光2 小时前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink