分散キャッシュ これは、アプリケーションのパフォーマンスとスケーラビリティを向上させ、速度を落とすことなく極端なトランザクション負荷を処理するための強力な方法であるため、非常に人気があります。 .NETとJavaアプリケーションの両方が毎日ますますそれを使用しています。
しかし、分散キャッシュで人々が直面するXNUMXつの課題は、マッピングと保存の方法です。 リレーショナルデータ 分散キャッシュであるHashTable(キー、値)ペアリングストレージ内。 今日のほとんどのキャッシュは、これを処理するメカニズムを提供していません。 今日は、ASP.NETキャッシュが提供するデータ依存性について説明します。 NCache 初日から組み込まれています。
ASP.NETキャッシュと同じように、 NCache, データの依存関係 XNUMXつのキャッシュされたアイテム間の分散キャッシュの依存関係を指定できます。 キャッシュされたアイテムAは、キャッシュされたアイテムBに依存します。また、Bが更新されたり、分散キャッシュから削除されたりすると、Aは自動的に削除されます。 これにより、データベース内のAとBの間に参照整合性制約がある場合、それが分散キャッシュでも尊重されることが保証されます。 AがBに依存し、BがCに依存するカスケードデータ依存関係を指定することもできます。次に、Cを更新または削除すると、AとBの両方が削除されます。 データ依存関係の簡単な例を次に示します。
NCache 詳細 リレーショナルデータの管理 データ依存性ドキュメント
データ依存関係を使用すると、分散キャッシュにXNUMX対XNUMX、XNUMX対多、および多対多の関係を作成できます。 さまざまなシナリオを処理する方法は次のとおりです。
XNUMX対XNUMXの関係
Aは持っている 1対1の Bを使用します。データ依存性なしでBを追加します。 次に、Aを追加し、Bのデータ依存関係を指定します。AとBの両方に相互依存関係がある場合は、後でBを更新するときに、Aへの依存関係を指定します。
XNUMX 対多の関係
Aは持っている 1対多数 Bを使用します。データ依存性なしで最初にAを追加します。 次に、XNUMXつ以上のBアイテムを追加し、それらすべてに対して指定されたAのデータ依存関係を指定します。 このように、Aが更新または削除された場合、すべてのBはによって自動的に削除されます。 NCache.
多対多の関係
AとBは互いに多対多です。 XNUMXつ以上のAを追加します。 次に、XNUMXつ以上のBを追加し、適切なAのデータ依存関係を指定します。 次に、戻ってAを更新し、適切なBのデータ依存関係を指定します。
これは、キャッシュにXNUMX対XNUMXの依存関係を作成する簡単な例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public static void CreateDependencies(ICache _cache) { try { string keyB = "objectB-1000"; Object objB = new Object(); string keyA = "objectA-1000"; Object objA = new Object(); // Initializing cacheItems var itemOne = new CacheItem(objA); var itemTwo = new CacheItem(objB); // Adding objA dependent on ObjB itemOne.Dependency = new KeyDependency(keyB); //Adding items to cache _cache.Add(keyB, itemTwo); _cache.Add(keyA, itemOne); // Removing "objB" automatically removes “objA” as well _cache.Remove(keyB); _cache.Dispose(); } catch (Exception e) { throw; } } |
そう、 NCache データ依存関係を利用して、分散キャッシュ内のデータ関係を指定できます。 完全に機能する60日間の試用版をダウンロードする NCache Enterprise 自分で試してみてください。
ブログを共有してくれてありがとう、それはデータ依存性についてよく説明されました、それはこのブログを読むことに時間を費やす価値がありました。
こんにちはIqbal、imairnftoveの記事を共有していただきありがとうございます。 分散キャッシュについて教えてください。 異なる(物理)フロントエンドサーバーとDBサーバーで維持されるキャッシュを意味しますか?フロントエンドサーバー(FS)1がローカルキャッシュC1を維持するシナリオがあります。 FS2は独自のローカルキャッシュC2を維持しています。 FS3は独自のローカルcacheC3を維持しています。 グローバルキャッシュGCを備えたDBサーバーがあります。 すべてのローカルキャッシュC1、C2、C3はGCに依存する必要があります。 GCが更新されると、すべてのローカルキャッシュが無効になります。 私の意見では、他のシステムのメモリを制御できないため、これがどのように機能するのかわかりませんか?これに光を当ててください。ThanksKhusi
NCache アウトプロセスのメモリ内分散キャッシュです。 実行時にキャッシュノードのクラスターを形成し、複数のアプリケーションに分散させることができます。
ここではどのように NCache シナリオを処理します:
DBサーバーまたは専用キャッシュサーバー上にグローバルクラスター化キャッシュ(たとえば、クラスター内に2つのノードを持つ)を作成し、各フロントエンドサーバーFS1、FS2、およびFS3で「クライアントキャッシュ」機能を利用できます。 NCache クライアントキャッシュは、で実行されているローカルキャッシュです NCache クライアントボックス(Web/Appサーバーは NCache クライアント)、クラスター化されたキャッシュから最も頻繁にアクセスされるクライアントボックスにデータのコピーをローカルに保持します。
同じデータに対する後続の呼び出しは、ローカルクライアントキャッシュから直接提供され、ネットワークトリップを節約することでパフォーマンスを向上させます。クライアントキャッシュは、本質的にインプロセスにすることもできます。
データ同期は、によって自動的に管理されます NCache。 グローバルクラスター化キャッシュの更新の場合、クライアントキャッシュはアイテムを自動的に無効化/削除し、その後のアクセス時にクラスター化キャッシュから更新されたコピーを取得します。
こんにちはイクバル、
有益な記事を共有していただきありがとうございます。 分散キャッシュについて教えてください。 異なる(物理的な)フロントエンドサーバーとDBサーバーで維持されるキャッシュを意味しますか?
シナリオがあります–フロントエンドサーバー(FS)1はローカルキャッシュC1を維持しています。 FS2は独自のローカルキャッシュC2を維持しています。 FS3は独自のローカルcacheC3を維持しています。 グローバルキャッシュGCを備えたDBサーバーがあります。 すべてのローカルキャッシュC1、C2、C3はGCに依存する必要があります。 GCが更新されると、すべてのローカルキャッシュが無効になります。 私の意見では、他のシステムのメモリを制御できないため、これがどのように機能するのかわかりません。
これに少し光を当ててください。
感謝
クシ
それは本当に素晴らしくて役立つ情報です。 この有益な情報を私たちと共有してくれてうれしいです。 このようにお知らせください。 共有していただきありがとうございます。