1

アプリケーションに AppFabric キャッシングを使用することを検討していますが、目的を達成する方法が不明です。1 つの場所に 1 つの SQL クラスターがあります。世界中に 200 以上のアプリケーション サーバーがあります。アプリケーション サーバーが SQL オブジェクトにすばやくアクセスできるように、これらの各場所に AppFabric キャッシュ クラスターを配置したいと考えています。迅速なアクセスに加えて、SQL クラスターにアクセスできない場合にデータにアクセスできるようにする必要があります。

データが変更されるように SQL クラスターを直接更新する HR アプリがあります。アプリケーション サーバーは、多くの場所で AppFabric キャッシュも更新します。このすべてのデータは同期を保つ必要があります。ここに私の質問があります:

  1. DB が変更された場合、キャッシュはどのように更新されますか? 私は SQLDependency が必要なものであることを読みましたが、変更があるとキャッシュ全体がフラッシュされ、再同期する必要があることも読みました。変更されたオブジェクトを更新のために複数のキャッシュに送信したいだけです。

  2. SQL クラスターにアクセスできず、キャッシュが要求されたオブジェクトを見つけられない場合はどうなりますか?

  3. 私がやろうとしていることを行うためのより良い方法はありますか? これは、パフォーマンスよりも SQL オブジェクトの可用性に関するものです。MS Sync Framework を調査しようとしています...

4

2 に答える 2

1

AppFabric は SqlCacheDependency のようなキャッシュ依存オブジェクトをサポートしていませんが、代わりに AppFabric のリードスルー/ライトビハインド キャッシュ プロバイダーを作成することができます。このプロバイダーは SQL Server データベースの構造を認識しているため、データベースから情報を取得し、更新時にデータベース更新できます。アプリケーション サーバーは AppFabric キャッシュを更新するため、キャッシュには常に最新バージョンのデータが含まれ、キャッシュは更新をデータベースに非同期的に書き込みます。

バックエンド データベースを更新する HR アプリに対処するために、存続時間の値に基づいて期限切れになるようにキャッシュ内のアイテムを構成できます。キャッシュへの後続の要求により、キャッシュされたバージョンが更新されます。

于 2013-03-12T15:48:43.043 に答える
0

以前にこれを投稿したことは知っていますが、キャッシュの依存関係を利用してメインのデータソースと同期できるキャッシュ ソリューションがあります。SQL 依存関係であるあなたの状況の適切なケースは、NCache で利用できます。NCache を使用すると、DB と同期するための複数のオプションを使用できます。そのようなオプションが「リードスルー」になると。基本的に、DB が変更されると、依存オブジェクトはキャッシュから自動的に削除され、リードスルーが有効になっている場合、キャッシュ サーバーはオブジェクトの新しいコピーを自動的に取得します。データベース同期の詳細については、こちらをご覧ください。

于 2013-05-28T06:28:12.110 に答える