首页 > 解决方案 > Snowflake 中的传统星型模式与宽表性能比较

问题描述

在为雪花数据仓库设计数据模型时,对于哪种类型的模型将具有最佳性能,是否有一般规则?具体来说,比较传统的星型模式与宽表

典型的事实表具有存储描述等字段的维度的代理键。如果结构进一步去规范化并且这些描述被移动(或也移动到)事实表怎么办?这更符合“一张大桌子”的做法。对任何维度或事实的值的更改都需要“事实”表中的新记录,这显然会生成更多数据”

标签: snowflake-cloud-data-platform

解决方案


答案在某种程度上取决于你的具体情况。在设计模式时,您通常必须平衡从许多不同的源/表中摄取数据的易用性/速度/可恢复性/一个易于消费者理解的模型(例如,编写复杂的分析查询)并在负载下表现良好。

我发现以星/雪花格式维护核心数据模型可以独立摄取/转换/符合所有相应的事实和维度表。

但是我有另一个转换/非规范化层,可以将该模型扁平化为一个分析就绪的数据集。根据数据集的大小和数据的新鲜度要求,这可以通过一个简单的 CTAS 语句从一个视图中完成,该语句将必要的数据 + 交换汇集在一起​​(此解决方案可以随时运行,而不会中断分析查询)

出于性能原因,扁平表对于实时连接到 Snowflake 的 BI 工具和分析师​​至关重要。对于不精通 SQL 的分析师来说,它抽象出了所有底层连接的复杂性。


推荐阅读