ヘッダーをスキップ
Oracle® Coherence開発者ガイド
リリース3.6.1
B61368-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

11 キャッシュの構成

この章では、キャッシュ構成デプロイメント・ディスクリプタでのキャッシュ構成手順の詳細を説明します。ディスクリプタで使用できるすべての要素を網羅したリファレンスについては、付録B「キャッシュ構成の要素」を参照してください。また、キャッシュの作成および理解に役立つ多彩なキャッシュ構成サンプルについては、第15章「キャッシュの構成例」を参照してください。

この章は次の各項で構成されています。

概要

キャッシュは、キャッシュ構成デプロイメント・ディスクリプタで構成されます。Coherenceのデフォルトでは、クラスパスで最初に検出されたcoherence-cache-config.xmlデプロイメント・ディスクリプタのロードが試みられます。Coherenceのcoherence.jarにはサンプルのcoherence-cache-config.xmlファイルがあります。別のcoherence-cache-config.xmlファイルを使用するには、そのファイルをクラスパスに配置し、coherence.jarライブラリの前にそのファイルがロードされるようにする必要があります。そうしないと、サンプルのキャッシュ構成デプロイメント・ディスクリプタが使用されます。キャッシュ構成デプロイメント・ディスクリプタを指定するためのその他の方法については、「キャッシュ構成ファイルの指定」を参照してください。

キャッシュ構成ディスクリプタでは、アプリケーション・コードに依存せずにキャッシュを定義できます。実行時に、アプリケーションではディスクリプタで定義された名前を使用してキャッシュを参照し、キャッシュのインスタンスを取得します。それによって、キャッシュの定義に依存することなくアプリケーション・コードを作成できるようになります。この方法では、キャッシュ定義の変更時にアプリケーション・コードを変更する必要がありません。また、キャッシュ定義の再利用性が最大限に高められます。

キャッシュ構成ディスクリプタのDocument Type Definition(DTD)は、cache-config.dtdファイルです。このファイルは、coherence.jarファイルのルートにあります。キャッシュ構成デプロイメント・ディスクリプタは、<caching-scheme-mapping>要素と<caching-schemes>要素という2つの主要要素で構成されます。これらの要素の詳細は、この章で後述します。これらの要素は、キャッシュ・スキームの定義、およびキャッシュ・スキームにマップされるキャッシュ名の定義に使用されます。

キャッシュ・マッピングの定義

キャッシュ・マッピングでは、キャッシュ名がキャッシュ・スキーム定義にマップされます。このマッピングによって、アプリケーションと基礎となるキャッシュ定義が、ある程度分離されます。この分離により、アプリケーション・コードを変更せずに、キャッシュの実装を必要に応じて変更できるようになります。キャッシュ・マッピングは、基礎となるキャッシュ・スキーム定義に適用される初期化パラメータの設定にも使用できます。

また、<cache-scheme-mapping>ノード内の<cache-mapping>要素を使用して定義されます。キャッシュ・マッピングは必要な数だけ作成できます。キャッシュ・マッピングには、キャッシュ名とキャッシュ名のマップ先のスキーム名を含める必要があります。<cache-mappings>要素の詳細なリファレンスについては、「cache-mapping」を参照してください。

1対1のキャッシュ・マッピングの使用方法

1対1のキャッシュ・マッピングでは、個別のキャッシュ名がキャッシュ・スキーム定義にマップされます。アプリケーションでキャッシュを使用するには、マッピングで指定されたとおりの名前で指定する必要があります。例11-1では、キャッシュ名exampledistributedというスキーム名の分散キャッシュ・スキーム定義にマップする、単一キャッシュのマッピングを作成します。

例11-1 1対1のキャッシュ・マッピングのサンプル

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>example</cache-name>
         <scheme-name>distributed</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>

   <caching-schemes>
      <distributed-scheme>
         <scheme-name>distributed</scheme-name>
         ...

キャッシュ名パターン・マッピングの使用方法

