0

アプリケーションの各ユーザーが特定のページに最後にアクセスした日付を追跡したいと考えています。これを行う 1 つの方法は、データベースの users テーブルに列を追加し、ユーザーがページにアクセスするたびに更新することです。別の方法は、このデータを各ユーザーの Memcached に保存することです。

私は Memcached ソリューションを支持していることに気付きましたが、正当とは思えない理由があります。

  • users テーブルにはすでに多くの列があり、不必要に列を追加したくありません。
  • マイグレーションなどを作成してデータベースにテーブルを追加するよりも、Memcached を使用する方が簡単です。

では、ここで適切な選択は何ですか? なぜ?

4

1 に答える 1

1

Memcachedは、ライフサイクルが制限された任意のデータを保存するために使用できますが、データベースの代替として使用しないでください。

適切な選択は、この特定のビジネスロジック用に分離されたデータベーステーブルを作成することです。この機能は多くの書き込みを導入するため、他のコア機能(ユーザーテーブルなど)を持つ可能性のある他のテーブルをロックしないことが重要です。当然、この機能はデータベースI/Oに影響します。この場合、Memcachedは、バッチプロセスで処理されるデータのキューを保存するのに理想的です。

Memcachedキューの非常に基本的な概要

Memcachedのプロトコルに従って、アプリケーションは影響を受けるユーザーのキューリストを簡単に維持し、特定のユーザーに関連するメタデータを設定/置換できます。

/* Application handling Memcached Queue */

[ User is in Queue ? ]________ no 
 |                             |
 | yes                        [ Append user to queue list ]
 |                             |
[ Replace user data ]         [ Set user date ]

毎日または1時間ごとのプロセスで、キューリストをダイジェストし、ユーザーのメタデータをデータベースに書き込むことができる必要があります。

于 2012-11-05T18:46:55.290 に答える