在数据仓库的构建和数据资产管理中,星型模型、雪花模型和星座模型是三种常见的建模方法。它们各自具有独特的结构特点、优势和局限,适用于不同的业务场景和数据分析需求。本文将深入解析这三种模型的设计理念、优缺点以及它们在实际应用中的案例,帮助读者更好地理解这些模型,并在数据仓库设计中做出恰当的选择。
数据产品求职面试过程中,经常会被问到数据仓库相关的知识,尤其是对于数据资产管理与数据治理方向,可以说是必答题,其中一个高频的问题就是对数仓建模理论知识的了解,比如,数据仓库分层理论以及常用的建模方法,星型模型和雪花模型有什么区别,各种有何优劣势,适用场景是什么等。
一、星型模型
星型模型中有一张事实表,以及零个或多个维度表,事实表与维度表通过主键外键相关联,维度表之间没有关联,当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型。星形模型是最简单,也是最常用的模型。由于星形模型只有一张大表,因此它相比于其他模型更适合于大数据处理。其他模型可以通过一定的转换,变为星形模型。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在地域维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家 A 和省 B 的信息分别存储了两次,即存在冗余。星型模型是数据仓库设计中使用的一种常见模型,其结构类似于一颗星星,由一个中心的事实表(Fact Table)和围绕在其周围的多个维度表(Dimension Table)组成。事实表包含业务过程中的度量值(如销售额、数量等),而维度表则包含用于描述这些度量值的上下文信息(如时间、地点、产品等)。
优点:
缺点:
应用案例:
以电商数据仓库建设为例,星型模型可以应用于销售数据分析。例如,事实表可以记录每笔交易的销售金额、数量等信息,而维度表则包括时间维度(如交易日期)、产品维度(如产品ID、产品名称)、客户维度(如客户ID、客户姓名)等。通过星型模型,可以方便地查询和分析不同时间段、不同产品、不同客户的销售情况。
二、雪花模型
雪花模型是星型模型的一种扩展,它通过进一步规范化维度表来减少数据冗余和节省存储空间。在雪花模型中,维度表被分解为多个相关的子表,每个子表包含维度的一个子集,从而形成一个类似于雪花的结构。当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的维度表,形成一些局部的 ” 层次 ” 区域,这些被分解的表都连接到主维度表而不是事实表。如图,将地域维表又分解为国家,省份,城市等维表。
优点:
缺点:
应用案例:
雪花模型可以应用于更加复杂的数据分析场景。例如,对于产品维度,可以将其拆分为产品基本信息表、产品类别表、产品供应商表等多个子表。这样,在查询产品相关信息时,可以通过连接这些子表来获取更详细的数据,同时减少数据冗余。
三、星座模型
星座模型是一种多维数据结构,它将一个维度分解成多个表来实现,每个表包含一个维度的不同层次。这种模型允许用户根据具体需求自由组合维度,进行灵活的数据分析。星座模型是由星型模型延伸而来,星型模型是基于一张事实表而星座模式是基于多张事实表,并且共享维度表信息,这种模型往往应用于数据关系比星型模型和雪花模型更复杂的场合。星座模型需要多个事实表共享维度表,因而可以视为星形模型的集合,故亦被称为星系模型
优点:
缺点:
应用案例:
星座模型可以应用于具有复杂维度层次的数据分析场景。例如,对于产品维度,可以将其拆分为产品类别、产品子类别、产品等多个层次。这样,在查询产品相关信息时,可以根据需要选择不同的层次进行组合查询,从而获得更详细和灵活的分析结果。
本文由人人都是产品经理作者【数据干饭人】,微信公众号:【数据干饭人】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。
题图来自Unsplash,基于 CC0 协议。
下一篇:曾凡博腿伤 恢复情况如何?