私は人のマスターテーブルのようなものを持っています。私のDjangoアプリのすべては、直接または長いfkチェーンを介して、1人以上のPeopleに関連しています。また、私のすべてのモデルには、標準の簿記フィールド「created_at」と「updated_at」があります。主に生のSQL順序付けの目的で、「last_active_at」というフィールドをPersonテーブルに追加したいと思います。
特定の関連モデルを作成または編集すると、それらのオブジェクトの新しいタイムスタンプが生成されます。どういうわけかPerson.'last_active_at'をそれらの値で更新する必要があります。機能的には、これを達成するのはそれほど難しいことではありませんが、アプリへの過度のストレスが心配です。
私の2つの最大の懸念事項は、実際のdbフィールドに制限されていることです(@propertyとしてPersonテーブルに関数を割り当てることはできません)。これらの「アクティビティ」モデルの1つは、一度に大量のデータを散発的に受信する、私が制御できない外部データソース。
私の最初の考えは、post_saveフックを「activity」モデルに追加することでした。それでも私の最善の選択肢のように思えますが、それらについては何も知りません。
私の2番目の考えは、その日のアクティビティを実行し、それらのモデルを夜間に更新するある種のスクリプトを作成することでした。しかし、私の雇用主は「生きている」ストリームです。
私の3番目の考えは、post_saveアルゴリズムを変更して、「updated_at」が個人の「last_active_at」から30分未満であるかどうかを確認し、trueの場合は個人を更新しないことでした。
私の考えはスケーラブルな方向に向かっていますか?私が追求すべき他のアプローチはありますか?