Rails存储聚合信息

Fre*_*red 5 database graphing analytics ruby-on-rails aggregate-functions

我正在制作一个Rails应用程序,它将包含大量"计算"或"聚合"数据,即通过对用户存储的数据执行昂贵操作来计算的信息.我想我需要一些方法来存储这些数据,所以A.我不是经常执行昂贵的数据库操作,而是B.所以我可以随着时间的推移用特定的图表吐出"报告"以获得给定的属性.

我想知道实现这个的最佳方法是什么?我需要计算和存储给定模型的值(数值),以及它们如何随时间变化.我希望这是有效的,避免重复和数据.一旦创建,记录将非常固定,因此我不需要担心事情会发生太多变化,尽管需要考虑.

我只是想知道最常见的方法是什么,以及我应该如何在Rails应用程序中实现它?

Wol*_*old 1

我一直在研究类似的问题,并且也研究过以错误方式执行此操作的应用程序。

这是我的最佳实践建议:

  • 将原始数据存储在模型中,我们称之为Feed
  • 设置与保存计算值的另一个模型的一对一关联,例如FeedStats。这也可能是一对多或多对一的关联,具体取决于具体情况;您可以将一些单独的记录汇总Feed到某种聚合中,等等。
  • 保留所有原始数据。如果您稍后想要将计算切换到其他算法并且可能需要重新计算旧数据,或者如果您发现计算中的错误等,这将非常有用。
  • 使用 Resque(带或不带 Scheduler)、DelayedJob 或类似工具等在后台任务上设置计算。

如果您可以更具体一点并给出一些具体问题的示例,我也许可以提供一些更具体的提示。祝你好运。