Web サイトの SQL ベースのアクティビティ フィードのパフォーマンスを改善する方法が必要です。Heroku で Django を使用しています。
現在、Django ORM で汎用外部キーを使用してアクティビティ フィードを実装する Django アプリである actstream を使用しています。基本的に、すべてのアクションには、次のように、そのアクターと、それが作用している可能性のあるオブジェクトへの一般的な外部キーがあります。
アクション: (クレイ-俳優) が (スターバックスのアンドリューのレビュー-ターゲット)に (コメント-アクション オブジェクト) を書きました
規模を拡大するにつれ、非常に遅くなりました。これは、大きくてコストのかかる SQL 結合に依存しているため、理解できます。
少なくとも 2 つのオプションがあります。
- SQL データベースの上に Redis レイヤーを配置し、そこからアクティビティ フィードを取得します。
- Django ORM を回避し、生の SQL ですべてのクエリを実行してみてください。これにより、パフォーマンスが向上することがわかっています。
これらの 2 つのいずれか、またはその他のアイデアについて考えがある人は、ぜひ聞いてみたいと思います。