设计使用RavenDB进行报告的问题

时间:2013-06-22 11:31:43

标签: reporting ravendb

我正在开展一个项目,我正在收集来自不同来源的数据,之后我需要对这些数据进行一些报告。所有报告都是预定义的。

我正在考虑使用RavenDB,因为我认为索引和map / reduce部分可能非常适合这种情况,因此我为每个报告创建了一个索引。

每个报告的单索引是否可行,或者是否存在任何陷阱?那么指数饥饿怎么样?

1 个答案:

答案 0 :(得分:0)

每个报表一个索引将导致大量额外索引。而不是“每个数据集一个索引”。然后围绕每个数据集构建多个报告。

如果您正在执行map / reduce,则每个集合可能有多个数据集。例如,您可能具有以下索引:

  • OrderDetailsIndex
  • OrderTotalsByCustomer
  • OrderTotalsByMonth
  • OrderTotalsByDay
  • OrderTotalsByProduct

您可以从这些索引构建许多报告。

想要做的是拥有多个索引,如:

  • OrdersByCustomer
  • OrdersByDate
  • OrdersByZipCode

这些只是可以压缩到同一索引中的多个地图,因此将它们分开是多余的。

如果每个报告有一个索引,它将很快失控:

  • OrderDetailsIndex_ForReportA
  • OrderDetailsIndex_ForReportB

A和B之间的唯一区别可能是字段的布局。

最后,您可能需要考虑升级到RavenDB 2.5。有一个名为“Streaming Unbounded Results”的新功能,您可以阅读in Ayende's blog。这可能是将数据从索引提供到报表的最佳方式。如果您的报告引擎需要IEnumerable数据源(大部分都是),那么您可能希望使用this handy extension method I wrote