snowflake-cloud-data-platform - Snowflake 中的传统星型模式与宽表性能比较
问题描述
在为雪花数据仓库设计数据模型时,对于哪种类型的模型将具有最佳性能,是否有一般规则?具体来说,比较传统的星型模式与宽表
典型的事实表具有存储描述等字段的维度的代理键。如果结构进一步去规范化并且这些描述被移动(或也移动到)事实表怎么办?这更符合“一张大桌子”的做法。对任何维度或事实的值的更改都需要“事实”表中的新记录,这显然会生成更多数据”
解决方案
答案在某种程度上取决于你的具体情况。在设计模式时,您通常必须平衡从许多不同的源/表中摄取数据的易用性/速度/可恢复性/一个易于消费者理解的模型(例如,编写复杂的分析查询)并在负载下表现良好。
我发现以星/雪花格式维护核心数据模型可以独立摄取/转换/符合所有相应的事实和维度表。
但是我有另一个转换/非规范化层,可以将该模型扁平化为一个分析就绪的数据集。根据数据集的大小和数据的新鲜度要求,这可以通过一个简单的 CTAS 语句从一个视图中完成,该语句将必要的数据 + 交换汇集在一起(此解决方案可以随时运行,而不会中断分析查询)
出于性能原因,扁平表对于实时连接到 Snowflake 的 BI 工具和分析师至关重要。对于不精通 SQL 的分析师来说,它抽象出了所有底层连接的复杂性。
推荐阅读
- apache-kafka - Kafka 流 - 当事件发生的时间相距很远时加入流
- python - 如何从熊猫数据框中删除不在列表中的某些值?
- node.js - mongoose中查询子文档的子文档
- android - 如何在按下按钮时消除声音android
- java - 空指针异常(循环遍历对象数组)
- firebase - 无法从 Firebase 存储下载调整大小的图像
- html - 用点替换滚动条
- arrays - 从 vue 数据对象中的数组中获取数组长度
- python - 如何使用 Python Paramiko 通过 SSH 连接到 Cisco 交换机
- javascript - 为什么在录制远程流时视频不播放?