用于 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 系统中的 OLTP 类型数据

OLAP理解

数据仓库和数据挖掘的OLAP技术

实时分布式OLAP数据存储区 - Apache Pinot介绍

用于数据输入 (OLTP) 和 BI (OLAP) 的操作数据仓库

OLTP && OLAP