キャッシュ名パターン・マッピングを使用すると、アプリケーションでキャッシュ名を指定する際にパターンを使用できます。パターンは、アスタリスク(*)ワイルド・カードを使用して構築されます。キャッシュ名パターンを使用することで、アプリケーションでキャッシュの正確な名前を認識する必要がなくなります。例11-2では、キャッシュ・マッピングを2つ作成します。最初のマッピングでは、ワイルドカード(*)を使用して、任意のキャッシュ名をdistributedというスキーム名の分散キャッシュ・スキーム定義にマップします。2番目のマッピングでは、キャッシュ名パターンaccount-*account-distributedというスキーム名のキャッシュ・スキーム定義にマップします。

例11-2 キャッシュ名パターン・マッピングのサンプル

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>*</cache-name>
         <scheme-name>distributed</scheme-name>
      </cache-mapping>
      <cache-mapping>
         <cache-name>account-*</cache-name>
         <scheme-name>account-distributed</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>

   <caching-schemes>
      <distributed-scheme>
         <scheme-name>distributed</scheme-name>
         ...
      </distributed-scheme>
      <distributed-scheme>
         <scheme-name>account-distributed</scheme-name>
         ...
      </distributed-scheme>
      ...
      

最初のマッピングでは、アプリケーションでのキャッシュの作成時に任意の名前が使用可能であり、その名前がdistributedというスキーム名のキャッシュ・スキーム定義にマップされます。2番目のマッピングでは、アプリケーションでキャッシュ名を指定する際に、パターンを使用する必要があります。この例の場合は、名前の前に接頭辞account-を付ける必要があります。たとえば、アプリケーションでキャッシュ名としてaccount-overdueを指定し、account-distributedというスキーム名のキャッシュ・スキーム定義を使用します。

マッピングにおける初期化パラメータの指定

キャッシュ・マッピングでは、基礎となるキャッシュ・スキーム定義のプロパティをオーバーライドする初期化パラメータを使用できます。一般には、初期化パラメータの使用により、キャッシュ・スキーム定義の再利用が促進されます。その場合、同一のキャッシュ・スキーム定義に複数のキャッシュ名がマップされますが、それぞれのマッピングで必要に応じてキャッシュのプロパティがオーバライドされます。

初期化パラメータは、<init-params>ノードの<init-param>要素を使用して定義されます。<init-param>要素には、<param-name>要素と<param-value>要素を含める必要があります。パラメータは必要な数だけ指定できます。<init-param>要素の詳細なリファレンスについては、「init-param」を参照してください。

例11-3では、同じキャッシュ・スキーム定義にマップされるキャッシュ・マッピングが2つ作成されます。ただし、最初のマッピングでは基礎となるキャッシュ・スキーム定義のback-size-limitプロパティがオーバーライドされ、2番目のマッピングでは基礎となるキャッシュ・スキーム定義の構成に従ってback-size-limitが使用されます。

例11-3 キャッシュ・マッピングの初期化パラメータ

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>*</cache-name>
         <scheme-name>distributed</scheme-name>
         <init-params>
            <init-param>
               <param-name>back-size-limit</param-name>
               <param-value>8MB</param-value>
            </init-param>
         </init-params>
      </cache-mapping>
      <cache-mapping>
         <cache-name>account-*</cache-name>
         <scheme-name>distributed</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>
   ...

キャッシュ・スキーム定義におけるキャッシュ・スキーム・プロパティの構成方法の詳細は、「キャッシュ・スキーム・プロパティの使用方法」を参照してください。

キャッシュ・スキームの定義

キャッシュ・スキームは、アプリケーションで使用可能なキャッシュの定義に使用されます。キャッシュ・スキームによって宣言メカニズムが指定されます。これにより、キャッシュを使用するアプリケーションに依存せずにキャッシュを定義できるようになります。そのため、アプリケーションでキャッシュを定義する必要がなくなり、アプリケーションのコードを変更せずにキャッシュを変更できるようになります。キャッシュ・スキームにより、多数のアプリケーションで同一のキャッシュ定義が使用可能となり、キャッシュ定義の再利用も促進されます。

