用于 OLAP 数据库设计的 Snowflake 或 Star
Posted
技术标签:
【中文标题】用于 OLAP 数据库设计的 Snowflake 或 Star【英文标题】:Snowflake or Star for OLAP database design 【发布时间】:2013-11-07 20:39:34 【问题描述】:我正在使用 Saiku 2.5,但不确定如何建模以下情况:
尺寸:
类别(约 20 行) 子类别(约 100 行) SubSubCategory(~1200 行) SubSubSubCategory(~8000 行) 其他1(~100000 行) 其他2(~50000 行) 其他3(~500 行) 其他4(~500 行) 其他5(~200 行) 其他6(~200 行) 其他7(~100 行) Other8(~10 行)测量:
事实(~20000000 行)关系
事实有其他[\d] 事实有 SubSubSubCategory SubSubSubCategory 有 SubSubCategory SubSubCategory 有 SubCategory 子类别有类别我想知道在性能方面是否更好,将所有类别反规范化到一个表中或保持原样。每个“类”表都有一个 VARCHAR(8) 和两个 TEXT()。
【问题讨论】:
【参考方案1】:我想知道在性能方面是否更好,将所有类别反规范化到一个表中或保持原样。
您正在优化数据仓库以提高读取性能,因此我会选择非规范化类别表。在大多数关系数据库中,您所说的大约是 8,000 行或一页半。您可以将此表保存在内存中。
似乎星型模式适合您。如果其他维度有关系,则需要雪花模式。
【讨论】:
当然。但更重要的是蒙德里安。这几乎需要星型模式。你可以做雪花,但效果不太好。【参考方案2】:您的类别应该在一个表中,因为 8k 行连接很容易。
其他的应该分成几张表。这将允许 mondrian 在可能的情况下以高级别(低基数)执行连接,从而获得更好的性能。
蒙德里安在这两种情况下都表现出色。
【讨论】:
以上是关于用于 OLAP 数据库设计的 Snowflake 或 Star的主要内容,如果未能解决你的问题,请参考以下文章
实时分布式OLAP数据存储区 - Apache Pinot介绍