Ravendb 最小/最大/平均计算在哪里进行?

Ravendb 最小/最大/平均计算在哪里进行?,ravendb,Ravendb,我有一个数据记录应用程序。我每30秒记录10000个温度。我需要能够计算每小时/每天/每周10000件物品的最低/最高/平均温度。是否可以在服务器上执行最小/最大/平均计算,或者是否需要将每个文档下载到客户端才能执行计算 Andrew在服务器的DB/中计算或存储摘要。如果这很重要,请保留原始数据 提前计算汇总并将其发送到客户/人员级别,要比用卡车运送10000个通常没有人想钻取的样本有效得多 一个包含平均、最小、最大和标准偏差的非常好的总结在几乎所有目的下都是统计上全面的 当客户真正需要时,您可

我有一个数据记录应用程序。我每30秒记录10000个温度。我需要能够计算每小时/每天/每周10000件物品的最低/最高/平均温度。是否可以在服务器上执行最小/最大/平均计算,或者是否需要将每个文档下载到客户端才能执行计算


Andrew

在服务器的DB/中计算或存储摘要。如果这很重要,请保留原始数据

提前计算汇总并将其发送到客户/人员级别,要比用卡车运送10000个通常没有人想钻取的样本有效得多

一个包含平均、最小、最大和标准偏差的非常好的总结在几乎所有目的下都是统计上全面的


当客户真正需要时,您可以放下大数据集(10k样本)并显示它。

您肯定希望在服务器上计算它,但您可以考虑多种方法:

  • 您可以将它们存储在特定的文档中,并随每个示例手动更新这些文档。这可能是可行的,但是您会对单个文档施加很大的压力,并且可能会导致并发问题

  • 您可以编写Map/Reduce索引来计算总数。每次编写新文档时,RavenDB都会用新的总数更新索引。您可以将总值除以总计数得到平均值,并且可以轻松使用最小值和最大值函数。由于您希望按不同的时间间隔查看这些结果,因此需要多个索引

    实际上,我写了一个小的演示程序,就是这样做的。它不是记录温度,而是记录模拟压力表的PSI值。但概念是相同的。如果仔细阅读评论,你可能会发现其中有一些捷径

    项目地点:

    我是在RavenDB的当前版本为2.0.2261时写这篇文章的。我已经有一段时间没有更新它了,但是它应该仍然可以工作并且是相关的

  • 我还没有对它做很多工作,但是Ravendb2.5添加了一个名为的特性。它也通过摄影棚曝光。本质上,这在查询时进行聚合。您可能会发现表达您感兴趣的聚合要容易得多,但它可能比map-reduce方法慢得多。你可能想尝试一下。性能差异可能归结为集合中有多少项被聚合