キャッシュ・スキームは<caching-schemes>要素で定義されます。キャッシュ・タイプ(分散、レプリケーションなど)ごとに、対応するスキーム要素と、そのタイプのキャッシュ定義に使用されるプロパティがあります。キャッシュ・スキームはネストも可能であり、ニア・キャッシュのように高度にカスタマイズされた複合キャッシュも使用できます。<caching-schemes>要素の詳細なリファレンスについては、「caching-schemes」を参照してください。

この項では、最も使用頻度の高いキャッシュ・タイプのキャッシュ・スキームの定義方法を説明しますが、Coherenceで用意されているすべてのキャッシュ・タイプを網羅しているわけではありません。その他のキャッシュ・タイプのキャッシュ・スキームを定義する手順については、このガイド全体を通して、そのスキームがサポートする機能の説明の一部として記載されています。この項は、次のトピックで構成されています。

分散キャッシュ・スキームの定義

<distributed-scheme>要素は、分散キャッシュの定義に使用されます。分散キャッシュでは、分散(パーティション)キャッシュ・サービス・インスタンスを使用します。キャッシュ構成ファイルで、分散キャッシュを必要な数だけ定義できます。<distributed-scheme>要素の詳細なリファレンスについては、「distributed-scheme」を参照してください。

例11-4では、スキーム名としてdistributedを使用し、キャッシュ名exampleにマップされる、基本的な分散キャッシュを定義します。<autostart>要素は、キャッシュ・サーバー・ノード上でサービスを開始するために、trueに設定されます。

例11-4 分散キャッシュ定義のサンプル

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>example</cache-name>
         <scheme-name>distributed</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>

   <caching-schemes>
      <distributed-scheme>
         <scheme-name>distributed</scheme-name>
         <backing-map-scheme>
            <local-scheme/>
         </backing-map-scheme>
         <autostart>true</autostart>
      </distributed-scheme>
   </caching-schemes>
</cache-config>

この例では、分散キャッシュによって、バッキング・マップとして使用されるローカル・キャッシュが定義されます。バッキング・マップの構成の詳細は、第12章「記憶域およびバッキング・マップの実装」を参照してください。

レプリケーション・キャッシュ・スキームの定義

<replicated-scheme>要素は、レプリケーション・キャッシュの定義に使用されます。レプリケーション・キャッシュでは、レプリケーション・キャッシュ・サービス・インスタンスを使用します。キャッシュ構成ファイルで、レプリケーション・キャッシュを必要な数だけ定義できます。<replicated-scheme>要素の詳細なリファレンスについては、「replicated-scheme」を参照してください。

例11-5では、スキーム名としてreplicatedを使用し、キャッシュ名exampleにマップされる、基本的なレプリケーション・キャッシュを定義します。<autostart>要素は、キャッシュ・サーバー・ノード上でサービスを開始するために、trueに設定されます。

例11-5 レプリケーション・キャッシュ定義のサンプル

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>example</cache-name>
         <scheme-name>replicated</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>

   <caching-schemes>
      <replicated-scheme>
         <scheme-name>replicated</scheme-name>
         <backing-map-scheme>
            <local-scheme/>
         </backing-map-scheme>
         <autostart>true</autostart>
      </replicated-scheme>
   </caching-schemes>
</cache-config>

この例では、レプリケーション・キャッシュによって、バッキング・マップとして使用されるローカル・キャッシュが定義されます。バッキング・マップの構成の詳細は、第12章「記憶域およびバッキング・マップの実装」を参照してください。

オプティミスティック・キャッシュ・スキームの定義

<optimistic-scheme>要素は、オプティミスティック・キャッシュの定義に使用されます。オプティミスティック・キャッシュでは、オプティミスティック・キャッシュ・サービス・インスタンスを使用します。キャッシュ構成ファイルで、オプティミスティック・キャッシュを必要な数だけ定義できます。<optimistic-scheme>要素の詳細なリファレンスについては、「optimistic-scheme」を参照してください。

