第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 インターフェースの両方を実装する必要があります。これを実行するストアは、( read-only=false)データの読み取りと書き込みの両方について考慮されます。
永続性の設定に使用できるパラメーターは、以下のとおりです。
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-
ストアのクラスを定義し、
CacheLoader、CacheWriter、またはその両方を実装する必要があります。 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 属性に置き換えられます。
同じ設定をプログラムで実行できます。