星型模式设计对于数据仓库是必要的吗?还是可以使用其他设计模式进行数据仓库建设?
星型模式设计对于数据仓库是必要的吗?还是可以使用其他设计模式进行数据仓库建设?
使用星型模式作为数据仓库系统可以带来多个好处,在大多数情况下,将它们用于顶层是合适的。您可能还拥有一个操作数据存储(ODS)-一个规范化结构,用于保存“当前状态”并促进数据确认等操作。但是,在某些情况下,这并不可取。我曾经建立过有和没有ODS层的系统,并且在每种情况下都有特定的架构选择原因。
不谈论数据仓库架构的细微差别或引发Kimball vs. Inmon争论,星型模式的主要好处包括:
大多数数据库管理系统都有查询优化器中的设施,可以执行“星形转换”,使用位图索引结构或索引交集进行快速谓词解析。这意味着可以在不命中事实表(通常比索引大得多)的情况下完成对星型模式的选择,直到选择被解决。
分区星型模式相对简单,因为只需要对事实表进行分区(除非您有一些超级大的维度)。分区消除意味着查询优化器可以忽略那些不可能参与查询结果的分区,从而节省I/O。
慢变化维度在星型模式上比雪花模式更容易实现。
该模式比雪花或E-R模式更易于理解,并且涉及的连接较少。你的报告团队会喜欢这个。
星型模式更易于使用,(更重要的是)可与诸如Business Objects或Report Builder等自助查询工具良好地配合使用。作为开发人员,您几乎无法控制这些工具生成的SQL,因此需要尽可能地帮助查询优化器。星型模式给查询优化器提供了相对较少的机会出错。
星型模式是数据仓库中最后一层的自然选择。如何到达这里是另一个问题。据我所知,有两个大派别,分别是Bill Inmon和Ralph Kimball。如果/当您决定采用星型模式,可以考虑这两位专家的理论。
此外,一些报告工具确实喜欢星型模式设置。如果您被锁定在特定的报告工具中,那么这可能会影响仓库中报告市场的外观。