如何构建/实现多维数据/数据立方体

时间:2017-10-23 06:11:46

标签: database aggregate business-intelligence cube olap-cube

我一直在阅读数据多维数据集是什么,并且有很多资源说它是什么为什么(OLAP /商业智能/聚合你会使用一个但从不如何

大多数资源似乎都是referencing relational data商店,但似乎您不必使用RDBMS。

但似乎没有任何东西显示您如何构建架构以及如何有效地进行查询以避免聚合所有这些数据的运行时间较慢。我能找到的最好的是这个edx类是"目前不可用":Developing a Multidimensional Data Model

2 个答案:

答案 0 :(得分:1)

您可能已经知道有两种不同的OLAP方法:

  • MOLAP,需要数据加载步骤来处理可能的聚合(以前定义为“多维数据集”)。内部基于MOLAP的解决方案预先计算可能聚合的度量,因此能够非常快速地执行OLAP查询。这种方法最重要的缺点来自于MOLAP充当缓存这一事实:您需要重新加载输入数据以刷新多维数据集(这可能需要很长时间 - 比如几小时),如果您需要完整的重新处理决定为您的多维数据集添加新的维度/度量。此外,数据集大小+多维数据集配置存在自然限制。
  • ROLAP不会尝试预处理输入数据;而不是它将OLAP查询转换为数据库聚合查询以即时计算值。 “R”表示关系,但即使使用支持聚合查询的NoSQL数据库(例如,MongoDb),也可以使用方法。由于没有任何数据缓存用户总是获得实际数据(与MOLAP相反),但DB应该能够快速执行聚合查询。对于相对较小的数据集,通常的OLTP数据库可以正常工作(SQL Server,PostgreSql,MySql等),但是在大型数据集的情况下,使用专门的数据库引擎(如Amazon Redshift);它们支持高效的分布式使用场景,能够在几秒钟内处理多个TB。

现在开发MOLAP解决方案有点意义;这种方法实际上是> 10年前,当服务器受到少量RAM的限制,而且HDD上的SQL数据库无法足够快地处理GROUP BY查询 - 而MOLAP只是实现“在线分析处理”的唯一途径。目前我们拥有非常快的NVMe SSD,服务器可能有数百GB的RAM和数十个CPU内核,因此对于相对较小的数据库(高达TB或更多),通常的OLTP数据库可以作为ROLAP后端足够快地运行(执行查询)秒);在真正大数据的情况下,MOLAP几乎无法以任何方式使用,应该以任何方式使用专门的分布式数据库。

答案 1 :(得分:0)

一般的智慧是,当立方体基于“维度”模型时,立方体效果最佳。 AKA是一种通常(但并非总是)在RDBMS中实现的星型模式。这是有道理的,因为这些模型的设计可以快速进行查询和聚合。

大多数多维数据集在用户与它们交互之前自己进行聚合,因此从用户的角度来看,多维数据集本身的聚合/查询时间比源表的结构更有趣。但是,一些立方体技术只不过是一个“语义层”'将查询传递给底层数据库,这些称为ROLAP。在这些情况下,基础数据结构变得更加重要。

呈现给多维数据集用户的数据接口从他们的角度来看应该是简单的,这通常会排除非维度模型,例如将多维数据集直接建立在OLTP系统的数据库结构上。