18.4. JDBC ベースのキャッシュストア


Red Hat JBoss Data Grid は、一般的なデータストレージ形式と共に使用される複数のキャッシュストアを提供します。JDBC ベースのキャッシュストアは、JDBC ドライバーを公開するキャッシュストアと共に使用されます。JBoss Data Grid は、永続化されるキーに応じて以下の JDBC ベースのキャッシュストアを提供します。
  • JdbcBinaryStore
  • JdbcStringBasedStore
  • JdbcMixedStore

18.4.1. JdbcBinaryStores

JdbcBinaryStore はすべてのキータイプをサポートします。同じテーブル行/Blob の同じハッシュ値 (キー上の hashCode メソッド) を持つすべてのキーを格納します。組み込まれるキーに共通するハッシュ値が、テーブルの行/Blob の主キーとして設定されます。このハッシュ値により、JdbcBinaryStore は大変優れた柔軟性を提供しますが、これにより平行性とスループットのレベルが下がります。
たとえば、3 つのキー (k1k2k3) のハッシュコードが同じである場合、同じテーブル行に格納されます。3 つの異なるスレッドが k1k2k3 を同時に更新しようとすると、すべてのキーが同じ行を共有するため同時には更新できないことから、順次更新する必要があります。

18.4.1.1. JdbcBinaryStore の設定 (リモートクライアントサーバーモード)

以下は、Red Hat JBoss Data Grid のリモートクライアントサーバーモードを使用し、パッシベーションを有効にした JdbcBinaryStore の設定です。

手順18.7 リモートクライアントサーバーノード用に JdbcBinaryStore を設定します。

  1. binary-keyed-jdbc-store 要素

    binary-keyed-jdbc-store 要素は、バイナリのキーボードから情報が入力されたキャッシュの JDBC ストアに対する設定を指定します。
    1. datasource パラメーターはデータソースの JNDI 名を定義します。データソースの詳細については、「JDBC 」を参照してください。
    2. passivation パラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。
    3. preload パラメーターは、起動中にエントリーをキャッシュにロードするかどうかを指定します。このパラメーターの有効な値は truefalse です。
    4. purge パラメーターは、起動時にキャッスストアがパージされるかどうかを指定します。 このパラメーターの有効な値は truefalse です。
    <local-cache>
    	...
    	<binary-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="${true/false}" 
    				 preload="${true/false}" 
    				 purge="${true/false}">
    Copy to Clipboard Toggle word wrap
  2. binary-keyed-table 要素

    binary-keyed-table 要素は、バイナリーのキャッシュエントリーを格納するために使用されるデータベーステーブルに関する情報を指定します。
    1. prefix パラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
    <local-cache>
    	...
    	<binary-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="${true/false}" 
    				 preload="${true/false}" 
    				 purge="${true/false}">
                   	<binary-keyed-table prefix="JDG">
    Copy to Clipboard Toggle word wrap
  3. id-column 要素

    id-column 要素は、キャッシュエントリーの ID を保持するデータベース列に関する情報を指定します。
    1. name パラメーターはデータベース列の名前を指定します。
    2. type パラメーターはデータベース列のタイプを指定します。
    <local-cache>
    	...
    	<binary-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="${true/false}" 
    				 preload="${true/false}" 
    				 purge="${true/false}">
                   	<binary-keyed-table prefix="JDG">
                   		<id-column name="id" 
    				   type="${id.column.type}"/>
    Copy to Clipboard Toggle word wrap
  4. data-column 要素

    data-column 要素には、キャッシュエントリーデータを保持するデータベース列に関する情報が含まれます。
    1. name パラメーターはデータベース列の名前を指定します。
    2. type パラメーターはデータベース列のタイプを指定します。
    <local-cache>
    	...
    	<binary-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="${true/false}" 
    				 preload="${true/false}" 
    				 purge="${true/false}">
                   	<binary-keyed-table prefix="JDG">
                   		<id-column name="id" 
    				   type="${id.column.type}"/>
                   		<data-column name="datum" 
    				     type="${data.column.type}"/>
    Copy to Clipboard Toggle word wrap
  5. timestamp-column 要素

    timestamp-column 要素は、キャッシュエントリーのタイムスタンプを保持するデータベース列に関する情報を指定します。
    1. name パラメーターはデータベース列の名前を指定します。
    2. type パラメーターはデータベース列のタイプを指定します。
    <local-cache>
    	...
    	<binary-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="${true/false}" 
    				 preload="${true/false}" 
    				 purge="${true/false}">
                   	<binary-keyed-table prefix="JDG">
                   		<id-column name="id" 
    				   type="${id.column.type}"/>
                   		<data-column name="datum" 
    				     type="${data.column.type}"/>
                  		<timestamp-column name="version" 
    					  type="${timestamp.column.type}"/>
                  	</binary-keyed-table>
           	</binary-keyed-jdbc-store>
    </local-cache>
    
    Copy to Clipboard Toggle word wrap

18.4.1.2. JdbcBinaryStore の設定 (ライブラリーモード)

以下は、JdbcBinaryStore の設定例です。

