【问题标题】:Design questions for using RavenDB for reporting使用 RavenDB 进行报告的设计问题
【发布时间】:2013-06-22 11:31:43
【问题描述】:

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

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

每个报告一个索引是可行的方法,还是会带来任何陷阱?那么索引饥饿呢?

【问题讨论】:

    标签: reporting ravendb


    【解决方案1】:

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

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

    • 订单详情索引
    • 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

    【讨论】:

      猜你喜欢
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多