例11-6では、スキーム名としてoptimisticを使用し、キャッシュ名exampleにマップされる、基本的なオプティミスティック・キャッシュを定義します。<autostart>要素は、キャッシュ・サーバー・ノード上でサービスを開始するために、trueに設定されます。

例11-6 オプティミスティック・キャッシュ定義のサンプル

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>example</cache-name>
         <scheme-name>optimistic</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>

   <caching-schemes>
      <optimistic-scheme>
         <scheme-name>optimistic</scheme-name>
         <backing-map-scheme>
            <local-scheme/>
         </backing-map-scheme>
         <autostart>true</autostart>
      </optimistic-scheme>
   </caching-schemes>
</cache-config>

この例では、オプティミスティック・キャッシュによって、バッキング・マップとして使用されるローカル・キャッシュが定義されます。バッキング・マップの構成の詳細は、第12章「記憶域およびバッキング・マップの実装」を参照してください。

ローカル・キャッシュ・スキームの定義

<local-scheme>要素は、ローカル・キャッシュの定義に使用されます。一般にローカル・キャッシュは、別のキャッシュ・スキームにネストされます(たとえば、ニア・キャッシュのフロント層として)。このため、この要素は、<caching-schemes><distributed-scheme><replicated-scheme><optimistic-scheme><near-scheme><versioned-near-scheme><overflow-scheme><read-write-backing-map-scheme><versioned-backing-map-scheme>および<backing-map-scheme>の各要素のサブ要素として使用できます。<local-scheme>要素の詳細なリファレンスについては、「local-scheme」を参照してください。

例11-7では、スキーム名としてlocalを使用しキャッシュ名exampleにマップされる、ローカル・キャッシュを定義します。


注意:

一般にローカル・キャッシュは、キャッシュ・サーバー上のスタンドアロン・キャッシュとしては使用されません、また、キャッシュ構成ファイル内のキャッシュ定義がローカル・キャッシュのみの場合、キャッシュ・サーバーは起動しません。

例11-7 ローカル・キャッシュ定義のサンプル

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
  <caching-scheme-mapping>
    <cache-mapping>
      <cache-name>example</cache-name>
      <scheme-name>local</scheme-name>
    </cache-mapping>
  </caching-scheme-mapping>

  <caching-schemes>
    <local-scheme>
      <scheme-name>local</scheme-name>
      <eviction-policy>LRU</eviction-policy>
      <high-units>32000</high-units>
      <low-units>10</low-units>
      <unit-calculator>FIXED</unit-calculator>
      <expiry-delay>10ms</expiry-delay>
    </local-scheme>
  </caching-schemes>
</cache-config>

Coherence*Extendを使用する場合は、『Oracle Coherenceクライアント・ガイド』の、C++クライアント用ローカル・キャッシュの構成と.NETクライアント用ローカル・キャッシュの構成に関する項を参照してください。

ローカル・キャッシュの拡大の制御

表11-0に示すように、<local-scheme>には、キャッシュの拡大を制御するためのオプションのサブ要素がいくつか用意されています。たとえば、サブ要素<low-units>および<high-units>は、キャッシュのサイズを制限します。キャッシュが最大許容サイズに達すると、指定されたエビクション・ポリシー(<eviction-policy>)に従って削除対象エントリが決定され、指定されたより小さなサイズに戻ります。エントリおよびサイズの制限は、該当するスキームの単位換算カリキュレータ(<unit-calculator>)で計算される単位で測定されます。

ローカル・キャッシュに関しては、キャッシュ構成要素<expiry-delay>を使用して、キャッシュに保持されていたアイテムが期限切れになるまでの時間長を構成します。クライアント・スレッドは、キャッシュへのアクセス時にこれらのアクションを開始します。そのため、<expiry-delay>時間に達していても、クライアント・スレッドがキャッシュにアクセスするまではアクションが開始されません。たとえば、<expiry-delay>値が10秒(10s)に設定されていて、クライアントがキャッシュにアクセスするのが15秒後である場合は、15秒後に有効期限切れになります。


