第5章 永続性


永続性により、外部(永続)ストレージエンジンは、Red Hat Data Grid が提供するメモリーストレージのデフォルトに補完できます。外部の永続ストレージは、以下のような理由で役に立ちます。

  • 永続性の向上メモリーは揮発性なので、キャッシュストアは情報ストアのライフサイクルをキャッシュに増やすことができます。
  • ライトスルー。アプリケーションと(カスタム)外部ストレージエンジンとの間のキャッシング層として Red Hat Data Grid を干渉します。
  • オーバーフローデータ。エビクションおよびパッシベーションを使用すると、メモリーに「ホット」データのみを保存し、ディスクに頻繁に使用されるデータをオーバーフローさせることができます。

永続ストアとの統合は、CacheLoader、CacheWriter、AdvancedCacheLoader、および AdvancedCacheWriter(以下のセクションで説明)の SPI により行われます。

これらの SPI は、以下の機能を許可します。

  • JSR-107 と連携します。CacheWriter および CacheLoader インターフェースは、JSR 107 のローダーとライターに似ています。これは、JCache 準拠のベンダー全体でポータブルストアを作成するのに非常に役立ちます。
  • 簡略化されたトランザクション統合。必要なロックはすべて Red Hat Data Grid により自動的に処理され、実装はストアへの同時アクセスを調整する必要はありません。同じキーで同時書き込みは行われませんが(使用中のロックモードによる)、実装側はストアでの操作が複数のスレッドから行われることを期待し、それに応じて実装のコーディングを行う必要があります。
  • 並列イタリケーション。複数のスレッドを持つストアのエントリーを繰り返し処理できるようになりました。
  • シリアライゼーションを削減します。これにより、CPU 使用率が少なくなります。新しい API は、保存されたエントリーをシリアライズ形式で公開します。エントリーがリモートから送信される唯一の目的のために永続ストレージから取得される場合、デシリアライズ(ストアからの読み取り時)をシリアライズし、(ワイヤへの書き込み時)にシリアライズする必要がなくなりました。これで、ストレージから直接読み取ってシリアライズされた形式に書き込みを行うことができます。

5.1. 設定

チェーンには(reader や writers)を保存できます。キャッシュの読み取り操作は、有効かつ null 以外の要素が見つかるまで、設定される順序で指定されたすべての CacheLoader を参照します。書き込みを実行すると、特定 のキャッシュ ライターに対して ignoreModifications 要素が true に設定されている場合を除き、すべてのキャッシュキャッシュライターが書き込まれます。

CacheWriter と CacheLoader の両方の実装

ストアプロバイダーは CacheWriter インターフェースと CacheLoader インターフェースの両方を実装する必要があります。これを実行するストアは、( read-only=false)データの読み取りと書き込みの両方について考慮されます。

This is the configuration of a custom(not shipped with infinispan) store:
   <local-cache name="myCustomStore">
      <persistence passivation="false">
         <store
            class="org.acme.CustomStore"
            fetch-state="false" preload="true" shared="false"
            purge="true" read-only="false" singleton="false">

            <write-behind modification-queue-size="123" thread-pool-size="23" />

            <property name="myProp">${system.property}</property>
         </store>
      </persistence>
   </local-cache>
Copy to Clipboard Toggle word wrap

永続性の設定に使用できるパラメーターは、以下のとおりです。

connection-attempts
設定済みの各 CacheWriter/CacheLoader の起動を試行する最大回数を設定します。開始試行に成功しなかった場合は、例外が発生し、キャッシュは起動しません。
connection-interval
起動時に接続試行間の待機時間をミリ秒単位で指定します。負の値またはゼロの値は、接続試行間の待ち時間がないことを意味します。
availability-interval
PersistenceManager が利用可能かどうかを判断するために可用性チェックの間隔(ミリ秒単位)を指定します。つまり、この間隔は org.infinispan.persistence.spi.CacheWriter#isAvailable または org.infinispan.persistence.spi.CacheLoader#isAvailable 実装を介してストア/ローダーをポーリングする頻度を設定します。単一のストア/ローダーが利用できない場合、キャッシュ操作中に例外が発生します。
passivation

パッシベーションを有効にします。デフォルト値は false (ブール値)です。

このプロパティーは、ローダーとの Red Hat Data Grid の対話に大きな影響があります。詳細は、「 キャッシュパッシベーション 」を参照してください。

class
ストアのクラスを定義し、CacheLoaderCacheWriter、またはその両方を実装する必要があります。
fetch-state