手順18.8 ライブラリーモードの JdbcBinaryStore の設定

  1. binaryKeyedJdbcStore 要素

    binaryKeyedJdbcStore 要素は、キャッシュストアを設定するための次のパラメーターを使用します。
    1. fetchPersistentState パラメーターは、クラスターへ参加する時に永続状態が取り込まれるかを決定します。クラスター環境でレプリケーションとインバリデーションを使用している場合は、これを true に設定します。さらに、複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアのみがこのプロパティーを有効に設定できます。共有キャッシュストアが使用されている場合、キャッシュは、このプロパティーが true に設定されているにも関わらず、永続状態の転送を許可しません。fetchPersistentState パラメーターはデフォルトでは false に設定されます。
    2. ignoreModifications パラメーターは、キャッシュを変更する操作 (例: 配置、削除、消去、保存など) がキャッシュストアに影響を与えるかどうかを決定します。結果として、キャッシュストアは、キャッシュと同期しなくなります。
    3. purgeOnStartup パラメーターは、初回起動時にキャッシュがパージされるかどうかを指定します。
    <persistence>
    	<binaryKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false">
    Copy to Clipboard Toggle word wrap
  2. connectionPool 要素

    connectionPool 要素は、次のパラメーターを使用して JDBC ドライバーの接続プールを指定します。
    1. connectionUrl パラメーターは、JDBC ドライバー固有の接続 URL を指定します。
    2. username パラメーターには、connectionUrl 経由で接続するために使用されるユーザー名が含まれます。
    3. driverClass パラメーターは、データベースに接続するために使用されるドライバーのクラス名を指定します。
    <persistence>
    	<binaryKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    Copy to Clipboard Toggle word wrap
  3. binaryKeyedTable 要素

    binaryKeyedTable 要素は、キャッシュエントリーを保存するテーブルを定義します。これは、キャッシュストアを設定するために以下のパラメーターを使用します。
    1. dropOnExit パラメーターは、シャットダウン時にデータベーステーブルがドロップされるかどうかを指定します。
    2. createOnStart パラメーターは、スタートアップ時にストアによってデータベーステーブルが作成されるかどうかを指定します。
    3. prefix パラメーターは、キャッシュバケットテーブルの名前を作成する際に、ターゲットキャッシュの名前に付与される文字列を定義します。
    <persistence>
    	<binaryKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE">
    Copy to Clipboard Toggle word wrap
  4. idColumn 要素

    idColumn 要素は、キャッシュキーまたはバケット ID が保存される列を定義します。これは以下のパラメーターを使用します。
    1. 使用されている列の名前を指定するには、name パラメーターを使用します。
    2. 使用されている列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<binaryKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    Copy to Clipboard Toggle word wrap
  5. dataColumn 要素

    dataColumn 要素は、キャッシュエントリーまたはバケットが保存される列を指定します。
    1. 使用されている列の名前を指定するには、name パラメーターを使用します。
    2. 使用されている列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<binaryKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    Copy to Clipboard Toggle word wrap
  6. timestampColumn 要素

    timestampColumn 要素は、キャッシュエントリーまたはバケットのタイムスタンプが保存される列を指定します。
    1. 使用されている列の名前を指定するには、name パラメーターを使用します。
    2. 使用されている列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<binaryKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    			<timestampColumn name="TIMESTAMP_COLUMN" 
    					 type="BIGINT" />
    		</binaryKeyedTable>
    	</binaryKeyedJdbcStore>
    </persistence>
    Copy to Clipboard Toggle word wrap

18.4.1.3. JdbcBinaryStore のプログラムを用いた設定

以下は、JdbcBinaryStore の設定例です。

