了解主要模式:星与雪花

多维模型的核心在于构建数据仓库系统的蓝图。

这些模型的主要目标是满足大型数据库 (OLAP) 在分析方面的需求。

这种方法旨在整理数据库中的数据,使其结构清晰有序。该模型允许用户提出与业务运营或市场动态相关的问题。

此外,多维模型以数据立方体的形式展现数据,这使得从不同视角和维度对数据进行审视和建模成为可能。

多维模型主要分为三种类型,但很多人常常混淆星型模式和雪花模式,这使得他们难以抉择最佳方案。

如果您也为此困扰,那么就让我们从定义入手,深入探讨星型模式和雪花模式之间的差异,了解它们的优势、挑战、图表以及特性。

什么是多维模式?

模式是对整个数据库和数据集市的逻辑描述。它包括记录的名称及其描述,涵盖聚合和相关的数据项。

通常,数据库使用关系模型来描述,而数据仓库系统则采用模式模型。

多维模式可以使用数据挖掘查询语言 (DMQL) 来定义。

为了定义数据集市和数据仓库,多维模式使用两个基本元素——维度定义和多维数据集定义。

多维模式采用不同的模式模型,主要有以下几种:

  • 星型模式
  • 雪花模式
  • 银河模式

接下来,我们将详细探讨星型模式和雪花模式。

星型模式与雪花模式:概念解析

什么是星型模式?

星型模式是一种用于架构数据仓库和商业智能的模型。它以一个单独的事实表为核心,用于存储度量数据和交易数据,并辅以多个维度表,用于保存有关业务数据的属性。

之所以称之为星型模式,是因为其结构形似一颗星星。事实表位于图表的中心,而较小的维度表则像从中心表延伸出的分支,共同构成了一个星形结构。

每个星型模式都由一个事实表和多个维度表组成。事实表包含需要分析的特定、可度量的数据,例如绩效记录、财务数据或销售记录。这些数据可以是历史数据的快照,也可能是事务性的。

此外,星型模式是数据仓库和数据集市中最简单、最基本的模式,在处理基本查询方面效率很高。星型模式通常支持商业智能、即席查询、分析应用程序和在线分析处理多维数据集。

星型模式还支持对大量记录进行计数、求平均值、求和以及其他聚合操作。用户可以轻松地按维度筛选和分组聚合结果。例如,用户可以生成诸如“查找 6 月份的所有销售记录”或“分析 2022 年 XYZ 办公室的总收入”之类的查询。

什么是雪花模式?

雪花模式是一种多维数据模型,可以看作是星型模式的扩展。这是因为雪花模式中的维度表被分解为子维度。

如果一个或多个维度表不直接与事实表相连,而是通过其他维度表连接,那么该架构就呈现为雪花状。

雪花化是指对星型模式中的维度表进行规范化的过程。当对所有维度表进行规范化时,生成的结构类似于一个以事实表为中心的雪花。

简而言之,雪花模式由位于模型中间的一个事实表组成,该事实表连接到维度表,维度表又连接到其他维度表。该模式旨在提升查询性能。

该模型专为跨复杂关系和维度进行快速、灵活的查询而创建。它有助于各个维度级别之间的一对多和多对多关系。

由于更加严格地遵循规范化标准,存储效率得以提高。然而,与星型模式等非规范化数据模型相比,数据冗余可以忽略不计,但性能有所降低。

星型模式与雪花模式:工作原理

星型模式如何运作?

星型模型中间的事实表存储两种类型的信息——数值和维度属性值。下面通过一个销售数据库的例子来理解它们。

  • 数值对于每一行和数据点都是独一无二的。它与存储在另一行中的数据无关。这些是有关给定交易的事实,例如总金额、订单数量、确切时间、净利润、订单 ID 等。
  • 维度属性值本身不直接存储数据,而是存储维度表中行的外键值。中心表的不同行会引用这些信息,例如日期值、销售人员 ID、分公司 ID、产品 ID 等。

维度表始终存储来自事实表的支持信息。每个维度表都与事实表的列以及维度值相关,并存储有关该值的附加数据。

示例:员工维度表以员工 ID 作为键值,还包含姓名、性别、地址、电话号码等信息。同样,产品维度表存储信息,包括产品名称、颜色、首次上市日期、制造成本等。

雪花模式如何运作?

想象一个雪花图案,中心盒子通过多个不同的连接点与不同的位置相连。为了维护数据集市和数据仓库,雪花模式设计应运而生。

雪花模式类似于星型模式,但存在细微的差别。与星型模式不同,雪花模式扩展了其子维度表,这些子维度表与维度表相连。

该模型的主要目的是对星型模型的非规范化信息进行规范化,从而解决与星型模式相关的常见问题。

在模式的核心,您会发现一个与维度表中包含的信息链接的事实表。这些表再次向外扩展,连接到子维度表,这些子维度表包含了描述维度表信息的详细信息。

示例:雪花模式包含一个销售事实表以及商店位置、行、系列、产品和时间维度表。市场维度由两个维度表组成,商店作为主维度表,商店的位置作为子维度表。产品维度具有三个子维度表,分别是产品、线和系列子维度表。

星型模式与雪花模式:特征对比