注意:

エビクションを実行するのはクライアント・スレッドであり、バックグラウンド・スレッドではありません。さらに、expiry-delayのパラメータ(cExpiryMillis)は整数として定義し、ミリ秒単位で表します。そのため、最大期間はInteger.MAX_VALUE(2147483647)ミリ秒数を超えることはできず、おおよそ24日間になります。

ニア・キャッシュ・スキームの定義

<near-scheme>要素は、ニア・キャッシュの定義に使用されます。ニア・キャッシュは、2つのキャッシュで構成される複合キャッシュです。<front-scheme>要素は、ローカル(フロント層)キャッシュの定義に使用され、<back-scheme>要素は(バック層)キャッシュの定義に使用されます。一般に、ローカル・キャッシュはフロント層に使用されますが、フロント層は、Javaオブジェクトをベースとするスキーム(<class-scheme>を使用)およびJVMヒープ以外をベースとするキャッシュ(<external-scheme>または <paged-external-scheme>を使用)も使用できます。バック層のキャッシュは、<back-scheme>要素によって記述されます。バック層キャッシュには、任意のクラスタ・キャッシュ・タイプおよび任意のスタンドアロンのキャッシュ・タイプを使用できます。<near-scheme>要素の詳細なリファレンスについては、「near-scheme」を参照してください。

例11-8では、スキーム名としてnearを使用し、キャッシュ名exampleにマップされるニア・キャッシュを定義します。フロント層はローカル・キャッシュでバック層は分散キャッシュです。


注意:

ニア・キャッシュはキャッシュ・クライアントに使用され、一般にキャッシュ・サーバーでは使用されません。また、キャッシュ構成ファイル内のキャッシュ定義がニア・キャッシュのみの場合、キャッシュ・サーバーは起動しません。

例11-8 ニア・キャッシュ定義のサンプル

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>example</cache-name>
         <scheme-name>near</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>

   <caching-schemes>
      <near-scheme>
         <scheme-name>near</scheme-name>
         <front-scheme>
            <local-scheme/>
         </front-scheme>
         <back-scheme>
            <distributed-scheme>
               <scheme-name>near-distributed</scheme-name>
               <backing-map-scheme>
                  <local-scheme/>
               </backing-map-scheme>
               <autostart>true</autostart>
            </distributed-scheme>
         </back-scheme>
      </near-scheme>
   </caching-schemes>
</cache-config>

Coherence*Extendを使用する場合は、『Oracle Coherenceクライアント・ガイド』の、C++クライアント用ニア・キャッシュの定義と.NETクライアント用ニア・キャッシュの定義に関する項を参照してください。

ニア・キャッシュの無効化方針

<invalidation-strategy>は、ニア・キャッシュのオプションのサブ要素です。フロント層およびバック層のオブジェクトの同期を保つ方法を指定するには、無効化方針が使用されます。ニア・キャッシュでは、バック・キャッシュの特定のイベントをリスニングして、フロント・キャッシュ内のエントリを自動的に更新または無効化するように構成できます。ニア・キャッシュでは、バック・キャッシュの他のプロセスによって変更されたフロント・キャッシュのエントリの無効化方針が4通りあり、バック・キャッシュで実装されるインタフェースに応じた方針を選択できます。

表11-1は、これらの無効化方針についてまとめたものです。無効化方針、およびリードスルー/ライトスルー方式の詳細は、第13章「リードスルー、ライトスルー、ライトビハインド・キャッシュおよびリフレッシュアヘッドのキャッシュ」を参照してください。

表11-1 ニア・キャッシュの無効化方針

方針名 説明

None

無効化イベントを一切リスニングしないようにキャッシュに指示します。この方針は、現在値ではない可能性があるデータの使用がビジネス要件で許可されており、パフォーマンスおよびスケーラビリティがともに低い場合に最適です。データの鮮度は、フロント・キャッシュの十分に要約されたエビクション・ポリシーを使用することによって保証できます。

