星形模型
雪花模型
星型模型是所有维度表都是连接在一个事实表上面,雪花模型是将维度表拆分地更加详细,是多层次的。
在星型模型的维度表里面,一张维度表储存了众多存在冗余的信息,为什么冗余,在哪里冗余,我想了一个简单的例子。
如
地域维表
国家a GDP
国家b GDP
国家a 省份a GDP
国家a 省份b GDP
国家a 省份c GDP
国家a 省份a 市级a GDP
国家a 省份a 市级b GDP
国家a 省份a 市级c GDP
在雪花模型的表中,是这样
国家表
国家a GDP
国家b GDP
国家a省份表
省份a GDP
省份b GDP
省份c GDP
国家a省份a市表
市级a GDP
市级b GDP
市级c GDP
这样有一部分信息只需要存储一次,减少了冗余信息。
在现有的多维数据仓库的商业智能解决方案中,根据维度表和事实表的关系,在实施过程中,维度设计会映射到 一组关系表,可以把数据库模型分为星型模型和雪花模型,下面我们分别看一下这两种不同的模型。
星型模型:
中央表包含事实数据,多个表以中央表为中心呈放射状分布,它们通过数据库的主键和外键相互连接,是一种使用关系数据库实现多维分析空间的模式,其基本形式必须实现多维空间,以使用关系数据库的基本功能。同时星型模型也是一种非正规化的模型,多维数据集的每一个维度直接与事实表连接,没有渐变维度,所以存在冗余数据。在星型模型中,只需要扫描事实表就可以进行查询,主要的数据都在庞大的事实表中,所以查询效率较高,同时每个维度表和事实表关联,非常直观,很容易组合出各种查询。
雪花模型:
雪花模型在星型模型的基础上,维度表进一步规范化为子维度表,这些子维度表没有直接与事实表连接,而是通过其他维度表连接到事实表上,看起来就像一片雪花,故称雪花模型。也就是说雪花模型是星型模型的进一步扩展,将其维度表扩展为更小的维度表,形成一种层次。这样就通过最大限度的减少数据存储量以及联合较小的维度表来改善查询性能,且去除了星型模型中的冗余数据。
星型模型和雪花模型的特点比较:
星型模型 | 雪花模型 | |
特点 | 非正规化; 多维数据集中的每一个维度都与事实表连接(通过主键和外键); 不存在渐变维度; 有冗余数据; 查询效率可能会比较高; 不用过多考虑正规化因素,设计维护较为简单 | 正规化; 数据冗余少; 有些数据需要连接才能获取,可能效率较低; 规范化操作较复杂,导致设计及后期维护复杂; |
当然是实际开发的过程中,可以在数据仓库架构中同时使用这两种模型的混合体。比如中间处理层,可以用雪花模型降低冗余度,在数据集市层,采用星型模型方便提取数据,提高查询效率