19

ユーザーのアクティビティを保存しようとしていますが、保存場所がわかりません。データベースは非常に大きくなるため、オプションではないと思います。FacebookやDropboxなどのサイトが特定のユーザーのすべてのアクティビティをどのように記憶しているかを知りたい. また、これはセッション固有ではなくユーザー固有であるため、セッションに保存することはできません。

あなたの提案を手伝ってください。

4

2 に答える 2

10

必要に応じて、通常はDjango Admin Logsそのようなアクティビティに使用できます。

通常、Django は、既存のレコードの作成、更新、削除などの管理アクションを追跡します。次の構造があります。

from django.contrib.admin.models import LogEntry

LogEntry.objects.log_action(
                            user_id = ...,
                            content_type_id = ...,
                            object_id = ...,
                            object_repr = ....,
                            change_message = ...,
                            action_flag = ...
                           )

私は自分のシステムでそれをロガーとして使用し、すべてのアクションを追跡しています。通常、Django は管理フォームに対して行われた挿入、更新、または削除操作をログに記録し、私は手書きのビューとフォーム アクションをログに記録します。また、シグナルを使用してログイン/ログアウトなどのユーザー操作をキャッチできます。

新しいアクション フラグを定義しました。Django は 3 つのフラグを使用します。1 つは挿入用、2 つは更新用、3 つは削除用です。アクション フラグを使用してそのリストを拡張しました。

これを使用する利点は、前述したように、デフォルトの Django 管理フォームや、これらのフォームを使用して行ったアクションを処理する必要がないことです。

于 2013-02-21T12:04:02.987 に答える
7

アクティビティストリーム仕様の実装であるdjango-activity-streamを見たいと思うかもしれません。これにより、アクションのリストがデータベースに保存され、興味がある場合は、フォローしているユーザー/エンティティが Facebook に似たものを提供できるようになります。

ただし、おっしゃるように、これは膨大なデータ セットになる可能性があり、従来の単一データベース アプローチでは多すぎる可能性があります。Twitter のようなサイトがどのように対処しているかはわかりませんが、非常に迅速にスケールアップする予定がない限り、標準的なデータベース アプローチはおそらくしばらく続くでしょう。

于 2013-02-21T22:59:32.010 に答える