多维模型的核心在于构建数据仓库系统的蓝图。
这些模型的主要目标是满足大型数据库 (OLAP) 在分析方面的需求。
这种方法旨在整理数据库中的数据,使其结构清晰有序。该模型允许用户提出与业务运营或市场动态相关的问题。
此外,多维模型以数据立方体的形式展现数据,这使得从不同视角和维度对数据进行审视和建模成为可能。
多维模型主要分为三种类型,但很多人常常混淆星型模式和雪花模式,这使得他们难以抉择最佳方案。
如果您也为此困扰,那么就让我们从定义入手,深入探讨星型模式和雪花模式之间的差异,了解它们的优势、挑战、图表以及特性。
什么是多维模式?
模式是对整个数据库和数据集市的逻辑描述。它包括记录的名称及其描述,涵盖聚合和相关的数据项。
通常,数据库使用关系模型来描述,而数据仓库系统则采用模式模型。
多维模式可以使用数据挖掘查询语言 (DMQL) 来定义。
为了定义数据集市和数据仓库,多维模式使用两个基本元素——维度定义和多维数据集定义。
多维模式采用不同的模式模型,主要有以下几种:
- 星型模式
- 雪花模式
- 银河模式
接下来,我们将详细探讨星型模式和雪花模式。
星型模式与雪花模式:概念解析
什么是星型模式?
星型模式是一种用于架构数据仓库和商业智能的模型。它以一个单独的事实表为核心,用于存储度量数据和交易数据,并辅以多个维度表,用于保存有关业务数据的属性。
之所以称之为星型模式,是因为其结构形似一颗星星。事实表位于图表的中心,而较小的维度表则像从中心表延伸出的分支,共同构成了一个星形结构。
每个星型模式都由一个事实表和多个维度表组成。事实表包含需要分析的特定、可度量的数据,例如绩效记录、财务数据或销售记录。这些数据可以是历史数据的快照,也可能是事务性的。
此外,星型模式是数据仓库和数据集市中最简单、最基本的模式,在处理基本查询方面效率很高。星型模式通常支持商业智能、即席查询、分析应用程序和在线分析处理多维数据集。
星型模式还支持对大量记录进行计数、求平均值、求和以及其他聚合操作。用户可以轻松地按维度筛选和分组聚合结果。例如,用户可以生成诸如“查找 6 月份的所有销售记录”或“分析 2022 年 XYZ 办公室的总收入”之类的查询。
什么是雪花模式?
雪花模式是一种多维数据模型,可以看作是星型模式的扩展。这是因为雪花模式中的维度表被分解为子维度。
如果一个或多个维度表不直接与事实表相连,而是通过其他维度表连接,那么该架构就呈现为雪花状。
雪花化是指对星型模式中的维度表进行规范化的过程。当对所有维度表进行规范化时,生成的结构类似于一个以事实表为中心的雪花。
简而言之,雪花模式由位于模型中间的一个事实表组成,该事实表连接到维度表,维度表又连接到其他维度表。该模式旨在提升查询性能。
该模型专为跨复杂关系和维度进行快速、灵活的查询而创建。它有助于各个维度级别之间的一对多和多对多关系。
由于更加严格地遵循规范化标准,存储效率得以提高。然而,与星型模式等非规范化数据模型相比,数据冗余可以忽略不计,但性能有所降低。
星型模式与雪花模式:工作原理
星型模式如何运作?
星型模型中间的事实表存储两种类型的信息——数值和维度属性值。下面通过一个销售数据库的例子来理解它们。
- 数值对于每一行和数据点都是独一无二的。它与存储在另一行中的数据无关。这些是有关给定交易的事实,例如总金额、订单数量、确切时间、净利润、订单 ID 等。
- 维度属性值本身不直接存储数据,而是存储维度表中行的外键值。中心表的不同行会引用这些信息,例如日期值、销售人员 ID、分公司 ID、产品 ID 等。
维度表始终存储来自事实表的支持信息。每个维度表都与事实表的列以及维度值相关,并存储有关该值的附加数据。
示例:员工维度表以员工 ID 作为键值,还包含姓名、性别、地址、电话号码等信息。同样,产品维度表存储信息,包括产品名称、颜色、首次上市日期、制造成本等。
雪花模式如何运作?
想象一个雪花图案,中心盒子通过多个不同的连接点与不同的位置相连。为了维护数据集市和数据仓库,雪花模式设计应运而生。
雪花模式类似于星型模式,但存在细微的差别。与星型模式不同,雪花模式扩展了其子维度表,这些子维度表与维度表相连。
该模型的主要目的是对星型模型的非规范化信息进行规范化,从而解决与星型模式相关的常见问题。
在模式的核心,您会发现一个与维度表中包含的信息链接的事实表。这些表再次向外扩展,连接到子维度表,这些子维度表包含了描述维度表信息的详细信息。
示例:雪花模式包含一个销售事实表以及商店位置、行、系列、产品和时间维度表。市场维度由两个维度表组成,商店作为主维度表,商店的位置作为子维度表。产品维度具有三个子维度表,分别是产品、线和系列子维度表。
星型模式与雪花模式:特征对比
星型模式的特征
- 星型模式可以从规范化数据中筛选数据,以满足数据仓库的需求。根据每个事实表的关联信息生成唯一键,以标识每一行。
- 它支持快速计算和汇总,例如获得的收入和每月月底售出的总商品。这些细节可以根据需要通过构建合适的查询来筛选。
- 它是事件的度量,包含由外键组成的有限数值。这些键与维度表关联。有多种类型的事实表,以原子级的值作为框架。
- 事务事实表包含有关特定事件的数据,例如销售和假期。
- 快照事实表包括给定的时期,例如年底或每个季度的帐户信息。
- 维度表给出了在中心表中找到的属性或记录的详细数据。
- 用户可以根据需要自行设计表格。
- 可以使用星型模式来累积快照表。
雪花模式的特征
- 雪花模式需要较小的磁盘空间。
- 由于其独立的主要维度表,该模型易于实现。
- 维度表包含至少两个属性来定义多个粒度的信息。
- 由于存在多个表,与星型模式相比,其性能较低。
- 由于规范化,雪花模式具有最高的数据完整性级别和低冗余。
星型模式与雪花模式:优势对比
星型模式的优势
- 星型模式是构建数据集市最简单的方式。
- 它具有清晰的报告逻辑,这种逻辑是动态隐含的。
- 其设计使用在线交易流程中应用的喂食立方体,以确保立方体高效运作。
- 星型模式由简单的逻辑和查询组成,这些查询很容易从事务流程中提取。
- 它为报告应用程序提供了增强的性能。
- 它被部署用来控制数据的快速恢复。
- 筛选和选择的信息可以很容易地应用于不同的场景。
雪花模式的优点
- 由于磁盘存储需求较少,雪花模式用于提高查询性能。
- 它在组件和维度级别之间的关系中提供了更高的可扩展性。
- 它更容易维护。
- 雪花模式提供快速的数据检索。
- 它是数据仓库中常见且简单的数据模式。
- 它有助于提高数据质量。
- 结构化数据减少了数据完整性问题。
星型模式与雪花模式:局限性对比
星型模式的局限性
星型模式具有高度的非规范化和完整性状态。如果用户更新数据失败,整个过程就会崩溃。安全和保护也比较有限。此外,星型模式不如分析模型灵活,且没有为各种关系提供有效的支持。
雪花模式的局限性
雪花模式的主要限制在于,由于小维度表的数量增加,维护工作量较大。许多复杂的查询使得查找所需数据颇具挑战性。此外,由于表结构较为复杂,问题的实施时间也较长。这种模式也相对僵化,需要更高的维护成本。
星型模式与雪花模式:差异对比
星型模式和雪花模式是多维模式的两种类型,但它们在结构和属性上有所不同。前者形似星星,后者形似雪花,这也是它们名字的由来。
在星型模式中,中心事实表和侧维度表之间通过一个连接建立关系。而在雪花模式中,需要多个连接来链接到维度表。
当维度表中的行数较少时,通常使用星型模式;而当维度表相对较大时,则使用雪花模式。
下图对比了这两种模型,并展示了维度表和事实表在不同模式下的连接方式。
参数 | 星型模式 | 雪花模式 |
磁盘空间 | 星型模式占用更多磁盘空间 | 雪花模式占用更少磁盘空间 |
数据冗余 | 数据冗余度高 | 数据冗余度低 |
规范化 | 维度表是非规范化的,这意味着在表内重复相同的值。 | 维度表是完全规范化的。 |
查询性能 | 执行查询花费时间最少,从而获得更好的性能。 | 查询执行所需时间比星型模式多,性能不如星型模式。 |
查询复杂度 | 查询复杂度低。 | 查询复杂度高于星型模式。 |
维护 | 由于数据冗余度高,维护星型模式较为困难。 | 由于数据冗余度低,维护和更改雪花模式较为容易。 |
数据完整性 | 数据完整性高,因为数据冗余存储在多个位置维度表中存在副本。 | 数据完整性较低,因为它完全规范了维度表。 |
层次结构 | 星型模式中维度表的层次结构存储在维度表中。 | 层次结构被划分为单独的维度表。 |
数据库设计 | 数据库设计较为简单。 | 数据库设计较为复杂。 |
事实表 | 多个维度表围绕一个事实表。 | 事实表被维度表包围,维度表也被子维度表包围。 |
设置 | 星型模式易于设计和设置,因为直接关系可以表示。 | 雪花模式的设置较为复杂。 |
Cube处理 | Cube处理速度较快。 | 由于复杂的join操作,cube处理速度较慢。 |
外键 | 外键数量最少。 | 外键数量最多。 |
结论
星型模式和雪花模式在不同的领域都有各自的优势。因此,选择哪种模式取决于实际需求。
雪花模式是星型模式的扩展,它对星型模式中的维度表进行了规范化。
星型模式设计简单,运行查询更快,设置也更为简便。另一方面,雪花模式更易于维护,占用更少的磁盘空间,并且更不容易出现数据完整性问题。
因此,如果需要简单的设计、更少的外键和更快的多维数据集处理,星型模式可能是更好的选择。但是,如果需要更少的磁盘空间、较低的数据完整性和较低的维护成本,雪花模式可能更合适。
此外,您还可以探索一些最佳的图形数据库解决方案。