5

多くの「計算された」または「集約された」データ、つまりユーザーが保存したデータに対して高価な操作を実行して計算される情報を特徴とするRailsアプリを作成しています。このデータを保存する何らかの方法が必要だと考えているので、A. 高価な DB 操作を常に実行しているわけではありません。B. 特定の属性について、時間の経過に伴うきれいなグラフなどを含む「レポート」を吐き出すことができます。

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

これに対する最も一般的なアプローチは何なのか、Rails アプリ内でこれを実装するにはどうすればよいのでしょうか?

4

1 に答える 1

1

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

これが私のベストプラクティスの推奨事項です。

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

もう少し具体的に、正確な問題の例をいくつか挙げていただければ、より具体的なヒントを提供できるかもしれません。幸運を。

于 2012-07-15T21:31:22.263 に答える