第13章 キャッシュストア


キャッシュストアは Red Hat JBoss Data Grid を永続データストアに接続します。キャッシュストアは以下の目的で使用されます。
  • キャッシュにコピーがない時にデータストアよりデータを取り込みます。
  • キャッシュのデータに加えられた変更をデータストアにプッシュします。
キャッシュストアは個別のキャッシュに関連付けされるため、同じキャッシュマネージャーを共有するキャッシュに異なるキャッシュストア設定を使用することができます。

13.1. ファイルシステムベースのキャッシュストア

Red Hat JBoss Data Grid には、ファイルシステムベースのキャッシュストアの 1 つである SingleFileCacheStore が含まれています。
SingleFileCacheStore は、単純なファイルシステムベースの実装であり、古くなったファイルシステムベースのキャッシュストアである FileCacheStore の代わりになるものです。
SingleFileCacheStore は、単一ファイルに、すべてのキーバリューペアと、それらの対応するメタデータ情報を保存します。データ検索のスピードを速めるために、すべてのキーとそれらの値およびメタデータの位置をメモリーに保存します。そのため、単一ファイルキャッシュストアを使用すると、キーのサイズと保存されるキーの数量に応じて、必要なメモリーが若干増加します。そのため、SingleFileCacheStore は、キーが大きすぎる場合のユースケースでは推奨されません。
メモリー消費量を減らすために、キャッシュストアのサイズを、ファイルに保存するエントリーの固定数に設定することができます。ただし、これは Infinispan がキャッシュとして使用される場合にのみ機能します。Infinispan がこのように使用されると、Infinispan にないデータは、正式なデータストアから再計算されるか、または再度取り込まれ、Infinispan キャッシュに保存される可能性があります。この制限がある理由は、エントリーの最大数にいったん達すると、キャッシュストアの古いデータが削除されるため、Infinispan が正式なデータストアとして使用される場合、このユースケースでは望ましくないデータ損失が発生する可能性があります。
SingleFileCacheStore には制限があるため、実稼働環境では制限内での使用が可能です。適切なファイルロックがなく、データが破損する原因となるため、共有ファイルシステム (NFS や Windows の共有など) 上では使用しないでください。また、ファイルシステムは本質的にトランザクションではないため、トランザクションコンテキストでキャッシュが使用されると、コミットフェーズ中にファイルが障害を書き込む原因となります。

13.1.1. 単一ファイルストアの設定 (リモートクライアントサーバーモード)

以下は、Red Hat JBoss Data Grid のリモートクライアントサーバーモードにおける単一ファイルストアの設定の例です。

