物化视图与SSAS多维数据集

时间:2017-02-24 07:27:05

标签: oracle reporting-services ssas cube materialized-views

以下是当前场景 - 我们在Oracle DB中有3个表(包含数百万条记录),用于生成SSRS报告。 这些报告显示复杂的数据计算,如偏差,中位数等。

  • SSRS使用oracle中的存储过程获取数据(连接所有3个表)基于日期参数
  • 计算在SSRS中执行,数据以表格和图表显示

现在,对于较小的日期持续时间,报告生成速度非常快,因此没有问题。 当日期范围大到一周或2-3个月时,报告需要花费大量时间来处理,并且大部分时间也会超时。

要解决此问题,我打算从SSRS中删除计算并将其移至数据库级别。我们可以在哪里预先计算出数据 这将用于SSRS报告,以便更快地生成报告。

为了做到这一点,我可以看到2个选项 -

  • Oracle Materialized Views

  • SSAS Cube

我以前从未使用过物化视图,所以我对它的性能特别怀疑FAST REFRESH问题。

您更喜欢哪种方式? MV或SSAS还是两者兼而有之?

2 个答案:

答案 0 :(得分:2)

数据模型(SSAS)非常适合组织数据,整合业务逻辑以及定义计算在不同范围内的行为方式。它们通常比原始数据查询更快,这是您目前拥有的数据。有一些缓存涉及,但您仍然需要查询数据并等待它被处理。当您有多个报告将使用一组通用数据时,模型也是最合适的。

使用物化视图,您可以将繁重的计算时间转移到计划的刷新。可以认为它与创建由过程刷新的新表基本相同。这将极大地改善报告的查询时间,尤其是在您要过滤的日期列被编入索引时。此外,开发和维护要求远远低于模型

因此,根据您的规格,我会建议物化视图。

答案 1 :(得分:2)

我同意物化视图(MV)方法。根据数量和类型(insert vs update vs delete)将确定快速刷新是否可行或是否可行。 与直觉相反,完全刷新通常是一种更好的方法,因为您可以更好地利用基于集合的SQL处理以及并行性来构建MV。