我应该在我的事实中雪花还是复制它?

Eva*_* M. 5 data-warehouse database-design ssas olap star-schema

我正在构建一个供 SSAS 用于创建多维数据集的数据仓库,并且我正在两种可能的模式之间进行辩论。在我的仓库中,我有两个不同的事实表,用于跟踪美元价值的每日变化。这些事实表中的每个实体都有一个与其相关的基础销售订单和行。这些 SO 和产品线还有其他相关维度,例如客户、产品等。到目前为止总共大约有 12 个子维度。

我的问题是,我是否应该将所有这些子维度直接滚动到事实表中,或者是否应该在我的仓库中使用一点雪花,并让它们从销售订单和行维度中分支出来。

第一个选项显然更好地遵循星型模式模型。但是,如果进行更改(例如添加附加维度),则需要更多维护,基本上必须对每个事实表执行两次 ETL,而不仅仅是在 SO 维度上执行一次。同样,如果添加与销售订单相关的新事实,我就必须再次完成整个过程。

由于这是我的第一个 DW/OLAP 项目,我不熟悉雪花的界限应该在哪里划定,非常感谢其他人的想法。

小智 -2

你看不到“界限应该画在哪里”的原因是“雪花”的概念已经破产(无论它被写了多少)。

最简单的方法是最好的:在 BCNF 中获取您的设计并开始使用它。添加约束以保证正确性,添加视图以保证便利性,添加过程以保证完整性,并添加索引以保证速度。不要假设性能会成为问题,或者连接会导致性能问题。等到他们这样做——如果他们这样做——然后解决他们。最多,您需要具体化那个漂亮的视图,或者可能连夜将其写入辅助表。

有一个巨大的误解,认为数据仓库有一些特殊之处。那没有。如果您的表已标准化,您可能会惊讶于服务器“汇总您的维度”的效果,这在其他地方都称为“执行您的查询”。