Rails存储聚合信息

时间:2012-07-15 21:25:20

标签: ruby-on-rails database analytics aggregate-functions graphing

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

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

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

1 个答案:

答案 0 :(得分:1)

我一直在研究类似的问题,而且我也研究过这样做错误的应用程序。

以下是我的最佳做法建议:

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

如果您可以更具体一些并提供一些确切问题的示例,我可以提供一些更具体的提示。祝你好运。