【问题标题】:How to structure/implement multidimensional data / data cube如何构建/实现多维数据/数据立方体
【发布时间】:2017-10-23 06:11:45
【问题描述】:

我一直在研究什么是数据立方体,并且有很多资源说明什么以及 为什么(OLAP/商业智能/特定列上的聚合) 你会使用一个但永远不会如何

大部分资源似乎是referencing relational data 存储,但您似乎不必使用 RDBMS。

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

【问题讨论】:

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


    【解决方案1】:

    您可能已经知道有 2 种不同的 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 几乎无法以任何方式使用,并且应该以任何方式使用专门的分布式数据库。

    【讨论】:

      【解决方案2】:

      普遍的看法是,当多维数据集基于“维度模型”AKA 星型模式时效果最佳,这种模式通常(但不总是)在 RDBMS 中实现。这是有道理的,因为这些模型旨在快速查询和聚合。

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

      从用户的角度来看,呈现给多维数据集用户的数据接口应该是简单的,这通常会排除无维模型,例如直接基于 OLTP 系统的数据库结构的多维数据集。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-18
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多