2

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

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

每个报告一个索引是要走的路,还是有任何陷阱?那么索引饥饿呢?

4

1 回答 1

0

每个报告一个索引会导致很多额外的索引。考虑而不是“每个数据集一个索引”。然后围绕每个数据集构建多个报告。

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

  • 订单详情索引
  • OrderTotalsByCustomer
  • OrderTotalsByMonth
  • OrderTotalsByDay
  • OrderTotalsByProduct

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

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

  • 按客户订购
  • OrdersByDate
  • OrdersByZipCode

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

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

  • OrderDetailsIndex_ForReportA
  • OrderDetailsIndex_ForReportB

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

最后,您可能需要考虑升级到 RavenDB 2.5。有一个名为“Streaming Unbounded Results”的新功能,您可以在 Ayende 的博客中了解它。这可能是将索引中的数据提供给报告的最佳方式。如果您的报告引擎需要IEnumerable数据源(大多数都需要),那么您可能想要使用我编写的这个方便的扩展方法

于 2013-06-22T17:33:51.010 回答