手順18.9 JdbcBinaryStore のプログラムを用いた設定 (ライブラリーモード)

  1. 新規の設定ビルダーの作成

    ConfigurationBuilder を使用して、新規の設定オブジェクトを作成します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence()
    Copy to Clipboard Toggle word wrap
  2. JdbcBinaryStoreConfigurationBuilder の追加

    このストアに関連する特定の設定を構築するには、 JdbcBinaryStore 設定ビルダーを追加します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence()
         .addStore(JdbcBinaryStoreConfigurationBuilder.class)
    Copy to Clipboard Toggle word wrap
  3. 永続性のセットアップ

    fetchPersistentState は、キャッシュの永続状態を取り込むかどうかを決定し、クラスターに参加する際にこれをローカルキャッシュストアに適用します。キャッシュストアが共有される場合、キャッシュが同じキャッシュストアにアクセスする際に、永続状態の取り込みは無視されます。複数のキャッシュローダーがこのプロパティーを true に設定する場合にキャッシュサービスを起動すると、設定の例外がスローされます。fetchPersistentState プロパティーはデフォルトでは false です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence()
         .addStore(JdbcBinaryStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
    Copy to Clipboard Toggle word wrap
  4. 変更の設定

    ignoreModifications は、書き込み操作を共有キャッシュローダーではなく、ローカルファイルキャッシュローダーに許可することで、書き込みメソッドが特定のキャッシュローダーにプッシュされるかどうかを決定します。特定の場合に、一時的なアプリケーションデータは、インメモリーキャッシュと同じサーバー上のファイルベースのキャッシュローダーにのみ存在します。たとえば、これはネットワーク内のすべてのサーバーによって使用される追加の JDBC ベースのキャッシュローダーで適用されます。ignoreModifications はデフォルトではfalse です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence()
         .addStore(JdbcBinaryStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
    Copy to Clipboard Toggle word wrap
  5. パージの設定

    purgeOnStartup は、初回の起動時にキャッシュがパージされるかどうかを指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence()
         .addStore(JdbcBinaryStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
    Copy to Clipboard Toggle word wrap
  6. テーブルの設定

    1. Drop Table On Exit メソッドの設定

      dropOnExit は、キャッシュストアが停止している際にテーブルを破棄するかどうかを決定します。これは、デフォルトでは false に設定されます。
    2. Create Table On Start メソッドの設定

      createOnStart は、現在テーブルが存在しない場合にキャッシュストアを起動すると、テーブルを作成します。このメソッドはデフォルトでは true です。
    3. Table Name Prefix の設定

      tableNamePrefix は、データが保存されるテーブルの名前にプレフィックスを設定します。
    4. idColumnName

      idColumnName プロパティーは、キャッシュキーまたはバケット ID が保存される列を定義します。
    5. dataColumnName

      dataColumnName プロパティーは、キャッシュエントリーまたはバケット ID が保存される列を指定します。
    6. timestampColumnName

      timestampColumnName 要素は、キャッシュエントリーのタイムスタンプまたはバケットが保存される列を指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence()
         .addStore(JdbcBinaryStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
         .table()
            .dropOnExit(true)
            .createOnStart(true)
            .tableNamePrefix("ISPN_BUCKET_TABLE")
            .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
            .dataColumnName("DATA_COLUMN").dataColumnType("BINARY")
            .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
    Copy to Clipboard Toggle word wrap
  7. connectionPool 要素

    connectionPool 要素は、次のパラメーターを使用して JDBC ドライバーの接続プールを指定します。
    1. connectionUrl パラメーターは、JDBC ドライバー固有の接続 URL を指定します。
    2. username パラメーターには、connectionUrl 経由で接続するために使用されるユーザー名が含まれます。
    3. driverClass パラメーターは、データベースに接続するために使用されるドライバーのクラス名を指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence()
         .addStore(JdbcBinaryStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
         .table()
            .dropOnExit(true)
            .createOnStart(true)
            .tableNamePrefix("ISPN_BUCKET_TABLE")
            .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
            .dataColumnName("DATA_COLUMN").dataColumnType("BINARY")
            .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
         .connectionPool()
            .connectionUrl("jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1")
            .username("sa")
            .driverClass("org.h2.Driver");
    
    Copy to Clipboard Toggle word wrap

注記

プログラムを使用した設定は、Red Hat JBoss Data Grid ライブラリーモードのみで利用できます。

18.4.2. JdbcStringBasedStores

JdbcStringBasedStore は複数のエントリーを各行にグループ化せずに、各エントリーをテーブルの独自の行に格納するため、同時負荷の下でスループットが増加します。また、各キーを String オブジェクトへマッピングする (プラグ可能な) バイジェクション (bijection) も使用します。Key2StringMapper インターフェースはバイジェクションを定義します。
Red Hat JBoss Data Grid には、プリミティブタイプを処理する DefaultTwoWayKey2StringMapper と呼ばれるデフォルトの実装が含まれています。

18.4.2.1. JdbcStringBasedStore の設定 (リモートクライアントサーバーモード)

以下は、Red Hat JBoss Data Grid のリモートクライアントサーバーモードの JdbcStringBasedStore のサンプル設定です。

手順18.10 リモートクライアントサーバーモードでの JdbcStringBasedStore の設定

  1. string-keyed-jdbc-store 要素

    string-keyed-jdbc-store 要素は、文字列ベースのキーボードから情報が入力されたキャッシュの JDBC ストアに対する設定を指定します。
    1. datasource パラメーターはデータソースの JNDI 名を定義します。データソースの詳細については、「JDBC 」を参照してください。
    2. passivation パラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。
    3. preload パラメーターは、起動中にエントリーをキャッシュにロードするかどうかを指定します。このパラメーターの有効な値は truefalse です。
    4. purge パラメーターは、起動時にキャッスストアがパージされるかどうかを指定します。 このパラメーターの有効な値は truefalse です。
    5. shared パラメーターは、複数のキャッシュストアインスタンスがキャッシュストアを共有する場合に使用されます。複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするため、このパラメーターを設定することができます。このパラメーターに有効な値は truefalse です。
    6. singleton パラメーターは、シングルトンストアのキャッシュストアを有効にします。SingletonStore は、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用される委任中のキャッシュストアです。
    <local-cache> 
    	...
    	<string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="true" 
    				 preload="false" 
    				 purge="false"
    				 shared="false"
    				 singleton="true">
    Copy to Clipboard Toggle word wrap
  2. string-keyed-table 要素

    string-keyed-table 要素は、文字別ベースのキャッシュエントリーを格納するために使用されるデータベーステーブルに関する情報を指定します。
    1. prefix パラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
    <local-cache> 
    	...
    	<string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="true" 
    				 preload="false" 
    				 purge="false"
    				 shared="false"
    				 singleton="true">
                   	<string-keyed-table prefix="JDG">
    Copy to Clipboard Toggle word wrap
  3. id-column 要素

    id-column 要素は、キャッシュエントリーの ID を保持するデータベース列に関する情報を指定します。
    1. name パラメーターは ID 列の名前を指定します。
    2. type パラメーターは ID 列のタイプを指定します。
    <local-cache> 
    	...
    	<string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="true" 
    				 preload="false" 
    				 purge="false"
    				 shared="false"
    				 singleton="true">
                   	<string-keyed-table prefix="JDG">
                   		<id-column name="id" 
    				   type="${id.column.type}"/>
    Copy to Clipboard Toggle word wrap
  4. data-column 要素

    data-column 要素には、キャッシュエントリーデータを保持するデータベース列に関する情報が含まれます。
    1. name パラメーターはデータベース列の名前を指定します。
    2. type パラメーターはデータベース列のタイプを指定します。
    <local-cache> 
    	...
    	<string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="true" 
    				 preload="false" 
    				 purge="false"
    				 shared="false"
    				 singleton="true">
                   	<string-keyed-table prefix="JDG">
                   		<id-column name="id" 
    				   type="${id.column.type}"/>
    			<data-column name="datum" 
    				     type="${data.column.type}"/>
    Copy to Clipboard Toggle word wrap
  5. timestamp-column 要素

    timestamp-column 要素は、キャッシュエントリーのタイムスタンプを保持するデータベース列に関する情報を指定します。
    1. name パラメーターはデータベース列の名前を指定します。
    2. type パラメーターはデータベース列のタイプを指定します。
    <local-cache> 
    	...
    	<string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				 passivation="true" 
    				 preload="false" 
    				 purge="false"
    				 shared="false"
    				 singleton="true">
                   	<string-keyed-table prefix="JDG">
                   		<id-column name="id" 
    				   type="${id.column.type}"/>
    			<data-column name="datum" 
    				     type="${data.column.type}"/>
    			<timestamp-column name="version" 
    					  type="${timestamp.column.type}"/>
    	        </string-keyed-table>
    	</string-keyed-jdbc-store>
    </local-cache>
    Copy to Clipboard Toggle word wrap

18.4.2.2. JdbcStringBasedStore 設定 (ライブラリーモード)

JdbcStringBasedStore の設定例は次の通りです。

手順18.11 ライブラリーモードでの JdbcStringBasedStore の設定

  1. stringKeyedJdbcStore 要素

    stringKeyedJdbcStore 要素は、キャッシュストアを設定するための次のパラメーターを使用します。
    1. fetchPersistentState パラメーターは、クラスターへ参加する時に永続状態が取り込まれるかを決定します。クラスター環境でレプリケーションとインバリデーションを使用している場合は、これを true に設定します。さらに、複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアのみがこのプロパティーを有効に設定できます。共有キャッシュストアが使用されている場合、キャッシュは、このプロパティーが true に設定されているにも関わらず、永続状態の転送を許可しません。fetchPersistentState パラメーターはデフォルトでは false に設定されます。
    2. ignoreModifications パラメーターは、キャッシュを変更する操作 (例: 配置、削除、消去、保存など) がキャッシュストアに影響を与えるかどうかを決定します。結果として、キャッシュストアは、キャッシュと同期しなくなります。
    3. purgeOnStartup パラメーターは、初回起動時にキャッシュがパージされるかどうかを指定します。
    4. key2StringMapper パラメーターは、キーをデータベーステーブルの文字列にマップするために使用される Key2StringMapper のクラス名を指定します。
    <persistence>
    	<stringKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper">
    Copy to Clipboard Toggle word wrap
  2. connectionPool 要素

    connectionPool 要素は、次のパラメーターを使用して JDBC ドライバーの接続プールを指定します。
    1. connectionUrl パラメーターは、JDBC ドライバー固有の接続 URL を指定します。
    2. username パラメーターには、connectionUrl 経由で接続するために使用されるユーザー名が含まれます。
    3. driverClass パラメーターは、データベースに接続するために使用されるドライバーのクラス名を指定します。
    <persistence>
    	<stringKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    Copy to Clipboard Toggle word wrap
  3. stringKeyedTable 要素

    stringKeyedTable 要素を追加すると、キャッシュエントリーを保存するテーブルが定義されます。これは、キャッシュストアを設定するために以下のパラメーターを使用します。
    1. dropOnExit パラメーターは、シャットダウン時にデータベーステーブルがドロップされるかどうかを指定します。
    2. createOnStart パラメーターは、スタートアップ時にストアによってデータベーステーブルが作成されるかどうかを指定します。
    3. prefix パラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
    <persistence>
    	<stringKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<stringKeyedTable dropOnExit="true"
    				  createOnStart="true"
    				  prefix="ISPN_STRING_TABLE">
    Copy to Clipboard Toggle word wrap
  4. idColumn 要素

    idColumn 要素は、キャッシュキーまたはバケット ID が保存される列を定義します。これは以下のパラメーターを使用します。
    1. ID 列の名前を指定するには、name パラメーターを指定します。
    2. ID 列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<stringKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<stringKeyedTable dropOnExit="true"
    				  createOnStart="true"
    				  prefix="ISPN_STRING_TABLE">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    Copy to Clipboard Toggle word wrap
  5. dataColumn 要素

    dataColumn 要素は、キャッシュエントリーまたはバケットが保存される列を指定します。
    1. データベース列の名前を指定するには、name パラメーターを使用します。
    2. データベース列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<stringKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<stringKeyedTable dropOnExit="true"
    				  createOnStart="true"
    				  prefix="ISPN_STRING_TABLE">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    Copy to Clipboard Toggle word wrap
  6. timestampColumn 要素

    timestampColumn 要素は、キャッシュエントリーまたはバケットのタイムスタンプが保存される列を指定します。
    1. 使用されている列の名前を指定するには、name パラメーターを使用します。
    2. 使用されている列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<stringKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.loaders.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<stringKeyedTable dropOnExit="true"
    				  createOnStart="true" 
    				  prefix="ISPN_STRING_TABLE">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    			<timestampColumn name="TIMESTAMP_COLUMN" 
    					 type="BIGINT" />
    		</stringKeyedTable>
    	</stringKeyedJdbcStore>
    </persistence>
    Copy to Clipboard Toggle word wrap

18.4.2.3. JdbcStringBasedStore の複数ノード設定 (リモートクライアントサーバーモード)

以下は、Red Hat JBoss Data Grid のリモートクライアントサーバーモードにおける JdbcStringBasedStore の設定になります。この設定は、複数のノードを使用しなければならない場合に使用されます。

手順18.12 リモートクライアントサーバーノード用の JdbcStringBasedStore の複数ノード設定

  1. string-keyed-jdbc-store 要素

    string-keyed-jdbc-store 要素は、文字列ベースのキーボードから情報が入力されたキャッシュの JDBC ストアに対する設定を指定します。
    1. fetch-state パラメーターは、クラスターへ参加する時にキャッシュの永続状態が取り込まれるかを決定します。複数のキャッシュストアがチェーン化されている場合に、それらの内の 1 つのみでこのプロパティーを有効にすることができます。
    2. datasource パラメーターはデータソースの JNDI 名を定義します。データソースの詳細については、「JDBC 」を参照してください。
    3. passivation パラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。
    4. preload パラメーターは、起動中にエントリーをキャッシュにロードするかどうかを指定します。このパラメーターの有効な値は truefalse です。
    5. purge パラメーターは、起動時にキャッスストアがパージされるかどうかを指定します。 このパラメーターの有効な値は truefalse です。
    6. shared パラメーターは、複数のキャッシュストアインスタンスがキャッシュストアを共有する場合に使用されます。複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするため、このパラメーターを設定することができます。このパラメーターに有効な値は truefalse です。
    7. singleton パラメーターは、シングルトンストアのキャッシュストアを有効にします。SingletonStore は、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用される委譲するキャッシュストアです。
    <subsystem xmlns="urn:infinispan:server:core:5.2" default-cache-container="default">
    	<cache-container ... >
    		...
          <replicated-cache>
    			...
    	      <string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS"
    	            		       fetch-state="true"                        
    	            		       passivation="false"
    	            		       preload="false" 
    	            		       purge="false" 
    	            		       shared="false" 
    	            		       singleton="true">
    Copy to Clipboard Toggle word wrap
  2. string-keyed-table 要素

    string-keyed-table 要素は、文字別ベースのキャッシュエントリーを格納するために使用されるデータベーステーブルに関する情報を指定します。
    1. prefix パラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
    <subsystem xmlns="urn:infinispan:server:core:5.2" default-cache-container="default">
    	<cache-container ... >
    		...
          <replicated-cache>
    			...
    	      <string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS"
    	            		       fetch-state="true"                        
    	            		       passivation="false"
    	            		       preload="false" 
    	            		       purge="false" 
    	            		       shared="false" 
    	            		       singleton="true"> 
    	         <string-keyed-table prefix="JDG">
    Copy to Clipboard Toggle word wrap
  3. id-column 要素

    id-column 要素は、キャッシュエントリーの ID を保持するデータベース列に関する情報を指定します。
    1. name パラメーターは ID 列の名前を指定します。
    2. type パラメーターは ID 列のタイプを指定します。
    <subsystem xmlns="urn:infinispan:server:core:5.2" default-cache-container="default">
    	<cache-container ... >
    		...
          <replicated-cache>
    			...
    	      <string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS"
    	            		       fetch-state="true"                        
    	            		       passivation="false"
    	            		       preload="false" 
    	            		       purge="false" 
    	            		       shared="false" 
    	            		       singleton="true"> 
    	         <string-keyed-table prefix="JDG">
    	             <id-column name="id" 
    	                        type="${id.column.type}"/>
    Copy to Clipboard Toggle word wrap
  4. data-column 要素

    data-column 要素には、キャッシュエントリーデータを保持するデータベース列に関する情報が含まれます。
    1. name パラメーターはデータベース列の名前を指定します。
    2. type パラメーターはデータベース列のタイプを指定します。
    <subsystem xmlns="urn:infinispan:server:core:5.2" default-cache-container="default">
    	<cache-container ... >
    		...
          <replicated-cache>
    			...
    	      <string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS"
    	            		       fetch-state="true"                        
    	            		       passivation="false"
    	            		       preload="false" 
    	            		       purge="false" 
    	            		       shared="false" 
    	            		       singleton="true"> 
    	         <string-keyed-table prefix="JDG">
    	             <id-column name="id" 
    	                        type="${id.column.type}"/>
    	             <data-column name="datum" 
    	                          type="${data.column.type}"/>
    Copy to Clipboard Toggle word wrap
  5. timestamp-column 要素

    timestamp-column 要素は、キャッシュエントリーのタイムスタンプを保持するデータベース列に関する情報を指定します。
    1. name パラメーターはタイムスタンプ列の名前を指定します。
    2. type パラメーターはタイムスタンプ列のタイプを指定します。
    <subsystem xmlns="urn:infinispan:server:core:5.2" default-cache-container="default">
    	<cache-container ... >
    		...
          <replicated-cache>
    			...
    	      <string-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS"
    	            		       fetch-state="true"                        
    	            		       passivation="false"
    	            		       preload="false" 
    	            		       purge="false" 
    	            		       shared="false" 
    	            		       singleton="true"> 
    	         <string-keyed-table prefix="JDG">
    	             <id-column name="id" 
    	                        type="${id.column.type}"/>
    	             <data-column name="datum" 
    	                          type="${data.column.type}"/>
    	             <timestamp-column name="version"
    	                               type="${timestamp.column.type}"/>
    				</string-keyed-table> 
    			</string-keyed-jdbc-store>
    		</replicated-cache>
    	</cache-container>
    </subsystem>
    Copy to Clipboard Toggle word wrap

18.4.2.4. JdbcStringBasedStore のプログラムを使用した設定

JdbcStringBasedStore の設定例は次の通りです。

手順18.13 プログラムを使用した JdbcStringBasedStore の設定

  1. 新規設定ビルダーの作成

    ConfigurationBuilder を使用して、新規の設定オブジェクトを作成します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    Copy to Clipboard Toggle word wrap
  2. JdbcStringBasedStoreConfigurationBuilder の追加

    このストアに関連する特定の設定を構築するには JdbcStringBasedStore 設定ビルダーを追加します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
    Copy to Clipboard Toggle word wrap
  3. 永続性のセットアップ

    fetchPersistentState は、キャッシュの永続状態を取り込むかどうかを決定し、クラスターに参加する際にこれをローカルキャッシュストアに適用します。キャッシュストアが共有される場合、キャッシュが同じキャッシュストアにアクセスする際に、永続状態の取り込みは無視されます。複数のキャッシュローダーがこのプロパティーを true に設定する場合にキャッシュサービスを起動すると、設定の例外がスローされます。fetchPersistentState プロパティーはデフォルトでは false です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
    Copy to Clipboard Toggle word wrap
  4. 変更の設定

    ignoreModifications は、書き込み操作を共有キャッシュローダーではなく、ローカルファイルキャッシュローダーに許可することで、書き込みメソッドが特定のキャッシュローダーにプッシュされるかどうかを決定します。特定の場合に、一時的なアプリケーションデータは、インメモリーキャッシュと同じサーバー上のファイルベースのキャッシュローダーにのみ存在します。たとえば、これはネットワーク内のすべてのサーバーによって使用される追加の JDBC ベースのキャッシュローダーで適用されます。ignoreModifications はデフォルトではfalse です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
    Copy to Clipboard Toggle word wrap
  5. パージの設定

    purgeOnStartup は、初回の起動時にキャッシュがパージされるかどうかを指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
    Copy to Clipboard Toggle word wrap
  6. テーブルの設定

    1. Drop Table On Exit メソッドの設定

      dropOnExit は、キャッシュストアが停止している際にテーブルを破棄するかどうかを決定します。これは、デフォルトでは false に設定されます。
    2. Create Table On Start メソッドの設定

      createOnStart は、現在テーブルが存在しない場合にキャッシュストアを起動すると、テーブルを作成します。このメソッドはデフォルトでは true です。
    3. Table Name Prefix の設定

      tableNamePrefix は、データが保存されるテーブルの名前にプレフィックスを設定します。
    4. idColumnName

      idColumnName プロパティーは、キャッシュキーまたはバケット ID が保存される列を定義します。
    5. dataColumnName

      dataColumnName プロパティーは、キャッシュエントリーまたはバケット ID が保存される列を指定します。
    6. timestampColumnName

      timestampColumnName 要素は、キャッシュエントリーのタイムスタンプまたはバケットが保存される列を指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
         .table()
            .dropOnExit(true)
            .createOnStart(true)
            .tableNamePrefix("ISPN_STRING_TABLE")
            .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
            .dataColumnName("DATA_COLUMN").dataColumnType("BINARY")
            .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
    Copy to Clipboard Toggle word wrap
  7. connectionPool 要素

    connectionPool 要素は、次のパラメーターを使用して JDBC ドライバーの接続プールを指定します。
    1. connectionUrl パラメーターは、JDBC ドライバー固有の接続 URL を指定します。
    2. username パラメーターには、connectionUrl 経由で接続するために使用されるユーザー名が含まれます。
    3. driverClass パラメーターは、データベースに接続するために使用されるドライバーのクラス名を指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcStringBasedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
         .table()
            .dropOnExit(true)
            .createOnStart(true)
            .tableNamePrefix("ISPN_STRING_TABLE")
            .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
            .dataColumnName("DATA_COLUMN").dataColumnType("BINARY")
            .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
         .connectionPool()
            .connectionUrl("jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1")
            .username("sa")
            .driverClass("org.h2.Driver");
    
    Copy to Clipboard Toggle word wrap

注記

プログラムを使用した設定は、Red Hat JBoss Data Grid ライブラリーモードのみで利用できます。

18.4.3. JdbcMixedStores

JdbcMixedStore は、キーのタイプを基にキーを JdbcBinaryStore または JdbcStringBasedStore に委譲するハイブリッド実装です。

18.4.3.1. JdbcMixedStore の設定 (リモートクライアントサーバーモード)

以下は、Red Hat JBoss Data Grid のリモートクライアントサーバーモードの JdbcBinaryStore の設定です。

手順18.14 リモートクライアントサーバーモードでの JdbcMixedStore の設定

  1. mixed-keyed-jdbc-store 要素

    mixed-keyed-jdbc-store 要素は、混合のキーボードから情報が入力されたキャッシュの JDBC ストアに対する設定を指定します。
    1. datasource パラメーターはデータソースの JNDI 名を定義します。データソースの詳細については、「JDBC 」を参照してください。
    2. passivation パラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。
    3. preload パラメーターは、起動中にエントリーをキャッシュにロードするかどうかを指定します。このパラメーターの有効な値は truefalse です。
    4. purge パラメーターは、起動時にキャッスストアがパージされるかどうかを指定します。 このパラメーターの有効な値は truefalse です。
    <local-cache>
                 <mixed-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				     passivation="true" 
    				     preload="false" 
    				     purge="false">
    Copy to Clipboard Toggle word wrap
  2. binary-keyed-table 要素

    binary-keyed-table 要素は、混合のキャッシュエントリーを格納するために使用されるデータベーステーブルに関する情報を指定します。
    1. prefix パラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
    <local-cache>
          <mixed-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				     passivation="true" 
    				     preload="false" 
    				     purge="false">
    	         <binary-keyed-table prefix="MIX_BKT2">
                         <id-column name="id" 
    		                            type="${id.column.type}"/>
    		                 <data-column name="datum" 
    			                            type="${data.column.type}"/>
    		                 <timestamp-column name="version" 
    				                               type="${timestamp.column.type}"/>
                </binary-keyed-table>
    Copy to Clipboard Toggle word wrap
  3. string-keyed-table 要素

    string-keyed-table 要素は、文字別ベースのキャッシュエントリーを格納するために使用されるデータベーステーブルに関する情報を指定します。
    1. prefix パラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
    <local-cache>
          <mixed-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				     passivation="true" 
    				     preload="false" 
    				     purge="false">
    	         <binary-keyed-table prefix="MIX_BKT2">
                         <id-column name="id" 
    		                            type="${id.column.type}"/>
    		                 <data-column name="datum" 
    			                            type="${data.column.type}"/>
    		                 <timestamp-column name="version" 
    				                               type="${timestamp.column.type}"/>
                </binary-keyed-table>
                <string-keyed-table prefix="MIX_STR2">
    Copy to Clipboard Toggle word wrap
  4. id-column 要素

    id-column 要素は、キャッシュエントリーの ID を保持するデータベース列に関する情報を指定します。
    1. name パラメーターは ID 列の名前を指定します。
    2. type パラメーターは ID 列のタイプを指定します。
    <local-cache>
           <mixed-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				     passivation="true" 
    				     preload="false" 
    				     purge="false">
    	         <binary-keyed-table prefix="MIX_BKT2">
                         <id-column name="id" 
    		                            type="${id.column.type}"/>
    		                 <data-column name="datum" 
    			                            type="${data.column.type}"/>
    		                 <timestamp-column name="version" 
    				                               type="${timestamp.column.type}"/>
                </binary-keyed-table>
                <string-keyed-table prefix="MIX_STR2">
                         <id-column name="id" 
    			                          type="${id.column.type}"/>
    Copy to Clipboard Toggle word wrap
  5. data-column 要素

    data-column 要素には、キャッシュエントリーデータを保持するデータベース列に関する情報が含まれます。
    1. name パラメーターはデータベース列の名前を指定します。
    2. type パラメーターはデータベース列のタイプを指定します。
    <local-cache>
            <mixed-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				     passivation="true" 
    				     preload="false" 
    				     purge="false">
    	         <binary-keyed-table prefix="MIX_BKT2">
                         <id-column name="id" 
    		                            type="${id.column.type}"/>
    		                 <data-column name="datum" 
    			                            type="${data.column.type}"/>
    		                 <timestamp-column name="version" 
    				                               type="${timestamp.column.type}"/>
                </binary-keyed-table>
                     <string-keyed-table prefix="MIX_STR2">
                         <id-column name="id" 
    			                          type="${id.column.type}"/>
    		                 <data-column name="datum" 
    			                            type="${data.column.type}"/>
    Copy to Clipboard Toggle word wrap
  6. timestamp-column 要素

    timestamp-column 要素は、キャッシュエントリーのタイムスタンプを保持するデータベース列に関する情報を指定します。
    1. name パラメーターはタイムスタンプ列の名前を指定します。
    2. type パラメーターはタイムスタンプ列のタイプを指定します。
      <local-cache>
          <mixed-keyed-jdbc-store datasource="java:jboss/datasources/JdbcDS" 
    				     passivation="true" 
    				     preload="false" 
    				     purge="false">
    	         <binary-keyed-table prefix="MIX_BKT2">
                         <id-column name="id" 
    		                            type="${id.column.type}"/>
    		                 <data-column name="datum" 
    			                            type="${data.column.type}"/>
    		                 <timestamp-column name="version" 
    				                               type="${timestamp.column.type}"/>
                </binary-keyed-table>
                     <string-keyed-table prefix="MIX_STR2">
                         <id-column name="id" 
    			                          type="${id.column.type}"/>
    		                 <data-column name="datum" 
    			                            type="${data.column.type}"/>
    		             <timestamp-column name="version" 
    			  	                         type="${timestamp.column.type}"/>
     	        	 		</string-keyed-table>
            </mixed-keyed-jdbc-store>
    </local-cache>
    
    Copy to Clipboard Toggle word wrap

18.4.3.2. JdbcMixedStore の設定 (ライブラリーモード)

mixedKeyedJdbcStore の設定例は次の通りです。

手順18.15 ライブラリーモードでの JdbcMixedStore の設定

  1. mixedKeyedJdbcStore 要素

    mixedKeyedJdbcStore 要素は、キャッシュストアを設定するための次のパラメーターを使用します。
    1. fetchPersistentState パラメーターは、クラスターへ参加する時に永続状態が取り込まれるかを決定します。クラスター環境でレプリケーションとインバリデーションを使用している場合は、これを true に設定します。さらに、複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアのみがこのプロパティーを有効に設定できます。共有キャッシュストアが使用されている場合、キャッシュは、このプロパティーが true に設定されているにも関わらず、永続状態の転送を許可しません。fetchPersistentState パラメーターはデフォルトでは false に設定されます。
    2. ignoreModifications パラメーターは、キャッシュを変更する操作 (例: 配置、削除、消去、保存など) がキャッシュストアに影響を与えるかどうかを決定します。結果として、キャッシュストアは、キャッシュと同期しなくなります。
    3. purgeOnStartup パラメーターは、初回起動時にキャッシュがパージされるかどうかを指定します。
    4. key2StringMapper パラメーターは、キーをデータベーステーブルの文字列にマップするために使用される Key2StringMapper のクラス名を指定します。
    <persistence>
    	<mixedKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.persistence.keymappers.DefaultTwoWayKey2StringMapper">
    Copy to Clipboard Toggle word wrap
  2. binaryKeyedTable 要素および stringKeyedTable 要素

    binaryKeyedTable および stringKeyedTable 要素は、キャッシュエントリーを保存するテーブルを定義します。それぞれのユーザーは以下のパラメーターを使用してキャッシュストアを設定します。
    1. dropOnExit パラメーターは、シャットダウン時にデータベーステーブルがドロップされるかどうかを指定します。
    2. createOnStart パラメーターは、スタートアップ時にストアによってデータベーステーブルが作成されるかどうかを指定します。
    3. prefix パラメーターは、キャッシュバケットテーブルの名前を作成する際に、ターゲットキャッシュの名前に付与される文字列を定義します。
    <persistence>
    	<mixedKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.persistence.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE_BINARY">
    Copy to Clipboard Toggle word wrap
  3. idColumn 要素

    idColumn 要素は、キャッシュキーまたはバケット ID が保存される列を定義します。これは以下のパラメーターを使用します。
    1. 使用されている列の名前を指定するには、name パラメーターを使用します。
    2. 使用されている列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<mixedKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.persistence.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE_BINARY">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    Copy to Clipboard Toggle word wrap
  4. dataColumn 要素

    dataColumn 要素は、キャッシュエントリーまたはバケットが保存される列を指定します。
    1. 使用されている列の名前を指定するには、name パラメーターを使用します。
    2. 使用されている列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<mixedKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.persistence.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE_BINARY">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    Copy to Clipboard Toggle word wrap
  5. timestampColumn 要素

    timestampColumn 要素は、キャッシュエントリーまたはバケットのタイムスタンプが保存される列を指定します。
    1. 使用されている列の名前を指定するには、name パラメーターを使用します。
    2. 使用されている列のタイプを指定するには、type パラメーターを使用します。
    <persistence>
    	<mixedKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.persistence.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE_BINARY">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    			<timestampColumn name="TIMESTAMP_COLUMN" 
    					 type="BIGINT" />
    		</binaryKeyedTable>
    Copy to Clipboard Toggle word wrap
  6. string-keyed-table 要素

    string-keyed-table 要素は、文字別ベースのキャッシュエントリーを格納するために使用されるデータベーステーブルに関する情報を指定します。
    1. prefix パラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
    <persistence>
    	<mixedKeyedJdbcStore fetchPersistentState="false"
    			      ignoreModifications="false" 
    			      purgeOnStartup="false"
    			      key2StringMapper="org.infinispan.persistence.keymappers.DefaultTwoWayKey2StringMapper">
    		<connectionPool connectionUrl="jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1" 
    				username="sa" 
    				driverClass="org.h2.Driver"/>
    		<binaryKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE_BINARY">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    			<timestampColumn name="TIMESTAMP_COLUMN" 
    					 type="BIGINT" />
    		</binaryKeyedTable>
    		<stringKeyedTable dropOnExit="true" 
    				  createOnStart="true" 
    				  prefix="ISPN_BUCKET_TABLE_STRING">
    			<idColumn name="ID_COLUMN" 
    				  type="VARCHAR(255)" />
    			<dataColumn name="DATA_COLUMN" 
    				    type="BINARY" />
    			<timestampColumn name="TIMESTAMP_COLUMN" 
    					 type="BIGINT" />
    		</stringKeyedTable>
    	</mixedKeyedJdbcStore>
    </persistence>
    Copy to Clipboard Toggle word wrap

18.4.3.3. JdbcMixedStore のプログラムを使用した設定

以下は、JdbcMixedStore の設定例です。

手順18.16 プログラムを使用した JdbcMixedStore の設定

  1. 新規の設定ビルダーを作成します。

    ConfigurationBuilder を使用して、新規の設定オブジェクトを作成します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
    Copy to Clipboard Toggle word wrap
  2. JdbcMixedStoreConfigurationBuilder の追加

    このストアに関連する特定の設定を構築するには、JdbcMixedStore 設定ビルダーを追加します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcMixedStoreConfigurationBuilder.class)
    Copy to Clipboard Toggle word wrap
  3. 永続性のセットアップ

    fetchPersistentState は、キャッシュの永続状態を取り込むかどうかを決定し、クラスターに参加する際にこれをローカルキャッシュストアに適用します。キャッシュストアが共有される場合、キャッシュが同じキャッシュストアにアクセスする際に、 は無視されます。複数のキャッシュローダーがこのプロパティーを true に設定する場合にキャッシュサービスを起動すると、設定の例外がスローされます。fetchPersistentState プロパティーはデフォルトでは false です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcMixedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
    Copy to Clipboard Toggle word wrap
  4. 変更の設定

    ignoreModifications は、書き込み操作を共有キャッシュローダーではなく、ローカルファイルキャッシュローダーに許可することで、書き込みメソッドが特定のキャッシュローダーにプッシュされるかどうかを決定します。特定の場合に、一時的なアプリケーションデータは、インメモリーキャッシュと同じサーバー上のファイルベースのキャッシュローダーにのみ存在します。たとえば、これはネットワーク内のすべてのサーバーによって使用される追加の JDBC ベースのキャッシュローダーで適用されます。ignoreModifications はデフォルトではfalse です。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcMixedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
    Copy to Clipboard Toggle word wrap
  5. パージの設定

    purgeOnStartup は、初回の起動時にキャッシュがパージされるかどうかを指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcMixedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
    Copy to Clipboard Toggle word wrap
  6. テーブルの設定

    1. Drop Table On Exit メソッドの設定

      dropOnExit は、キャッシュストアが停止している際にテーブルを破棄するかどうかを決定します。これは、デフォルトでは false に設定されます。
    2. Create Table On Start メソッドの設定

      createOnStart は、現在テーブルが存在しない場合にキャッシュストアを起動すると、テーブルを作成します。このメソッドはデフォルトでは true です。
    3. Table Name Prefix の設定

      tableNamePrefix は、データが保存されるテーブルの名前にプレフィックスを設定します。
    4. idColumnName

      idColumnName プロパティーは、キャッシュキーまたはバケット ID が保存される列を定義します。
    5. dataColumnName

      dataColumnName プロパティーは、キャッシュエントリーまたはバケット ID が保存される列を指定します。
    6. timestampColumnName

      timestampColumnName 要素は、キャッシュエントリーのタイムスタンプまたはバケットが保存される列を指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcMixedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
         .stringTable()
            .dropOnExit(true)
            .createOnStart(true)
            .tableNamePrefix("ISPN_MIXED_STR_TABLE")
            .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
            .dataColumnName("DATA_COLUMN").dataColumnType("BINARY")
            .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
    Copy to Clipboard Toggle word wrap
  7. connectionPool 要素

    connectionPool 要素は、次のパラメーターを使用して JDBC ドライバーの接続プールを指定します。
    1. connectionUrl パラメーターは、JDBC ドライバー固有の接続 URL を指定します。
    2. username パラメーターには、connectionUrl 経由で接続するために使用されるユーザー名が含まれます。
    3. driverClass パラメーターは、データベースに接続するために使用されるドライバーのクラス名を指定します。
    ConfigurationBuilder builder = new ConfigurationBuilder();
      builder.persistence().addStore(JdbcMixedStoreConfigurationBuilder.class)
         .fetchPersistentState(false)
         .ignoreModifications(false)
         .purgeOnStartup(false)
         .stringTable()
            .dropOnExit(true)
            .createOnStart(true)
            .tableNamePrefix("ISPN_MIXED_STR_TABLE")
            .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
            .dataColumnName("DATA_COLUMN").dataColumnType("BINARY")
            .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
         .binaryTable()
            .dropOnExit(true)
            .createOnStart(true)
            .tableNamePrefix("ISPN_MIXED_BINARY_TABLE")
            .idColumnName("ID_COLUMN").idColumnType("VARCHAR(255)")
            .dataColumnName("DATA_COLUMN").dataColumnType("BINARY")
            .timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT")
         .connectionPool()
            .connectionUrl("jdbc:h2:mem:infinispan_binary_based;DB_CLOSE_DELAY=-1")
            .username("sa")
            .driverClass("org.h2.Driver");
    
    Copy to Clipboard Toggle word wrap

注記

プログラムを使用した設定は、Red Hat JBoss Data Grid ライブラリーモードのみで利用できます。

18.4.4. キャッシュストアのトラブルシューティング

18.4.4.1. JdbcStringBasedStore の IOExceptions

JdbcStringBasedStore を使用している時に IOException Unsupported protocol version 48 エラーが発生した場合、データ列タイプが正しいタイプである BLOBVARBINARY ではなく、VARCHARCLOB などに設定されていることを示しています。JdbcStringBasedStore は文字列であるキーのみを必要とし、値はバイナリー列に保存されるため、すべてのデータタイプを値に使用できます。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る