根据事实表和维度表之间的关系,我们将常见的模型分为星型模型和雪花模型。
雪花模型去除了冗余,设计复杂,可读性差,关联的维度表多,查询效率低,但是可扩展性好。 星型模型冗余度高,设计简单,可读性高,关联的维度表少,查询效率高,可扩展性低。
一、星型模型 星型模型:当所有的维度表都是和事实表直接相连的时候,整个图形看上去就像是一个星星,我们称之为星型模型。星型模型是一种非正规化的架构,因为多维数据集的每一个维度都和事实表直接相连,不存在渐变维度,所以有一定的数据冗余,因为有数据的冗余,很多的统计情况下,不需要和外表关联进行查询和数据分析,因此效率相对较高。
二、雪花模型 雪花模型:当有多个维度表没有直接和事实表相连,而是通过其它的维度表,间接的连接在事实表上,其图形就像是一个雪花,因此我们称之为雪花模型,雪花模型的优点是减少了数据冗余,在进行数据统计或分析的时候,需要和其他的表进行关联。
三、区别 星型模型和雪花模型最根本的区别就是,维度表是直接连接到事实表还是其他的维度表。 1)星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花模型要高。 2)星型模型不用考虑很多正规化的因素,设计和实现都比较简单。 3)雪花模型由于去除了冗余,有些统计就需要通过表的连接才能产生,所以效率不一定有星型模型高。 4)正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的ETL、以及后期的维护都要复杂一些。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。
|