寻求意见:非规范事实和暗表以提高SSRS报告的性能

时间:2017-03-29 09:38:14

标签: reporting data-warehouse

我们似乎对我们团队的讨论点进行了一些争论。 我们正在Microsoft SQL Server 2012平台上开发数据仓库。我们已经按照Kimball Architecture来构建这个数据仓库。

问题:

从此仓库中获取数据的报告解决方案(基于SSRS构建)在从事实和暗淡表格中获取数据时存在严重的性能问题。我们的一些团队成员建议我们使用SSIS包将事实和变暗的数据提取到一组新的表中。这意味着我们将这些表非规范化为“快照”表。通过这种方式,我们不需要连接这些表来在报告中创建数据集。可以直接从这些表中读取数据。

我对此有自己的担忧;不一致,维护不同的数据结构,重复数据等等。

问题:

您是否会考虑创建快照表(通过非规范化事实和暗淡表格)来报告表格的正确方法?

想听听你对此的看法。

干杯 尼西

2 个答案:

答案 0 :(得分:1)

对于原始多维数据集性能,我的建议是始终尝试对表进行非规范化,并为每个维度(星型模式)提供一个事实表和一个表。 如果您不确定它是否真的有帮助您可以开始创建物化视图。这些都是两全其美的,从长远来看,你应该改变你的etl。 在我之前的工作中,我们只有平整的表格,这些表格运作良好。 Currenly我们有一个规范化的模式,但在最后一步中将它弄平。

答案 1 :(得分:1)

我认为快照表没有任何问题。数据仓库的两个最重要的方面是:

  1. 数据是正确的。
  2. 数据很有用。
  3. 如果您的用户无法在合理的时间范围内提取他们需要的总数,他们就不会使用仓库。

    我自己的解决方案包括3个快照表。和你一样,我担心不一致。为了解决这个问题,我们建立了一个自动检该子系统每小时执行一次存储在网络驱动器上的一系列查询。查询返回的任何记录都被视为失败。我的ETL团队报告并立即调查失败。该子系统确保快照和基础事实始终保持一致并且彼此一致。防止漂移。

    尽管如此,额外的表等于额外的复杂性。这需要更多的时间/精力来管理。在将另一个图层引入仓库之前,您应该调查这些查询表现不佳的原因。如果加入是责任:

    1. 您的P / F键是否使用了不合适的数据类型?
    2. FKeys是否已编入索引(某些RDBMS默认执行此操作,其他人不执行此操作)?
    3. 您是否查看了执行计划,以了解违规查询?
    4. 真的要归咎于连接,还是应用于昏暗表的过滤器?