星型模式的特征

  • 星型模式可以从规范化数据中筛选数据,以满足数据仓库的需求。根据每个事实表的关联信息生成唯一键,以标识每一行。
  • 它支持快速计算和汇总,例如获得的收入和每月月底售出的总商品。这些细节可以根据需要通过构建合适的查询来筛选。
  • 它是事件的度量,包含由外键组成的有限数值。这些键与维度表关联。有多种类型的事实表,以原子级的值作为框架。
  • 事务事实表包含有关特定事件的数据,例如销售和假期。
  • 快照事实表包括给定的时期,例如年底或每个季度的帐户信息。
  • 维度表给出了在中心表中找到的属性或记录的详细数据。
  • 用户可以根据需要自行设计表格。
  • 可以使用星型模式来累积快照表。

雪花模式的特征

  • 雪花模式需要较小的磁盘空间。
  • 由于其独立的主要维度表,该模型易于实现。
  • 维度表包含至少两个属性来定义多个粒度的信息。
  • 由于存在多个表,与星型模式相比,其性能较低。
  • 由于规范化,雪花模式具有最高的数据完整性级别和低冗余。

星型模式与雪花模式:优势对比

星型模式的优势

  • 星型模式是构建数据集市最简单的方式。
  • 它具有清晰的报告逻辑,这种逻辑是动态隐含的。
  • 其设计使用在线交易流程中应用的喂食立方体,以确保立方体高效运作。
  • 星型模式由简单的逻辑和查询组成,这些查询很容易从事务流程中提取。
  • 它为报告应用程序提供了增强的性能。
  • 它被部署用来控制数据的快速恢复。
  • 筛选和选择的信息可以很容易地应用于不同的场景。

雪花模式的优点

  • 由于磁盘存储需求较少,雪花模式用于提高查询性能。
  • 它在组件和维度级别之间的关系中提供了更高的可扩展性。
  • 它更容易维护。
  • 雪花模式提供快速的数据检索。
  • 它是数据仓库中常见且简单的数据模式。
  • 它有助于提高数据质量。
  • 结构化数据减少了数据完整性问题。

星型模式与雪花模式:局限性对比

星型模式的局限性

星型模式具有高度的非规范化和完整性状态。如果用户更新数据失败,整个过程就会崩溃。安全和保护也比较有限。此外,星型模式不如分析模型灵活,且没有为各种关系提供有效的支持。

雪花模式的局限性

雪花模式的主要限制在于,由于小维度表的数量增加,维护工作量较大。许多复杂的查询使得查找所需数据颇具挑战性。此外,由于表结构较为复杂,问题的实施时间也较长。这种模式也相对僵化,需要更高的维护成本。

星型模式与雪花模式:差异对比

星型模式和雪花模式是多维模式的两种类型,但它们在结构和属性上有所不同。前者形似星星,后者形似雪花,这也是它们名字的由来。

在星型模式中,中心事实表和侧维度表之间通过一个连接建立关系。而在雪花模式中,需要多个连接来链接到维度表。

当维度表中的行数较少时,通常使用星型模式;而当维度表相对较大时,则使用雪花模式。

下图对比了这两种模型,并展示了维度表和事实表在不同模式下的连接方式。

参数 星型模式 雪花模式
磁盘空间 星型模式占用更多磁盘空间 雪花模式占用更少磁盘空间
数据冗余 数据冗余度高 数据冗余度低
规范化 维度表是非规范化的,这意味着在表内重复相同的值。 维度表是完全规范化的。
查询性能 执行查询花费时间最少,从而获得更好的性能。 查询执行所需时间比星型模式多,性能不如星型模式。
查询复杂度 查询复杂度低。 查询复杂度高于星型模式。
维护 由于数据冗余度高,维护星型模式较为困难。 由于数据冗余度低,维护和更改雪花模式较为容易。
数据完整性 数据完整性高,因为数据冗余存储在多个位置维度表中存在副本。 数据完整性较低,因为它完全规范了维度表。
层次结构 星型模式中维度表的层次结构存储在维度表中。 层次结构被划分为单独的维度表。
数据库设计 数据库设计较为简单。 数据库设计较为复杂。
事实表 多个维度表围绕一个事实表。 事实表被维度表包围,维度表也被子维度表包围。
设置 星型模式易于设计和设置,因为直接关系可以表示。 雪花模式的设置较为复杂。
Cube处理 Cube处理速度较快。 由于复杂的join操作,cube处理速度较慢。
外键 外键数量最少。 外键数量最多。

结论

星型模式和雪花模式在不同的领域都有各自的优势。因此,选择哪种模式取决于实际需求。

雪花模式是星型模式的扩展,它对星型模式中的维度表进行了规范化。

星型模式设计简单,运行查询更快,设置也更为简便。另一方面,雪花模式更易于维护,占用更少的磁盘空间,并且更不容易出现数据完整性问题。

因此,如果需要简单的设计、更少的外键和更快的多维数据集处理,星型模式可能是更好的选择。但是,如果需要更少的磁盘空间、较低的数据完整性和较低的维护成本,雪花模式可能更合适。

此外,您还可以探索一些最佳的图形数据库解决方案。