第4章 Data Grid キャッシュの設定

Data Grid を使用すると、プログラムを使用してキャッシュするプロパティーとオプションを定義できます。

宣言型設定は、Data Grid スキーマに準拠する XML ファイルを使用します。一方、プログラムによる設定は Data Grid API を使用します。

ほとんどの場合、キャッシュ定義の開始点として宣言型設定を使用します。実行時に、プログラムでキャッシュを設定して、設定を調整したり、追加のプロパティーを指定したりできます。しかし、Data Grid は柔軟性があるため、宣言的、プログラムによる、またはこの 2 つの組み合わせを選択できます。

4.1. 宣言型設定

宣言型設定はスキーマに準拠し、XML または JSON 形式のファイルで定義されます。

以下の例は、Data Grid 設定の基本構造を示しています。

<infinispan>
   <!-- Defines properties for all caches within the container and optionally names a default cache. -->
   <cache-container default-cache="local">
      <!-- Configures transport properties for clustered cache modes. -->
      <!-- Specifies the default JGroups UDP stack and names the cluster. -->
      <transport stack="udp" cluster="mycluster"/>
      <!-- Configures a local cache. -->
      <local-cache name="local"/>
      <!-- Configures an invalidation cache. -->
      <invalidation-cache name="invalidation"/>
      <!-- Configures a replicated cache. -->
      <replicated-cache name="replicated"/>
      <!-- Configures a distributed cache. -->
      <distributed-cache name="distributed"/>
   </cache-container>
</infinispan>

4.1.1. キャッシュテンプレート

Data Grid を使用すると、キャッシュ設定の作成に使用できるテンプレートを定義できます。

たとえば、以下の設定にはキャッシュテンプレートが含まれます。

<infinispan>
   <!-- Specifies the cache named "local" as the default. -->
   <cache-container default-cache="local">
      <!-- Adds a cache template for local caches. -->
      <local-cache-configuration name="local-template">
         <expiration interval="10000" lifespan="10" max-idle="10"/>
      </local-cache-configuration>
   </cache-container>
</infinispan>

設定テンプレートを使用した継承

設定テンプレートは、他のテンプレートから継承して設定を拡張し、上書きすることもできます。

注記

キャッシュテンプレートの継承は階層的です。親から継承する子設定テンプレートの場合は、親テンプレートの後に追加する必要があります。

以下は、テンプレートの継承例です。

<infinispan>
   <cache-container>
     <!-- Defines a cache template named "base-template". -->
      <local-cache-configuration name="base-template">
         <expiration interval="10000" lifespan="10" max-idle="10"/>
      </local-cache-configuration>
      <!-- Defines a cache template named "extended-template" that inherits settings from "base-template". -->
      <local-cache-configuration name="extended-template"
                                 configuration="base-template">
         <expiration lifespan="20"/>
         <memory max-size="2GB" />
      </local-cache-configuration>
   </cache-container>
</infinispan>
重要

設定のテンプレートの継承は、property などの複数の値を持つ要素について加算されます。結果として作成される子設定は親設定から値がマージされます。

たとえば、親設定のマージの <property value_x="foo" /> は子設定の <property value_y="bar" /> とマージされ、結果として <property value_x="foo" value_y="bar" /> になります。

4.1.2. キャッシュ設定ワイルドカード

ワイルドカードを使用してキャッシュ定義と設定テンプレートを照合することができます。

<infinispan>
  <cache-container>
    <!-- Uses the `*` wildcard to match any cache names that start with "basecache". -->
    <local-cache-configuration name="basecache*">
      <expiration interval="10500" lifespan="11" max-idle="11"/>
    </local-cache-configuration>
    <!-- Adds local caches that use the "basecache*" configuration. -->
    <local-cache name="basecache-1"/>
    <local-cache name="basecache-2"/>
  </cache-container>
</infinispan>
注記

キャッシュ名が複数のワイルドカードと一致する場合は、Data Grid は例外を出力します。

4.1.3. 複数の設定ファイル

Data Grid は、複数のファイルに設定を分割する XML 包含 (XInclude) をサポートします。

<infinispan xmlns:xi="http://www.w3.org/2001/XInclude">
    <cache-container default-cache="cache-1">
        <!-- Includes a local.xml file that contains a cache configuration. -->
        <xi:include href="local.xml" />
    </cache-container>
</infinispan>

含まれるフラグメントにスキーマを使用する場合は、infinispan-config-fragment-12.1.xsd スキーマを使用します。

<local-cache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="urn:infinispan:config:12.1 https://infinispan.org/schemas/infinispan-config-fragment-12.1.xsd"
             xmlns="urn:infinispan:config:12.1"
             name="mycache"/>
注記

Data Grid 設定は、XInclude 仕様の最小サポートのみを提供します。たとえば、xpointer 属性、xi:fallback 要素、テキスト処理、またはコンテンツネゴシエーションは使用できません。

参照資料

XInclude 仕様