手順13.1 単一ファイルストアの設定

  1. キャッシュ名の追加

    キャッシュの名前を指定するため、local-cache 属性の name パラメーターが使用されます。
    <local-cache name="default">
    
    Copy to Clipboard Toggle word wrap
  2. キャッシュごとの統計

    statistics がコンテナーレベルで有効にされている場合、statistics 属性を false に設定することにより、キャッシュごとの統計は、モニタリングを必要としないキャッシュについては選択的に無効にすることができます。
    <local-cache name="default" statistics="true">
    
    Copy to Clipboard Toggle word wrap
  3. file-store 要素を設定します。

    file-store 要素は、単一ファイルストアの設定情報を指定します。
    file-store 要素の name パラメーターが、ファイルストアの名前を指定するために使用されます。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore" />
    
    Copy to Clipboard Toggle word wrap
  4. passivation パラメーターの設定

    passivation パラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true" />
    
    Copy to Clipboard Toggle word wrap
  5. purge パラメーターを設定します。

    purge パラメーターは、起動時にキャッスストアがパージされるかどうかを指定します。 このパラメーターで有効な値は truefalse です。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true"
                    purge="true" />
    
    Copy to Clipboard Toggle word wrap
  6. shared パラメーターを設定します。

    shared パラメーターは、複数のキャッシュストアインスタンスがキャッシュストアを共有する場合に使用されます。複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするため、このパラメーターを設定することができます。このパラメーターに有効な値は truefalse です。ただし、shared パラメーターは file-store には推奨されません。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true"
                    purge="true"
                    shared="false" />
    
    Copy to Clipboard Toggle word wrap
  7. relative-to パラメーター内のディレクトリーパスを指定します。

    relative-to プロパティーは、file-store がデータを保存するディレクトリーです。これは名前付きのパスを定義するために使用されます。
    path プロパティーは、データが保存されるファイルの名前です。これは、完全パスを決定するために relative-to プロパティーの値に追加される相対パス名です。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true"
                    purge="true"
                    shared="false"
                    relative-to="{PATH}"
                    path="{DIRECTORY}" />
    </local-cache>
    
    Copy to Clipboard Toggle word wrap
  8. 最大エントリー数の設定

    maxEntries パラメーターは、許可されるエントリーの最大数を指定供します。無制限のエントリーを許可するためのデフォルト値は -1 です。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true"
                    purge="true"
                    shared="false"
                    relative-to="{PATH}"
                    path="{DIRECTORY}"
                    max-entries="10000"/>
    </local-cache>
    
    Copy to Clipboard Toggle word wrap
  9. fetch-state パラメーターの設定

    fetch-state パラメーターは、true に設定されている場合に、クラスターへ参加する際に永続状態を取り込みます。複数のキャッシュストアがチェーン化されている場合、その内の 1 つのみでこのプロパティーを有効にできます。共有キャッシュストアが使用されている場合、永続状態の転送は、データを提供する同じ永続ストアがそれを受信するだけなので意味をなしません。そのため、共有キャッシュストアが使用されている場合、キャッシュストアがこのプロパティーを true に設定している場合であっても、永続状態の転送を許可しません。クラスター化環境でのみこのプロパティーを true に設定することが推奨されます。このパラメーターのデフォルト値は false です。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true"
                    purge="true"
                    shared="false"
                    relative-to="{PATH}"
                    path="{DIRECTORY}"
                    max-entries="10000"
                    fetch-state="true"/>
    </local-cache>
    
    Copy to Clipboard Toggle word wrap
  10. Preload パラメーターの設定

    preload パラメーターは、true に設定されている場合に、キャッシュの起動時にキャッシュストアに保存されたデータをメモリーにロードします。ただし、このパラメーターを true に設定することにより、起動時間が増加するためパフォーマンスへの影響があります。このパラメーターのデフォルト値は false です。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true"
                    purge="true"
                    shared="false"
                    relative-to="{PATH}"
                    path="{DIRECTORY}"
                    max-entries="10000"
                    fetch-state="true"
                    preload="false"/>
    </local-cache>
    
    Copy to Clipboard Toggle word wrap
  11. シングルトンパラメーターの設定

    singleton パラメーターは、シングルトンストアのキャッシュストアを有効にします。SingletonStore は、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用される委譲するキャッシュストアです。ただし、singleton パラメーターは file-store には推奨されません。
    <local-cache name="default" statistics="true">
        <file-store name="myFileStore"
                    passivation="true"
                    purge="true"
                    shared="false"
                    relative-to="{PATH}"
                    path="{DIRECTORY}"
                    max-entries="10000"
                    fetch-state="true"
                    preload="false"
                    singleton="true"/>
    </local-cache>
    
    Copy to Clipboard Toggle word wrap

13.1.2. 単一ファイルストアの設定 (ライブラリーモード)

Red Hat JBoss Grid のライブラリーモードで、単一ファイルキャッシュストアを以下のように設定します。

手順13.2 ライブラリーモードでの単一ファイルストアの設定

