第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 単一ファイルストアの設定
キャッシュ名の追加
キャッシュの名前を指定するため、local-cache属性のnameパラメーターが使用されます。<local-cache name="default">
<local-cache name="default">Copy to Clipboard Copied! Toggle word wrap Toggle overflow キャッシュごとの統計
statisticsがコンテナーレベルで有効にされている場合、statistics属性をfalseに設定することにより、キャッシュごとの統計は、モニタリングを必要としないキャッシュについては選択的に無効にすることができます。<local-cache name="default" statistics="true">
<local-cache name="default" statistics="true">Copy to Clipboard Copied! Toggle word wrap Toggle overflow file-store要素を設定します。file-store要素は、単一ファイルストアの設定情報を指定します。file-store要素のnameパラメーターが、ファイルストアの名前を指定するために使用されます。<local-cache name="default" statistics="true"> <file-store name="myFileStore" /><local-cache name="default" statistics="true"> <file-store name="myFileStore" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow passivation パラメーターの設定
passivationパラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。<local-cache name="default" statistics="true"> <file-store name="myFileStore" passivation="true" /><local-cache name="default" statistics="true"> <file-store name="myFileStore" passivation="true" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow purgeパラメーターを設定します。purgeパラメーターは、起動時にキャッスストアがパージされるかどうかを指定します。 このパラメーターで有効な値はtrueとfalseです。<local-cache name="default" statistics="true"> <file-store name="myFileStore" passivation="true" purge="true" /><local-cache name="default" statistics="true"> <file-store name="myFileStore" passivation="true" purge="true" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow sharedパラメーターを設定します。sharedパラメーターは、複数のキャッシュストアインスタンスがキャッシュストアを共有する場合に使用されます。複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするため、このパラメーターを設定することができます。このパラメーターに有効な値はtrueとfalseです。ただし、sharedパラメーターはfile-storeには推奨されません。Copy to Clipboard Copied! Toggle word wrap Toggle overflow relative-toパラメーター内のディレクトリーパスを指定します。relative-toプロパティーは、file-storeがデータを保存するディレクトリーです。これは名前付きのパスを定義するために使用されます。pathプロパティーは、データが保存されるファイルの名前です。これは、完全パスを決定するためにrelative-toプロパティーの値に追加される相対パス名です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最大エントリー数の設定
maxEntriesパラメーターは、許可されるエントリーの最大数を指定供します。無制限のエントリーを許可するためのデフォルト値は -1 です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow fetch-state パラメーターの設定
fetch-stateパラメーターは、true に設定されている場合に、クラスターへ参加する際に永続状態を取り込みます。複数のキャッシュストアがチェーン化されている場合、その内の 1 つのみでこのプロパティーを有効にできます。共有キャッシュストアが使用されている場合、永続状態の転送は、データを提供する同じ永続ストアがそれを受信するだけなので意味をなしません。そのため、共有キャッシュストアが使用されている場合、キャッシュストアがこのプロパティーを true に設定している場合であっても、永続状態の転送を許可しません。クラスター化環境でのみこのプロパティーを true に設定することが推奨されます。このパラメーターのデフォルト値は false です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Preload パラメーターの設定
preloadパラメーターは、true に設定されている場合に、キャッシュの起動時にキャッシュストアに保存されたデータをメモリーにロードします。ただし、このパラメーターを true に設定することにより、起動時間が増加するためパフォーマンスへの影響があります。このパラメーターのデフォルト値は false です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow シングルトンパラメーターの設定
singletonパラメーターは、シングルトンストアのキャッシュストアを有効にします。SingletonStore は、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用される委譲するキャッシュストアです。ただし、singletonパラメーターはfile-storeには推奨されません。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.1.2. 単一ファイルストアの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Red Hat JBoss Grid のライブラリーモードで、単一ファイルキャッシュストアを以下のように設定します。
手順13.2 ライブラリーモードでの単一ファイルストアの設定
singleFile 要素は、単一ファイルキャッシュストアを設定するために使用されます。
infinispan.xml で以下を設定します。
- 名前の値を
namedCache要素に追加します。以下はこの手順の例になります。<namedCache name="writeThroughToFile">
<namedCache name="writeThroughToFile">Copy to Clipboard Copied! Toggle word wrap Toggle overflow persistence要素で、passivationパラメーターをfalseに設定します。使用できる値は「true」と「false」です。<namedCache name="writeThroughToFile"> <persistence passivation="false" /><namedCache name="writeThroughToFile"> <persistence passivation="false" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow singleFile要素を使用して、単一ファイルの設定をセットアップします。fetchPersistentState-trueに設定されると、クラスターへ参加する時に永続状態が取り込まれます。複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアのみがこのプロパティーをtrueに設定できます。この値のデフォルトはfalseです。ignoreModificationsパラメーターは、キャッシュを変更する操作 (例: 配置、削除、消去、格納など) がキャッシュストアに影響を与えるかどうかを決定します。結果として、キャッシュストアは、キャッシュと同期が取れなくなります。purgeOnStartupパラメーターは、初回起動時にキャッシュがパージされるかどうかを指定します。sharedパラメーターは、複数のキャッシュインスタンスがキャッシュストアを共有する場合にtrueに設定されます。これにより、複数のキャッシュインスタンスが同じ変更内容を個別に書き込むことを防ぐことができます。この属性のデフォルトはfalseです。ただし、sharedパラメーターはfile-storeには推奨されません。preloadパラメーターは、キャッシュストアデータがメモリーにプリロードされ、起動後すぐにアクセス可能にするかどうかを設定します。これを true に設定する不利な点には、起動時間が増えることが挙げられます。この属性のデフォルト値はfalseです。locationパラメーターはファイルストアの場所を示します。maxEntriesパラメーターは、許可されるエントリーの最大数を指定します。無制限のエントリーの場合のデフォルト値は -1 です。maxKeysInMemoryパラメーターは、データのルックアップを迅速化を図るために使用されます。単一ファイルストアは、maxKeysInMemoryパラメーターを使用して、キーのインデックスとファイル内のキーの場所を保持します。このパラメーターのデフォルト値は -1 です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 非同期設定を行うには
async要素を追加します。enabledパラメーターは、ファイルストアを非同期にするかどうかを決定します。threadPoolSizeパラメーターは、変更をストアに同時に適用するスレッドの数を指定します。このパラメーターのデフォルト値は5です。flushLockTimeoutパラメーターは、キャッシュストアに定期的にフラッシュする状態を保護するロックを取得するための時間を指定します。このパラメーターのデフォルト値は1です。modificationQueueSizeパラメーターは、非同期ストアの変更キューのサイズを指定します。基礎となるキャッシュストアがこのキューを処理するよりも速く更新される場合に、その期間において非同期ストアは同期ストアのように動作し、キューがさらに多くの要素を許可できるようになるまでブロックします。このパラメーターのデフォルト値は1024要素です。shutdownTimeoutパラメーターは、キャッシュストアを停止する時間を指定します。このパラメーターのデフォルト値は25秒です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 のライブラリーおよびリモートクライアントサーバーモードで利用できます。