5

我正在製作一個Rails應用程序,它將包含大量「計算」或「聚合」數據,即通過對用戶存儲的數據執行昂貴操作來計算的信息。我想我需要一些方法來存儲這些數據,所以答:我不是經常執行昂貴的數據庫操作,並且B.因此,我可以用特定的圖形隨時間吐出「報告」等等。存儲彙總信息的軌道

我想知道實現這個的最好方法是什麼?我需要計算和存儲給定模型的值(數值),以及它們隨時間的變化。我希望這是有效的,避免重複和數據。這些記錄一旦創建就會得到很好的修復,所以我不需要擔心事情變化太大,儘管需要考慮。

我只是想知道最常用的方法是什麼,以及我應該如何在Rails應用程序中實現它?

回答

1

我一直在研究一個類似的問題,並且我也研究過這種做法錯誤的應用程序。

這裏是我的最佳實踐的建議:

  • 存放在模型中的原始數據,我們姑且稱之爲是Feed
  • 建立一個一對一的關聯保存計算值另一種模式,例如FeedStats。這也可能是一對多或多對一的關係,具體取決於具體情況;您可能會將某些個人Feed記錄彙總成某種聚合等。
  • 保留所有原始原始數據。如果您稍後想要將計算切換爲其他算法,並且您可能需要重新計算舊數據,或者如果發現計算中的錯誤等,這將非常有用。
  • 在後臺任務上設置計算,使用像Resque(有或沒有Scheduler),DelayedJob或類似的工具。

如果你可以更具體一些,並給出你的確切問題的一些例子,我可以給一些更具體的提示。祝你好運。

+0

感謝您的回覆,我有幾個模型,每個都帶有數字屬性(一些數據庫列,一些計算值的方法)。我想繪製這些隨着時間的變化。我想最簡單的方法是選擇範圍內的所有值,並使用緩存中構建的軌道緩存該查詢。我只是想知道是否有一個產生這種統計數據的標準方法?我已經看到了這條沿着正確線條的寶石:https://github.com/acatighera/statistics - 再次感謝:) – Fred 2012-07-16 14:40:05

+0

我沒有跑過這個,但它看起來很有趣。 – 2012-07-16 17:54:23