Postgresql バックエンドを備えた Web アプリケーションがあります。簡単にするために、Web サーバー ログを含む単一のテーブルとしましょう (実際には、テーブルと参照が混在しています)。私のユーザーはこのテーブルからのさまざまなデータに対してさまざまなニーズを持っているため、オンデマンドで独自のレポートを実行できる Web フロントエンドを実装することを考えていました (つまり、バックグラウンド ジョブを開始して実行します...一部のクエリは遅くなる可能性があります。同じテーブル、集計などをサブ選択するインスタンス)。
このようなカスタム レポート ツールを実装するためのベスト プラクティスはありますか?
考えられる解決策として、次のシナリオを考えていました。
- ユーザーがクエリを作成し、必要なフィールドを選択すると、SQL クエリに変換されます
- SQL は、バックグラウンド ジョブとして実行される「report_randomname479472984」のような名前の新しいテーブルにクエリ結果を選択し、レポートに関するメタ情報を含むレポート テーブルにテーブル名を追加することさえあります。
- Web インターフェイスは、名前が「report_」で始まるすべてのテーブルを使用可能なレポートとして一覧表示するか、使用可能な report_ テーブルに関するメタ情報テーブルをクエリします。
- ユーザーがレポートを表示すると、Web ページは html テーブルとして構築され、データベースから利用可能な各列は html テーブルの列になります。
これは、SQL バックエンドから動的なオンデマンド レポートを作成する適切な方法ですか? これを行う際に注意する必要があることはありますか (SQL インジェクションを除く)。
各 report_に常に行が存在し、メタテーブル内のすべての行が実際に有効な report_テーブルを指すように、メタテーブルの整合性を強制する方法はありますか?