インテリジェントキャッシングへの道

自分でキャッシュを構築してみませんか?

多くのアプリケーション開発者は、データをキャッシュしないか、せいぜい読み取り専用の静的データの一部をキャッシュします。 一部の開発者はさらに一歩進んで、ユーザー リクエスト間の「セッション状態」にデータをキャッシュします。 ただし、これらのアプローチはすべて、アプリケーションのすべてのユーザーとデータをキャッシュして共有するというキャッシュの基本的な利点を見逃しています。 また、このタイプのキャッシングは、(古いデータによる) キャッシュ内のデータ整合性の問題を回避するために、非常にインテリジェントでなければなりません。

インテリジェントなキャッシュによってアプリケーションのパフォーマンスを向上させることに真剣に取り組んでいる場合、購入するか構築するかという明らかな問題があります。 独自のキャッシング ソリューションを構築する場合、多くの欠点があります。

何よりもまず、アプリケーションを開発するというビジネス目標から重要な開発リソースを奪い、簡単に購入できるインフラストラクチャの開発にそれらを投入しているということです。 XNUMX つ目は、適切でインテリジェントなキャッシュ ソリューションを開発するには多くの労力が必要であり、複雑な同時実行と同期のシナリオを処理できる高性能キャッシュを設計および開発するための適切な専門知識がチームにない可能性があることです。 最後に、たとえ専門知識があったとしても、ビジネスの焦点からあなたを遠ざける何かに多大な労力を費やしています.

最終的に商用キャッシング ソリューションの購入を決定した場合でも、アプリケーションに必要なすべてのキャッシングおよびクラスタリング機能が提供されていることを確認する必要があります。 現在、単一サーバー構成から始めている場合でも、アプリケーションと共に分散およびクラスター化された環境に拡張できるキャッシュ ソリューションが必要です。

アプリケーションのパフォーマンスを向上

キャッシュを使用する最も明白な利点は、アプリケーションのパフォーマンスが劇的に向上することです。 キャッシュとは、頻繁に使用されるアプリケーションの近くにデータ (読み取り専用とトランザクションの両方) を格納するプロセスです。 通常、このデータは (オブジェクトとして) メモリに格納されます。これは、データベースなどの他の場所からデータを取得するよりも、メモリからデータを取得する方がはるかに効率的であるためです。

高価なハードウェアのアップグレードなしでデータベース サーバーをスケールアップ

ほとんどのアプリケーションは、書き込み操作よりも多くの読み取り操作を実行します (通常は 70:30 または 80:20 の比率)。 また、アプリケーション サーバー層にデータをキャッシュすることで、アプリケーションは読み取り操作のためのデータベース トリップを減らすことができます。 これにより、データベース サーバーの負荷が大幅に軽減されます。

これには XNUMX つの明らかな利点があります。 XNUMX つ目は、データベース サーバーが書き込み操作をはるかに高速に実行できるようになったことです。 次に、データベース サーバーは、高価なハードウェアのアップグレードを必要とせずに、はるかに多くのクライアントを処理できるようになりました。 通常、データベース サーバーは、ほとんどの N 層アプリケーションの展開で最も高価なハードウェアであるため、ハードウェア アップグレードの節約額は通常非常に大きくなります。

トランザクション データをキャッシュする

従来、Web アプリケーションまたは Web サービスは、データをキャッシュしないか、「セッション状態」などのプリミティブ メカニズムを使用して読み取り専用データをキャッシュしていました。 このアプローチには XNUMX つの問題があります。 XNUMX つ目は、ミッション クリティカルなアプリケーションが使用するデータのほとんどが読み取り専用ではなくトランザクション データであるため、読み取り専用データをキャッシュしても、アプリケーションのパフォーマンスを十分に向上させることができないということです。 次に、この読み取り専用データでさえユーザー間で共有されず、実際のアプリケーションでは数千または数万に上ります。 その結果、これらのアプリケーションのほとんどは、必要なデータのほとんどをデータベース サーバーに転送することになり、パフォーマンスの問題が発生します。

一方、 NCache アプリケーションが静的データとトランザクション データの両方をキャッシュに保持できるようにします。 また、このキャッシュされたデータは、サーバー クラスター内のすべてのユーザーが利用できます。 NCache 次に、キャッシュされたデータが古くならず、アプリケーションがデータベース内のデータを更新するたびに常に更新されるようにするための多くのメカニズムを提供します。 NCache また、アプリケーションの外部からデータを更新する必要がある状況を処理することもできます。 これは、「依存関係」の概念によって実現されます。

関係を管理する

実際のアプリケーションのほとんどは、トランザクションだけでなく多層関係を含む複雑なデータを処理します。 つまり、データをキャッシュする場合は、その関係も処理する必要があります。 キャッシュは、ロード、挿入、更新、または削除操作の場合にそれらを管理するために、これらの関係を認識している必要があります。

NCache オブジェクト間の関係を管理するため、XNUMX つのオブジェクトを変更すると、関連するすべてのオブジェクトが変更または無効化されます。 同様に、アプリケーションが最初に XNUMX つのオブジェクトをロードし、それをキャッシュに入れ、後でその関連オブジェクトをロードしたとしても、それはわかります。 NCache これらの関係について NCache それらを管理することができます。

キャッシュされたオブジェクト間の関係だけでなく、キャッシュされたオブジェクトと外部リソース間の関係も管理できます。 NCache この目的のために、キーとファイルベースの依存関係を提供します。 また、これらの依存関係は、.NET Remoting を使用してリモートで呼び出すことができます。 これにより、キャッシュを常に最新の状態に保つことができます。

クラスタ内のデータ変更の同期

多くの Web アプリケーションと Web サービスは、多数のユーザーを処理するためにサーバー クラスター/サーバー ファーム構成で実行されます。 これらの環境では、キャッシュがクラスター化されていない場合、あるサーバーからのキャッシュへの更新は他のサーバーで利用できません。 その結果、キャッシュされたデータの一貫性が失われ、古くなり、データの整合性の問題が発生します。

NCache は、クラスタ全体のすべてのデータ変更を同期する強力なクラスタ キャッシュです。 特定の要件を満たすのに役立つクラスタリング トポロジの豊富なセットを提供します。 クラスターでは、ミラーリングされたキャッシュ、複製されたキャッシュ、パーティション化されたキャッシュ、およびパーティション化されたレプリカ キャッシュのトポロジから選択できます。 これらについては、次のセクションで詳しく説明します。 NCache クラスタリング トポロジ。

NCache データの整合性の問題を防ぐために、キャッシュへの同時更新がシリアル化された方法で処理されるようにします。 さらに、キャッシュへのすべての変更がクラスター内のすべてのノードですぐに利用できるようになります。 これにより、アプリケーションは処理できます NCache クラスター全体で XNUMX つの論理キャッシュとして。

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。