Project REAL分析服务技术探讨(2)
2007-05-15 09:28:18 来源:WEB开发网首先,确保所有的属性都确实需要被用来进行分析。如果不是必须的,从维度中去除它们。这能使得Hash表要求的空间更小。
第二,使用级联的属性关系,这样能够最少化属性的数量,因为它们都直接依赖于键。每个属性必须直接地或者间接地关联到一个维度地键。当你第一次创建维度地时候,你将注意到,所有属性都直接地关联到一个键。这也是键属性的特征之一,所有属性都能关联到它。然而,作为为维度定义的自然用户定义层次,一些属性会生成额外的关联。这样,它们既直接关联到键,也通过自然层次,间接的关联到键。例如,如果你清楚Time维度中的Day,你也将知道Year(Year直接被Day暗示)。同时,Day也暗示了Week、也暗示了Month、也暗示Quarter、也暗示了年。因而,在定义自然的用户定义层次后,你就能把Week、Month、Quarter和Year从Day的直接关联中去掉。如果间接的关联存在,就删除直接的关联。
依赖的属性能被移除,因此它们不再直接依赖于键,但它们通过在自然层次中通过属性关联能够间接的关联到键。并且,它们也能从维度的键属性中移除。这是一个很好的例子,详细参见图2。
图2:一个时间维度的良好设计
对比如何将属性关联定义到calendar属性上和如何将属性关联定义到fiscal属性上。绝大部分calendar属性不是直接关联的键属性(Day)的;仅仅只有Week。相反,绝大部分calendar属性能够向上级联到calendar自然层次。Fiscal属性关系也是这样一种情况,只是属性都是直接关联到键属性上的。
这个方法认为calendar属性应该是首选的方法。如果你定义了自然的用户定义层次,或者其它具有级联效果的属性关系,你就必须将直接的关联移除掉。这里有两个原因。首先是这样消耗更少的内存。第二是当集合设计向导(Aggregation Design Wizard)运行的时候,多余的直接关联将导致更慢的集合设计。
赞助商链接