5

"計算された"または "集約された"データ、すなわちユーザが格納したデータに対して高価な操作を実行することによって計算される情報を持つRailsアプリケーションを作っています。私はこのデータを格納する方法が必要だと思っています。A.高価なDB操作を絶えず行っているわけではありません。そして、B.一定の属性に対して、時間の経過とともにきれいなグラフで「レポート」を吐き出すことができます。集約された情報を格納するレール

これを実装する最良の方法は何ですか?私は、特定のモデルの値(数値)を計算して保存する必要があり、時間の経過と共にそれらがどのように変化するのでしょうか。私はこれを効率的にし、複製やデータを避けたいと思っています。レコードは作成された時点でかなり固定されるため、変更する必要があることを心配する必要はありませんが、考慮する必要があります。

私はこれに最も一般的なアプローチが何か、そしてRailsアプリケーション内でこれを実装する方法について考えましたか?

答えて

1

私は同様の問題に取り組んできましたが、私はこれを間違ったやり方で行ったアプリケーションにも取り組んできました。ここで

は私のベスト・プラクティスの推奨事項です:

  • ストアモデルにおける生データは、みましょうコールは、計算された値を保持している別のモデルへの1対1の関連付けを設定しFeed
  • です、例えばFeedStats。これは、正確な場合に応じて、1対多の関連付けまたは多対1でもかまいません。いくつかの個々のFeedレコードを何らかの集計などにロールアップすることができます。
  • 元のすべての生データを保持します。後で計算を他のアルゴリズムに切り替える必要があり、古いデータを再計算する必要がある場合、または計算などでバグを発見する場合は非常に便利です。
  • バックグラウンドタスクで計算を設定します。 Resque(スケジューラの有無にかかわらず)、DelayedJobなどのツール。

さらに詳しいことができ、正確な問題の例を挙げると、いくつか具体的なヒントを与えることができます。がんばろう。

+0

ご回答いただきありがとうございます。数字の属性(一部のdb列、値を計算するいくつかのメソッド)を持つモデルがいくつかあります。私はこれらの変化をグラフにしたい。私は、最も簡単な方法は、範囲内のすべての値を選択し、キャッシュに構築されたレールを使用してこのクエリをキャッシュすることだと思います。私はそのような統計を作成するための標準的な方法があるかどうか疑問に思っただけですか?私は右の線に沿って見えるこの宝石を見た:https://github.com/acatighera/statistics - おかげでもう一度:) – Fred

+0

私はこれを越えて走っていないが、それは面白そうだ。 –