Present

現在フロント・キャッシュに存在しているアイテムのみに関連するバック・キャッシュのイベントがニア・キャッシュでリスニングされるように指定します。この方針は、フロント・キャッシュの各インスタンスに、フロント・キャッシュの他のインスタンス(スティッキーなデータ・アクセス・パターンなど)に関連するデータの個別のサブセットが含まれている場合に最適です。

All

バック・キャッシュのすべてのイベントがニア・キャッシュでリスニングされるように指定します。この方針は、フロント・キャッシュの様々なインスタンス間に著しい重複が存在する、読取り頻度の高い段階的なアクセス・パターンに最適です。

Auto

キャッシュ統計に基づいてPresent方針とAll方針がニア・キャッシュで自動的に切り替えられるように指定します。


スキームの継承の使用方法

スキームの継承を使用すると、別のスキームを継承し、継承したスキームのプロパティを必要に応じて選択的にオーバーライドすることにより、キャッシュ・スキームを作成できます。こうした柔軟性によって、キャッシュ・スキームの管理が容易になり、キャッシュ・スキームの再利用が促進されます。キャッシュ・スキーム定義で<scheme-ref>要素を使用して、継承元のキャッシュ・スキームの名前を指定します。

例11-9では、同等の分散キャッシュ・スキームを2つ作成します。最初の定義では、バッキング・マップに使用されるローカル・スキームを明示的に構成します。2番目の定義では、<scheme-ref>要素を使用して、LocalSizeLimitedという名前のローカル・スキームを継承します。

例11-9 キャッシュ・スキーム参照の使用方法

<distributed-scheme>
  <scheme-name>DistributedInMemoryCache</scheme-name>
  <service-name>DistributedCache</service-name>
  <backing-map-scheme>
    <local-scheme>
      <eviction-policy>LRU</eviction-policy>
      <high-units>1000</high-units>
      <expiry-delay>1h</expiry-delay>
    </local-scheme>
  </backing-map-scheme>
</distributed-scheme>
<distributed-scheme>
  <scheme-name>DistributedInMemoryCache</scheme-name>
  <service-name>DistributedCache</service-name>
  <backing-map-scheme>
    <local-scheme>
      <scheme-ref>LocalSizeLimited</scheme-ref>
    </local-scheme>
  </backing-map-scheme>
</distributed-scheme>

<local-scheme>
  <scheme-name>LocalSizeLimited</scheme-name>
  <eviction-policy>LRU</eviction-policy>
  <high-units>1000</high-units>
  <expiry-delay>1h</expiry-delay>
</local-scheme>

例11-9では、最初の分散スキーム定義の方が簡潔ですが、2番目の定義ではLocalSizeLimitedスキームを複数のスキームで容易に再利用できます。例11-10では、複数のスキームで同じLocalSizeLimitedベース定義が再利用され、expiry-delayプロパティがオーバーライドされます。

例11-10 複数のキャッシュ・スキームでのスキーム継承の使用

<distributed-scheme>
  <scheme-name>DistributedInMemoryCache</scheme-name>
  <service-name>DistributedCache</service-name>
  <backing-map-scheme>
    <local-scheme>
      <scheme-ref>LocalSizeLimited</scheme-ref>
    </local-scheme>
  </backing-map-scheme>
</distributed-scheme>

<replicated-scheme>
  <scheme-name>ReplicatedInMemoryCache</scheme-name>
  <service-name>ReplicatedCache</service-name>
  <backing-map-scheme>
    <local-scheme>
      <scheme-ref>LocalSizeLimited</scheme-ref>
      <expiry-delay>10m</expiry-delay>
    </local-scheme>
  </backing-map-scheme>
</replicated-scheme>

<local-scheme>
  <scheme-name>LocalSizeLimited</scheme-name>
  <eviction-policy>LRU</eviction-policy>
  <high-units>1000</high-units>
  <expiry-delay>1h</expiry-delay>
