一、属性与度量
在介绍维表之前,我们首先要明白一点属性与度量的区别。属性是指是对象的性质或特性,它因对象而异,或随时间而变化,比如姓名和年龄。姓名因人而异,年龄会不断变化。而度量是对属性的标量刻画。并且度量具有统计意义,而属性并不具有统计意义,比如25岁的我在超市买了1瓶300ML农夫山泉,花了2元。这里的1瓶和2块就是对我买水的这个业务过程的度量。超市是(地理维度)属性,25岁是描述实体的属性,300ML是描述农夫山泉的属性。所以我们可以通过2个点来区分属性和度量,1.是否具有统计意义,2.是否会随时间变化。
二、维度表类型
维度表分两种,星型模型和雪花模型。在星型模型中,维表只和事实表关联,维表之间没有关联,查询性能好,但冗余度高。雪花模型是星型模式中的维度表进行规范化处理,进一步分解到附加表(维表)中冗余度小,但是查询性能差。一般而言,我们都使用星型模型。因为存储资源的成本会远远小于计算资源,我们会优先考虑这一点。而雪花模型也是会使用的,比如我们的维表中包括了太多的属性,为了确保及时产出,又或者某些字段相比而言会经常发生变动,我将一个维表拆成核心表和拓展表。又或者某些维度属性经常发生变化,我们可以考虑将快速变化的维度属性抽象出微型表,用业务主键或者代理键[1]进行关联。
星型模型(左