singleFile 要素は、単一ファイルキャッシュストアを設定するために使用されます。infinispan.xml で以下を設定します。
  1. 名前の値を namedCache 要素に追加します。以下はこの手順の例になります。
    <namedCache name="writeThroughToFile">
    
    Copy to Clipboard Toggle word wrap
  2. persistence 要素で、passivation パラメーターを false に設定します。使用できる値は「true」と「false」です。
    <namedCache name="writeThroughToFile">
          <persistence passivation="false" />
    
    Copy to Clipboard Toggle word wrap
  3. singleFile 要素を使用して、単一ファイルの設定をセットアップします。
    • fetchPersistentState - true に設定されると、クラスターへ参加する時に永続状態が取り込まれます。複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアのみがこのプロパティーを true に設定できます。この値のデフォルトは false です。
    • ignoreModifications パラメーターは、キャッシュを変更する操作 (例: 配置、削除、消去、格納など) がキャッシュストアに影響を与えるかどうかを決定します。結果として、キャッシュストアは、キャッシュと同期が取れなくなります。
    • purgeOnStartup パラメーターは、初回起動時にキャッシュがパージされるかどうかを指定します。
    • shared パラメーターは、複数のキャッシュインスタンスがキャッシュストアを共有する場合に true に設定されます。これにより、複数のキャッシュインスタンスが同じ変更内容を個別に書き込むことを防ぐことができます。この属性のデフォルトは false です。ただし、shared パラメーターは file-store には推奨されません。
    • preload パラメーターは、キャッシュストアデータがメモリーにプリロードされ、起動後すぐにアクセス可能にするかどうかを設定します。これを true に設定する不利な点には、起動時間が増えることが挙げられます。この属性のデフォルト値は false です。
    • location パラメーターはファイルストアの場所を示します。
    • maxEntries パラメーターは、許可されるエントリーの最大数を指定します。無制限のエントリーの場合のデフォルト値は -1 です。
    • maxKeysInMemory パラメーターは、データのルックアップを迅速化を図るために使用されます。単一ファイルストアは、maxKeysInMemory パラメーターを使用して、キーのインデックスとファイル内のキーの場所を保持します。このパラメーターのデフォルト値は -1 です。
    <namedCache name="writeThroughToFile">
          <persistence passivation="false">
             <singleFile fetchPersistentState="true" 
                         ignoreModifications="false"
                         purgeOnStartup="false" 
                         shared="false"
                         preload="false"
                         location="/tmp/Another-FileCacheStore-Location"
                         maxEntries="100"
                         maxKeysInMemory="100">
             </singleFile>
          </persistence>
     </namedCache>
    
    Copy to Clipboard Toggle word wrap
  4. 非同期設定を行うには async 要素を追加します。
    • enabled パラメーターは、ファイルストアを非同期にするかどうかを決定します。
    • threadPoolSize パラメーターは、変更をストアに同時に適用するスレッドの数を指定します。このパラメーターのデフォルト値は 5 です。
    • flushLockTimeout パラメーターは、キャッシュストアに定期的にフラッシュする状態を保護するロックを取得するための時間を指定します。このパラメーターのデフォルト値は 1 です。
    • modificationQueueSize パラメーターは、非同期ストアの変更キューのサイズを指定します。基礎となるキャッシュストアがこのキューを処理するよりも速く更新される場合に、その期間において非同期ストアは同期ストアのように動作し、キューがさらに多くの要素を許可できるようになるまでブロックします。このパラメーターのデフォルト値は 1024 要素です。
    • shutdownTimeout パラメーターは、キャッシュストアを停止する時間を指定します。このパラメーターのデフォルト値は 25 秒です。
    <namedCache name="writeThroughToFile">
          <persistence passivation="false">
             <singleFile fetchPersistentState="true" 
                         ignoreModifications="false"
                         purgeOnStartup="false" 
                         shared="false"
                         preload="false"
                         location="/tmp/Another-FileCacheStore-Location"
                         maxEntries="100"
                         maxKeysInMemory="100">
                <async enabled="true" 
        	           threadPoolSize="500"
        	           flushLockTimeout="1"
    	           modificationQueueSize="1024"
    	           shutdownTimeout="25000"/>
            </singleFile>
          </persistence>
     </namedCache>
    
    Copy to Clipboard Toggle word wrap

13.1.3. FileCacheStore から SingleFileCacheStore へのデータ移行

Red Hat JBoss Data Grid 6.2 は、以前のバージョンの JBoss Data Grid とは異なる形式でデータを保存します。そのため、新しいバージョンの JBoss Data Grid は、古いバージョンで保存されたデータを読み込むことはできません。ローリングアップグレードを使用すると、旧バージョンの JBoss Data Grid で使用された形式で永続化されたデータを新しい形式にアップグレードすることができます。さらに、新たなバージョンの JBoss Data Grid は、永続性設定情報を別の場所に保存します。
ローリングアップグレードは、JBoss Data Grid インストールをサービスをシャットダウンせずにアップグレードするプロセスです。ライブラリーモードでは、JBoss Data Grid がライブラリーモードで実行されるノードのインストールを指します。JBoss Data Grid サーバーの場合は、サーバー側のコンポーネントを指します。このアップグレードは、ハードウェア変更または JBoss Data Grid のアップグレードなどのソフトウェアの変更のいずれかによって発生する場合があります。
ローリングアップグレードは JBoss Data Grid のライブラリーおよびリモートクライアントサーバーモードで利用できます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat