データの分類 (AppFabric 1.1 キャッシュ)

Microsoft AppFabric 1.1 for Windows Server のキャッシュ機能を最大限に活用できるように、アプリケーションにデータをキャッシュする場合は適切なデータの種類を選択します。データの形式は多様で、アプリケーションのさまざまな層に存在する可能性があります。キャッシュを分散させることで、サービスの境界やセマンティクスの差異にとらわれることなく、多様な種類のデータの保管と取得を簡単に行えます。

多くのアプリケーションでは、データ インスタンスに対して 1 つのソースが使用されます。たとえば、アプリケーションのメイン データベースに格納されたデータには高度な一貫性と整合性が要求され、いくつかの手順を経てデータの各部分が一意であることが確認されます。中間層にあるデータやビジネス ロジックで操作されるデータは、通常はソース データのコピーであり、データの他の部分と組み合わせてプレゼンテーション層で使用されることもあります。キャッシュに適しているのは、このような中間層のコピーです。

データの多様な種類を理解することは、どの程度のキャッシュが可能かを定義する際に役立ちます。次の表に示すように、分散キャッシュに適したデータには、参照、アクティビティ、およびリソースという 3 つの種類があります。

データの種類 アクセス パターン

参照

共有読み取り

アクティビティ

排他的書き込み

リソース

共有、読み取りと書き込みの同時実行、多数のトランザクションによるアクセス

参照データ

参照データは、変更頻度の低いソース データのバージョンです。これは、元のデータの直接コピーであるか、複数のデータ ソースから集約されて変換されたものであるかのいずれかです。参照データは、構成された間隔で定期的に更新されるか、データが変更されたときに更新されます。

参照データは変更頻度が低いため、キャッシュには最適です。要求があるたびにコンピューティング リソースを使用して参照データを再集計して変換するのではなく、参照データをキャッシュに保存して、後で要求されたときに再利用することができます。複数のアプリケーションまたはユーザーの参照データをこのようにキャッシュすることで、アプリケーションのスケールとパフォーマンスを向上させることができます。

参照データの例として、航空便の運航スケジュールやカタログなどが挙げられます。たとえば、複数のアプリケーションやデータ ソースから製品情報を集約するカタログ アプリケーションを考えてください。カタログ データに対する最も一般的な操作は、共有読み取りの一種である閲覧です。カタログの閲覧操作では、大量の製品データを反復処理し、フィルタリングして個人別に設定し、選択されたデータを多数のユーザーに表示します。

閲覧操作には大量のリソースが必要になる可能性があるため、この種のカタログ データはキャッシュに最適です。キャッシュを使用しない場合、これらの操作によってデータ ソースに負荷がかかり、アプリケーションの応答時間やスループットに大きな影響が及ぶことがあります。

アプリケーションの近くにデータをキャッシュすることで、パフォーマンスとスケーラビリティを大幅に向上させることができます。この理由から、AppFabric ではローカル キャッシュ機能を提供しています。詳細については、「キャッシュ クライアントとローカル キャッシュ (AppFabric 1.1 キャッシュ)」を参照してください。

アクティビティ データ

アクティビティ データは、実行中のアクティビティによるビジネス トランザクションの一部として生成されます。データはビジネス トランザクションの一部として生成されます。その後、ビジネス トランザクションの終了に伴い、履歴またはログ情報としてデータ ソースに回収されます。

アクティビティ データの例としては、購入注文、アプリケーション セッションの状態、またはオンライン ショッピング カートなどが挙げられます。オンライン購入アプリケーションのショッピング カート データを考えてください。それぞれのショッピング カートは、それぞれのオンライン購入セッション専用であり、個別のデータ コレクションです。購入セッションの間、ショッピング カートはキャッシュされ、商品が選択されるたびに更新されます。ショッピング カートを表示して使用できるのは、その購入トランザクションのみです。チェックアウト時に決済が適用されると、ショッピング カートはキャッシュからデータ ソース アプリケーションへと回収され、別の処理が行われます。データ ソース アプリケーションによるビジネス トランザクションの処理が終了した後、ショッピング カートの情報は監査用や履歴用にログとして記録されます。

購入セッションがアクティブな間は、ショッピング カートにアクセスして読み取りアクティビティと書き込みアクティビティの両方を実行できますが、共有は行われません。アクティビティ データへの排他的アクセスは、分散キャッシュに適しています。

分散キャッシュでアクティビティ データを格納する場合のスケール要件は、大量の個別のデータ コレクションを処理できることと、これらのコレクションに影響する操作がサポートされることです。アプリケーションの高度なスケーラビリティに対応するために、このようなデータ コレクションはキャッシュ クラスターで分散する必要があります。

データ コレクションは共有されないので、データの個別のコレクションを分散キャッシュに分散させ、別のキャッシュ ホストに格納することができます。キャッシュ ホストを追加して分散キャッシュを動的に拡大することによって、アプリケーションは需要の増大に対応できます。

AppFabric キャッシュ 機能を使用すると、個別のデータ コレクションのそれぞれに対応するリージョンを作成できます。リージョンを使用すると、データ コレクションの作業で豊富なタグベースの操作を実行できます。詳細については、「タグベースのメソッド」を参照してください。

AppFabric では ASP.NET Web アプリケーションのセッションの状態を管理することもできます。詳細については、「方法: セッション状態プロバイダーの構成 (XML)」を参照してください。

リソース データ

参照 (共有読み取り) データとアクティビティ (排他的書き込み) データはどちらもキャッシュに適しています。しかし、すべてのアプリケーション データがこれら 2 つのカテゴリに該当するわけではありません。共有され、同時に読み取りと書き込みが行われ、多数のトランザクションによってアクセスされるデータもあります。そのようなデータを、リソース データと呼びます。

リソース データの例として、ユーザー アカウントやオークションの出品などが挙げられます。たとえば、オークションの出品を考えてください。オークションの出品には、商品の説明と現在の入札情報 (現在の入札価格、入札者など) が含まれます。入札情報は短期的で、入札ごとに一意であり、多数のユーザーが同時にアクセスして読み取り操作や書き込み操作を実行します。ビジネス ロジックはリソース データの近くにキャッシュされます。

一般に、リソース データは追跡のためにオンライン トランザクション処理 (OLTP) データ ソースに格納され、パフォーマンスの向上とデータ ソースのコンピューティング リソースの解放のためにアプリケーション層にキャッシュされます。オークションの例では、入札データを 1 台のコンピューターにキャッシュすることでパフォーマンスを向上させることができますが、大規模なオークションの場合、キャッシュが 1 つでは必要なスケーラビリティや可用性を提供できません。そのため、一部の種類のデータを区別して、分散キャッシュ内の複数のキャッシュに複製することができます。ただし、一部の種類のデータが共有されて同時に更新されているため、クラスター全体でのキャッシュの一貫性を保つ必要があります。

スケーラビリティを最適化するために、リソース データをできるだけ拡大し、リージョンの使用を制限します。リージョンを使用する場合は、データを複数のリージョンに設定して、そのデータをキャッシュ クラスター内に分散できるようにします。

AppFabric では、オプティミスティックとペシミスティックの同時実行操作の両方をサポートしています。詳細については、「同時実行モデル (AppFabric 1.1 キャッシュ)」を参照してください。

関連項目

概念

AppFabric キャッシュの物理アーキテクチャ図 (AppFabric 1.1 キャッシュ)
AppFabric キャッシュの論理アーキテクチャ図 (AppFabric 1.1 キャッシュ)

  2012-03-05