</local-scheme>

キャッシュ・スキーム・プロパティの使用方法

キャッシュ・スキーム・プロパティは、必要に応じて特定のアプリケーションにおけるキャッシュの動作を変更します。それぞれのキャッシュ・スキーム・タイプには、そのキャッシュで有効な独自のプロパティ・セットがあります。キャッシュのプロパティは、キャッシュ・スキーム定義内で、それぞれのプロパティの要素を使用して設定されます。各キャッシュ・スキーム・タイプでサポートされるすべてのプロパティのリファレンスについては、付録B「キャッシュ構成の要素」を参照してください。

キャッシュ・スキーム定義で別の値が明示的に指定されている場合を除き、キャッシュ・プロパティでは多くの場合にデフォルト値が使用されます。クラスタ・キャッシュ(分散、レプリケーションおよびオプティミスティック)では、それぞれのキャッシュ・サービス定義の指定に従ってデフォルト値が使用されます。キャッシュ・サービスは、オペレーション・デプロイメント・ディスクリプタで定義されます。オペレーション・オーバーライド・ファイルを使用してプロパティ値を変更することはできますが、一般にキャッシュのプロパティはキャッシュ・スキーム定義で設定されます。

例11-11では、サービス・スレッド・カウント・プロパティとリクエスト・タイムアウト・プロパティを設定する基本的な分散キャッシュ・スキームを作成します。さらに、バッキング・マップに使用されるローカル・スキームによって、ローカル・キャッシュのサイズを制限するプロパティが設定されます。キャッシュ・スキーム・プロパティを使用する手順については、このガイド全体を通して、そのスキームがサポートする機能の説明の一部として記載されています。

例11-11 キャッシュ・プロパティの設定

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>
   <caching-scheme-mapping>
      <cache-mapping>
         <cache-name>example</cache-name>
         <scheme-name>DistributedInMemoryCache</scheme-name>
      </cache-mapping>
   </caching-scheme-mapping>

   <caching-schemes>
      <distributed-scheme>
         <scheme-name>DistributedInMemoryCache</scheme-name>
         <service-name>DistributedCache</service-name>
         <thread-count>4</thread-count>
         <request-timeout>60s</request-timeout>
         <backing-map-scheme>
            <local-scheme>
               <scheme-ref>LocalSizeLimited</scheme-ref>
            </local-scheme>
         </backing-map-scheme>
      </distributed-scheme>

      <local-scheme>
         <scheme-name>LocalSizeLimited</scheme-name>
         <eviction-policy>LRU</eviction-policy>
         <high-units>1000</high-units>
         <expiry-delay>1h</expiry-delay>
      </local-scheme>
   </caching-schemes>
</cache-config>

パラメータ・マクロの使用方法

キャッシュ構成デプロイメント・ディスクリプタでは、パラメータ・マクロがサポートされており、カスタム・コーディングを最小限に抑えて、一般的に使用される属性をクラス・コンストラクタ・パラメータの構成時に指定することができます。マクロは次に示すように、引用符や空白を使用しないで、中カッコで囲んで入力する必要があります。

表11-2では、指定可能なパラメータ・マクロについて説明しています。

表11-2 キャッシュ構成のパラメータ・マクロ

<param-type> <param-value> 説明

java.lang.String

{cache-name}

現在のキャッシュ名をコンストラクタ・パラメータとして渡すために使用します。例:

<class-name>com.mycompany.cache.CustomCacheLoader
</class-name> 
<init-params> 
  <init-param> 
    <param-type>java.lang.String</param-type>  
    <param-value>{cache-name}</param-value> 
  </init-param> 
</init-params>

java.lang.ClassLoader

{class-loader}

現在のクラス・ローダーをコンストラクタ・パラメータとして渡すために使用します。例:

