第20章 キャッシュ書き込みモード

Red Hat JBoss Data Grid では、単一または複数のキャッシュストアを用いた設定オプションが使用できます。このようなオプションにより、共有の JDBC データベースやローカルファイルシステムなど、永続的な場所にデータを格納することができます。JBoss Data Grid は、以下の 2 つのキャッシングモードをサポートします。
  • ライトスルー (同期)
  • ライトビハインド (非同期)

20.1. ライトスルーキャッシング

Red Hat JBoss Data Grid のライトスルー (または同期) モードは、クライアントがキャッシュエントリーを更新する時に (通常は Cache.put() 呼び出し経由)、JBoss Data Grid が基盤のキャッシュストアを見つけ、更新するまで呼び出しが返されないようにします。この機能により、キャッシュストアへの更新をクライアントスレッド境界内で終了させることができます。

20.1.1. ライトスルーキャッシングの利点

ライトスルーモードの主な利点は、キャッシュとキャッシュストアが同時に更新されるため、キャッシュストアとキャッシュの内容の整合性を保つことができることです。ただし、キャッシュストアへのアクセスやキャッシュ操作中の更新により、キャッシュ操作のパフォーマンスが低下します。

20.1.2. ライトスルーキャッシングの設定 (ライブラリーモード)

ライトスルーまたは同期キャッシュストアの設定には、特別な設定操作は必要ありません。すべてのキャッシュストアは、明示的にライトビハインドまたは非同期とマーク付けされていない限り、ライトスルーまたは同期になります。以下の手順は、ライトスルーの共有されないローカルファイルキャッシュストアの設定ファイルの例について説明しています。

手順20.1 ライトスルーのローカルファイルキャッシュストアの設定

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="urn:infinispan:config:6.2">
	<global />
	<default />
	<namedCache name="persistentCache">
		<persistence>
		    <singleFile fetchPersistentState="true" 
			    ignoreModifications="false"
			    purgeOnStartup="false"
			    shared="false"
			    location="${java.io.tmpdir}"/>
		</persistence>
  	</namedCache>
</infinispan>
  1. name パラメーターは、使用する namedCache の名前を指定します。
  2. fetchPersistentState パラメーターは、クラスターへ参加する時に永続状態が取り込まれるかを決定します。クラスター環境でレプリケーションとインバリデーションを使用している場合は、これを true に設定します。さらに、複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアのみがこのプロパティーを有効に設定できます。共有キャッシュストアが使用されている場合、キャッシュは、このプロパティーが true に設定されているにも関わらず、永続状態の転送を許可しません。fetchPersistentState パラメーターはデフォルトでは false に設定されます。
  3. ignoreModifications パラメーターは、キャッシュを変更する操作 (配置、削除、消去、格納など) がキャッシュストアに影響を与えるかどうかを決定します。結果として、キャッシュストアは、キャッシュと同期が取れなくなります。
  4. purgeOnStartup パラメーターは、初回起動時にキャッシュがパージされるかどうかを指定します。
  5. shared パラメーターは、複数のキャッシュストアインスタンスがキャッシュストアを共有する場合に使用され、キャッシュストアレベルで定義されるようになりました。複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするため、このパラメーターを設定することができます。このパラメーターに有効な値は truefalse です。