クラスターに参加する際にキャッシュの永続状態を取得します。デフォルト値は false (ブール値)です。

このプロパティーの目的は、キャッシュの永続的な状態を取得し、クラスターに参加する際にノードのローカルキャッシュストアに適用することです。永続状態の取得は、キャッシュストアが他のストアと同じデータにアクセスするため、共有されている場合は適用されません。

このプロパティーは設定済みの 1 つのキャッシュローダーにのみ 該当 します。複数のキャッシュローダーが永続状態を取得すると、キャッシュサービスの起動時に設定例外が発生します。

preload

キャッシュの起動時にデータをキャッシュローダーからメモリーに事前読み込みます。デフォルト値は false (ブール値)です。

このプロパティーは、データが遅延的に読み込まれると、起動直後にキャッシュローダー内のデータが必要な場合に、キャッシュ操作の遅延を防ぐ場合に便利です。このプロパティーは起動時に「ウォームキャッシュ」を提供できますが、開始時間に影響するためパフォーマンスに影響します。

事前にロードされたデータはローカルで実行されるため、読み込まれたデータはローカルにのみ保存されます。事前に読み込んだデータはレプリケートまたは分散されません。同様に、Red Hat Data Grid は、エビクション で設定される最大エントリー数だけを事前読み込みます。

shared

キャッシュローダーがキャッシュインスタンス間で共有されるかどうかを判断します。デフォルト値は false (ブール値)です。

このプロパティーにより、異なるキャッシュインスタンスによるキャッシュローダーへのデータの複製書き込みが回避されます。たとえば、クラスターのすべてのキャッシュインスタンスは、同じリモート共有データベースに同じ JDBC 設定を使用します。

read-only
新規データがキャッシュストアに永続化されないようにします。デフォルト値は false (ブール値)です。
purge
起動時に指定されたキャッシュローダーを除算します。デフォルト値は false (ブール値)です。このプロパティーは、読み取り専用 のプロパティーが false に設定されている場合に限り有効です。
max-batch-size

キャッシュストアからの削除を挿入するバッチの最大サイズを設定します。デフォルト値は 100 です。

値が 1 未満の場合、上限はバッチの操作数には適用されません。

write-behind
非同期的には、キャッシュストアにデータを永続化します。デフォルト値は false (ブール値)です。詳細は「 非同期書き込み /書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/書き込み/
singleton

クラスターの 1 つのノード(コーディネーター)を有効にし、変更を保存します。デフォルト値は false (ブール値)です。

データがノードに入るたびに、キャッシュのメモリー内の状態を維持するために複製または分散されます。コーディネーターは状態をディスクにプッシュします。

true の場合、クラスター内のすべてのノードにこのプロパティーを設定する必要があります。クラスターのコーディネーターのみがデータを永続化します。ただし、他のノードがデータを永続化しないように、すべてのノードがこのプロパティーを有効にする必要があります。

キャッシュストアが共有されている場合は singleton プロパティーを有効にすることはできません。

注記

properties セクションで追加の属性を定義して、前の例の myProp 属性など、各キャッシュローダーの特定側面を設定できます。

より複雑な設定を含む他のキャッシュローダーには、追加のプロパティーも含まれます。例については、以下の JDBC キャッシュストア設定を参照してください。

上記の設定では、一般的なキャッシュストアの実装が適用されます。ただし、デフォルトの Red Hat Data Grid ストアの実装には、さらに複雑な設定スキーマがあり、properties セクションは XML 属性に置き換えられます。

<persistence passivation="false">
   <!-- note that class is missing and is induced by the fileStore element name -->
   <file-store
           shared="false" preload="true"
           fetch-state="true"
           read-only="false"
           purge="false"
           path="${java.io.tmpdir}">
      <write-behind thread-pool-size="5" />
   </file-store>
</persistence>
Copy to Clipboard Toggle word wrap

同じ設定をプログラムで実行できます。

   ConfigurationBuilder builder = new ConfigurationBuilder();
   builder.persistence()
         .passivation(false)
         .addSingleFileStore()
            .preload(true)
            .shared(false)
            .fetchPersistentState(true)
            .ignoreModifications(false)
            .purgeOnStartup(false)
            .location(System.getProperty("java.io.tmpdir"))
            .async()
               .enabled(true)
               .threadPoolSize(5)
            .singleton()
               .enabled(true)
               .pushStateWhenCoordinator(true)
               .pushStateTimeout(20000);
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat