数据仓库模型中的雪花模式

什么是雪花模式?
A 雪花模式 数据仓库中的表是多维数据库中表的逻辑排列,其 实体关系(ER)图 形状像雪花。它是一种 维度模型 其中,中心事实表链接到维度表,而这些维度表又进一步细分为相关的子维度表。
雪花模式是星型模式的扩展。星型模式将每个维度保存在一个扁平的表中,而雪花模式则对这些维度进行规范化,将重复的数据组拆分到额外的查找表中。这种规范化消除了冗余,并创建了分支状的层级结构,这也是雪花模式名称的由来。
雪花模式示例
在以下雪花模式示例中,销售事实表位于中心,周围环绕着产品、日期和商店等维度表。地理信息并非存储在一个维度表中,而是经过规范化处理,将国家/地区移至单独的表中。

这里,“商店”维度引用“城市”表,“城市”表引用“州/省”表,“州/省”表引用“国家/地区”表。每个值只存储一次,并通过外键链接,因此国家/地区名称不会在数百万行数据中重复出现。这种分层规范化正是雪花模式与扁平星型模式的区别所在。
雪花模式的特点
雪花模式具有以下几个主要特征:
- 它占用更少的磁盘空间,因为规范化的维度表避免了存储重复值。
- 只需相对较少的努力即可向模式中添加新的维度。
- 查询性能可能会下降,因为检索数据需要连接多个表。
- 由于需要管理更多的查找表,因此需要投入更多的维护精力。
如何设计雪花模式
设计雪花模式的第一步与任何维度模型相同,但需要额外进行规范化步骤。其目标是确定要分析的业务流程,首先将其建模为星型模式,然后规范化包含深层层次结构的维度。请按以下步骤操作:
- 确定业务流程和粒度。 确定事实表中的一行代表什么,例如一笔销售交易,并定义你需要报告的数值度量或事实。
- 构建中心事实表。 将数值度量值与指向每个维度的外键相加;这些外键通常共同构成复合主键。
- 定义维度表。 为每个描述性维度(例如产品、客户、日期和商店)创建一个表,并为每个表分配一个代理主键。
- 规范化层级结构。 将包含重复属性的每个维度拆分为子维度表,例如将“类别”从“产品”维度中移出,或者将“城市”、“州/省”和“国家/地区”从“商店”维度中移出。
- 使用外键连接表。 将每个子维度链接回其父表,使分支形成清晰的一对多层次结构,类似于雪花。
- 使用查询进行验证和测试。 运行代表性报表查询,以确认连接返回正确的结果,并且整体性能保持在可接受的范围内。
由于该设计将数据规范化为第三范式,因此需要清晰地记录连接路径,以便分析人员了解如何遍历每个分支。结构定义完成后,值得权衡该模式的收益和成本。
Snowflake模式的优势
雪花模式具有以下几个优点:
- 它的主要优点是减少了磁盘存储空间,因为合并较小的规范化查找表可以避免重复维度数据。
- 它提高了组件和维度级别之间关系的可扩展性。
- 它消除了冗余,从而提高了数据完整性,并使模型更容易维护。
- 描述性属性只需在一个地方更新,这样可以降低数据不一致的风险。
雪花模式的缺点
这种设计也存在一些需要考虑的权衡取舍:
- 规范化的结构增加了管理许多相关表所需的维护工作量。
- 涉及多个连接的复杂查询可能难以编写和理解。
- 表的数量越多,连接就越多,查询执行时间就越长。
- 企业用户通常发现分支模型比简单的星型模式更难操作。
雪花模式与星型模式
雪花模式和 星型模式 星型模式和雪花模式是数据仓库中最常见的两种多维设计,它们之间的主要区别在于规范化方式。星型模式将每个维度保存在一个扁平的、非规范化的表中,以最大限度地提高查询速度;而雪花模式则将这些维度规范化到多个相关的表中,以节省存储空间并保护数据完整性。因此,这两种模式适用于不同的需求。
| 方面 | 星图 | 雪花模式 |
|---|---|---|
| 维度表 | 非规范化,每个维度一张表 | 规范化为子维度表 |
| 存放 | 由于冗余而占用更多空间 | 占用空间更小,无冗余 |
| 查询性能 | 更快、更少的连接 | 速度变慢,加入次数更多 |
| 查询复杂性 | 易于编写 | 更复杂 |
| 最适合 | 快速报告和商业智能 | 大的、层级式的维度 |
简而言之,当查询速度和报表简洁性至关重要时,选择星型模式;当存储效率、清晰的层级结构和低数据冗余是首要考虑因素时,选择雪花型模式。许多实际的数据仓库会根据每个维度的大小和深度,将这两种模式结合起来使用。
何时使用雪花模式
雪花模式并非总是最佳选择,因此根据工作负载和报表需求来选择合适的设计至关重要。它在以下情况下往往效果最佳:
- 维度非常大,并且包含许多重复属性,当它们被反规范化时会浪费存储空间。
- 维度具有深厚的、定义明确的层次结构,例如从地区到国家到州到城市,这些层次结构自然地映射到不同的表格中。
- 对于项目而言,数据的完整性和一致性比原始查询速度更重要。
- 存储成本是一个真正令人担忧的问题,而大型维度表的磁盘节省意义重大。
- 该模型馈送 OLAP 能够高效地浏览规范化层级结构的工具。
相反,当业务分析师需要快速简便地生成报告时,星型模式或混合星型集群设计通常是更合适的选择。 数据仓库架构 刻意将这两种方法结合起来,以平衡速度和存储。
什么是 Galaxy Schema?
A 银河模式 包含两个或多个事实表,这些事实表之间共享维度表。它也被称为事实星座模式,由于它可以被视为星群,因此也被称为星系模式。

如上例所示,有两个事实表:
- 收入
- 产品
在星系模式中,事实表之间共享的维度称为一致性维度。
星系模式的特征
星系结构图具有以下特征:
- 根据层次结构的不同层级,这些维度被划分为不同的维度。
- 例如,如果地理有四个层次结构——地区、国家、州和城市——那么星系模式应该有四个维度。
- 可以通过将单个星型模式拆分成多个星型模式来构建这种类型的模式。
- 此模式中的维度很大,必须按照层次结构级别进行构建。
- 该模式有助于汇总事实表,从而支持更好的分析和理解。
什么是星 Cluster 架构?
雪花模式包含完全展开的层级结构,这会增加复杂性并需要额外的连接操作。而星型模式则包含完全折叠的层级结构,这可能会导致冗余。最佳解决方案通常是在这两种设计之间取得平衡,这种方案被称为星型模式。 Cluster 架构。

交叠ping 维度在层级结构中表现为分支。当一个实体在两个不同的维度层级结构中都作为父级时,就会出现分支。这些分支实体随后被识别为具有一对多关系的分类,从而限制了设计创建的额外表的数量。
