当社はあいまいなメトリクスを計算するレポートが大好きです。メトリクスは ActiveRecord のファインダー (find_by_sql を除く) では計算できず、ruport の ruby ベースの機能では遅すぎます。
データベース層で大規模な計算を行うプラグイン、gem、または db アダプターはありますか? 複雑なレポートを作成するためのソリューションは何ですか?
当社はあいまいなメトリクスを計算するレポートが大好きです。メトリクスは ActiveRecord のファインダー (find_by_sql を除く) では計算できず、ruport の ruby ベースの機能では遅すぎます。
データベース層で大規模な計算を行うプラグイン、gem、または db アダプターはありますか? 複雑なレポートを作成するためのソリューションは何ですか?
データベースに依存しませんが、私たちの解決策は plpgsql 関数で、Ruby と ActiveRecord を使用すると非常に遅くなります。
テーブルを正規化できるかのように聞こえます。私が働いていたある場所では、行った正規化の量がレポートのニーズに影響を与えていたため、多数の集計データを含むいくつかのシャドー テーブルを作成し、それに対してレポートを作成しました。
質問が少し漠然としているという Neil N のコメントに同意しますが、おそらくこれで正しい方向に進むことができますか?
Thoughtbot の Squirrel プラグインは、ActiveRecord の find メソッドに多くの Ruby っぽい機能を追加し、多層化された条件、範囲、およびネストされたモデルの関連付けを使用します。
www.thoughtbot.com/projects/squirrel/
SQL ビューまたはストアド プロシージャの使用を妨げているレポート固有の要素はありますか?
ある特定のプロジェクトでは、データベース内の名前付きビューとして SQL クエリ (非常に複雑な場合があります) を作成し、
YourModel.connection.select_all(query)
データを引き戻します。これは最適なアプローチではありません。改善策を模索したいと思います。
残念ながら、あなたが示唆したように、レール内で複雑なデータベースベースのレポートを計算するためのサポートはかなり制限されているようです.
複雑なクエリに必要な表現力が ActiveRecord に欠けていることがわかった場合は、ORM にDataMapperまたはSequelを使用することを検討してください。ActiveRecord からの切り替えはおそらく決定ではありませんが、少なくとも調査する価値はあるでしょう。