这是问题,我有一个销售信息表,其中包含销售信息,其中包含(主键ID,产品名称,产品ID,商店名称,商店ID,销售日期)等列。我想进行分析,例如向上钻取并深入了解商店/产品/销售日期。
我正在考虑两种设计方案,
为了获得更好的分析性能,我听说雪花模型更好。但是为什么它比数据库设计角度的相关列索引更好呢?
提前谢谢, 林答案 0 :(得分:3)
了解您的应用使用模式以及您要优化的内容非常重要。以下是有几个原因(其中有几个)选择其中一个。
查询速度更快,磁盘和内存要求更低。由于每个标准化行只有短键而不是更长的文本字段,因此主要事实表变得更小。即使使用索引(除非查询可以由索引本身直接回答),通常也需要部分表扫描,而较小的数据意味着更少的磁盘读取和更快的访问。
更轻松的修改和更好的数据完整性。假设商店更改其名称。在雪花中,你改变了一行,而在一个大的非规范化表中,你必须在每次出现时都改变它,并且你经常会遇到拼写错误和同名的多个变体。
加载单个记录的速度更快。当您最常加载一条记录或少量记录时,将所有数据放在一行只会导致单个缓存未命中或磁盘读取,而在雪花中,数据库可能必须从不同磁盘位置的多个表中读取。这更像是NoSQL数据库如何存储与密钥相关联的“对象”。