2009-06-26 15 views
4

私は数分おきにデバイスからメッセージを受信するアプリケーションを持っています。特定のデバイスの最後の10個のメッセージを要求するクライアントもあります。データを先にキャッシュする必要があります

私はデータベース飽和に苦しんでおり、このリストをデバイスでキャッシュしたいと考えています。基本的な前提は、メッセージがデバイスから受信されると、メッセージを受信するプロセッサは、そのデバイスのキャッシュを無効にすることである。

私の質問は、キャッシュを無効にしてから次のクライアントが接続するときに再構築する必要があるかどうかです。また、デバイスプロセッサでキャッシュを先に再構築する必要があります。デバイスプロセッサは、現在のキャッシュを取り出して、最後のエントリをポップし、新しいエントリを追加し、新しい結果をキャッシュすることができる。

これは、それが依存している可能性があります、私はこの分野で人々の経験を聞いていただければ幸いですが感謝します。

答えて

1

私は「プリフェッチ」メカニズムについて説明していますが、名前を付けるのに役立つと思います。 :)

私はこの特定の分野で豊富な経験はありませんが、データをプリフェッチしてクライアントが望んでいることを確実に予測でき、測定可能で望ましいパフォーマンス向上を得ることができると思えばそのために、それを進めて、それを渦巻きにしてください。

キャッシングのすべての髪型を念頭に置いてください。基礎となるデータなどが変更された場合、どのように無効にされますか?幸い!

+0

ありがたいことに、キャッシュを無効にするイベントは1つだけあり、新しいメッセージの受信です。これは比較的簡単な変更です。 –

0

私は聞いていますが、それは本当に依存しています。多くの多くの変数。

私がいたのであれば、キャッシュを無効にして次のクライアントに再構築させてもらうことにしましたが、ややシンプルなので再構築することはできますが、どちらを試しても、

ライブクライアントの負荷を現実的にシミュレートする方法を考えて、ライブサーバーを使いこなすことができたらうれしいです。

1

クライアントが平均して特定のデバイスのメッセージを取得した回数を数値化するまで、この質問に答えることはできません。青い月の中で、特定のデバイスにメッセージが1回だけ照会された場合は、各クライアントの要求でメッセージキャッシュを消去しても問題ありません。ただし、特定のデバイスのメッセージキューが何回もクエリされると、デバイス同期のプリエンプティブキャッシングが最適なオプションになる可能性があります。デバイスの同期があまり頻繁でない場合、クライアントは要求します。

負荷に応じて適応的にキャッシュするシステムを作成するのが最適かもしれません。特定のデバイスのメッセージキューが頻繁に照会されると、デバイスの同期時にキャッシュがリフレッシュされます。デバイス・メッセージ・キューがめったに照会されない場合は、クライアント要求時にキャッシュをリフレッシュします。

関連する問題