ユーザーの習慣や活動を追跡しますか? -Django
質問
私は数ヶ月前にプロジェクトに取り組んでいましたが、実装する必要がありました 賞システム. 。 sに似ていますTackoverflowのバッジシステム. バッジ
私はそれを可能な限り最善の方法で実装していなかったかもしれません、そして、私はあなたの言うことがどうなるか興味があります。
バッジ賞を受賞するために必要なユーザーアクティビティを追跡する良い方法は何でしょうか?
Stackoverflowのシステムは多くの情報を知る必要があり、また、物事を複雑にするデータ処理が多数あるという印象もあります。
私は、24に1、2回バッジを計算し、ログが保存されているか、バッジ計算に特化したサーバーがある可能性があると思います。
考え?
解決
私はあなたが思うほど複雑ではないと思います。ある種のユーザーアクティビティログでバッジを計算することは非常に疑わしい(技術的にはデータベース全体がユーザーアクティビティログであるが)。バッジのリストを見ると、SQL Selectクエリを実行しても実装できないものは何も表示されません。
クエリの一部はかなり複雑である可能性があり、ある種の派手なキャッシングメカニズムがあるかもしれませんが、バッチでバッジを計算する必要がある理由はありません。
他のヒント
一般に、バッジ/ポイントシステムは2つのことに基づいています。
興味深いイベントのアクティビティログ、これは事実上、必要に応じてゼロから再計算できるように、起こったものの紙登録簿の受領です。 (user_id、timestamp、event_id、event_detail)と同じくらい簡単です
ほとんどの場合、スコアリング/ポイントシステムを事前に設計したため、ユーザーを維持するカウンターが正確にわかります。今では、すべての詳細を含む大きなレコードを持っているのと同じくらい簡単です。 (user_id、Reply_points、login_points、last_login、thumbs_up_pointsなど)
これで、そのモデルオブジェクトにいくつかの簡単な方法を平手打ちし、必要に応じてポイントを管理/保存することができます。