<class-name>com.mycompany.cache.CustomCacheLoader
</class-name>
<init-params> 
  <init-param> 
    <param-type>java.lang.ClassLoader</param-type>
    <param-value>{class-loader}</param-value> 
  </init-param> 
</init-params>

com.tangosol.net.BackingMapManagerContext

{manager-context}

現在のBackingMapManagerContextオブジェクトをコンストラクタ・パラメータとして渡すために使用します。例:

<class-name>com.mycompany.cache.CustomCacheLoader
</class-name>
<init-params> 
  <init-param> 
    <param-type>
      com.tangosol.net.BackingMapManagerContext
    </param-type>
    <param-value>{manager-context}</param-value> 
  </init-param> 
</init-params>

{scheme-ref}

local-scheme

<class-scheme><local-scheme>または<file-scheme>によって定義されるオブジェクトを、指定した<scheme-name>値でインスタンス化して、コンストラクタ・パラメータとして使用します。例:

<class-scheme>
  <scheme-name>dbconnection</scheme-name>
  <class-name>com.mycompany.dbConnection</class-name> 
  <init-params> 
    <init-param> 
      <param-name>driver</param-name> 
      <param-type>String</param-type>
      <param-value>org.gjt.mm.mysql.Driver
      </param-value>
    </init-param> 
    <init-param> 
      <param-name>url</param-name> 
      <param-type>String</param-type>
      <param-value>
         jdbc:mysql://dbserver:3306/companydb
      </param-value>
    </init-param> 
    <init-param> 
      <param-name>user</param-name> 
      <param-type>String</param-type>  
      <param-value>default</param-value> 
    </init-param> 
    <init-param> 
      <param-name>password</param-name>
      <param-type>String</param-type>
      <param-value>default</param-value> 
    </init-param> 
  </init-params> 
</class-scheme> 
... 
<class-name>com.mycompany.cache.CustomCacheLoader
</class-name>
  <init-params> 
    <init-param> 
      <param-type>{scheme-ref}</param-type>  
      <param-value>dbconnection</param-value> 
    </init-param> 
  </init-params>

{cache-ref}

キャッシュ名

指定したキャッシュ名に対するNamedCache参照を取得するために使用します。次の構成例を参照してください。

<cache-config> 
  <caching-scheme-mapping>
    <cache-mapping>
      <cache-name>boston-*</cache-name>  
      <scheme-name>wrapper</scheme-name>
      <init-params>
        <init-param> 
          <param-name>delegate-cache-name</param-name>
          <param-value>london-*</param-value>
        </init-param> 
      </init-params> 
    </cache-mapping>
    <cache-mapping> 
      <cache-name>london-*</cache-name>
      <scheme-name>partitioned</scheme-name>
    </cache-mapping> 
  </caching-scheme-mapping>
  <caching-schemes> 
    <class-scheme> 
      <scheme-name>wrapper</scheme-name> 
      <class-name>
         com.tangosol.net.cache.WrapperNamedCache
      </class-name> 
      <init-params> 
        <init-param> 
          <param-type>cache-ref</param-type>
          <param-value>{delegate-cache-name}
          </param-value>
        </init-param> 
        <init-param> 
          <param-type>string</param-type>
          <param-value>{cache-name}</param-value> 
        </init-param> 
      </init-params> 
    </class-scheme>
    <distributed-scheme> 
      <scheme-name>partitioned</scheme-name>
      <service-name>partitioned</service-name>
      <backing-map-scheme> 
        <local-scheme> 
          <unit-calculator>BINARY</unit-calculator>
        </local-scheme> 
      </backing-map-scheme>
      <autostart>true</autostart> 
    </distributed-scheme> 
  </caching-schemes> 
</cache-config>

CacheFactory.getCache("london-test")のコールによって、パーティション化された標準のキャッシュ参照が生成されます。一方、CacheFactory.getCache("boston-test")のコールでは、delegate-cache-nameパラメータの値をlondon-testにして、CacheFactory.getCache("london-test")のコールによって返されるNamedCacheに委任するWrapperNamedCacheのインスタンスを構築します。