PostgreSQLデータベースを備えたDjangoWebサイトがあります。「フラット」アイテムテーブル用のDjangoアプリとモデルがあり、多くのレコードが定期的に挿入され、1か月あたり最大数百万の挿入が行われます。これらのレコードを使用して、ファクトテーブルとディメンションテーブルのスタースキーマ(最初はDjango models.pyでもモデル化されています)に自動的にデータを入力して、レコードに対して複雑なクエリを効率的に実行し、Djangoサイトにそれらのデータを表示したいと思います。 。
2つの主なオプションが次々と登場します。
1)PostgreSQLトリガー:データベースを直接構成して、レコードの作成または更新に基づいて、適切な行をファクトテーブルとディメンションテーブルに挿入します。トリガーの後にPython/PL-pgsqlと行レベルを使用することもできます。長所:Djangoの外部の入力で動作します。より効率的であることが期待されるかもしれません。短所:ビジネスロジックを別の場所に分割します。挿入のトリガーは、他の入力ソースでは予期されない場合があります。
2)Django Signals:Signals機能を使用して、組み込みのシグナルdjango.db.models.signals.post_saveを使用して、レコードの作成または更新時に挿入を実行します。長所:構築と保守が簡単です。短所:新しい入力ソースをサポートするには、コードを繰り返すか、Djangoサイト/アプリ環境内にとどまる必要があります。
Djangoの組み込みシグナルは、ファクトテーブルとディメンションテーブルを維持するための方法であると私は考えていますか?または、見逃されている他の重要なオプションはありますか?