3.4. 永続キャッシュストア
Data Grid 7.x と比較すると、Data Grid 8 のキャッシュストア設定にいくつかの変更があります。
永続性 SPI
Data Grid 8.1 では、キャッシュストア用の NonBlockingStore インターフェイスが導入されています。NonBlockingStore SPI は、呼び出し元のスレッドをブロックしてはならないメソッドを公開します。
データグリッドを永続データソースに接続するキャッシュストアは、NonBlockingStore インターフェイスを実装します。
ブロッキング操作を使用するカスタムキャッシュストア実装の場合、Data Grid は それらの操作を処理するための BlockingManager ユーティリティークラスを提供します。
NonBlockingStore インターフェイスの導入により、以下のインターフェイスは非推奨になります。
-
CacheLoader -
CacheWriter -
AdvancedCacheLoader -
AdvancedCacheWriter
カスタムキャッシュストア
Data Grid 8 では、以前のバージョンと同様に、store 要素を使用してカスタムキャッシュストアを設定できます。
次の変更が適用されます。
-
singleton属性が削除されます。代わりにshared=trueを使用してください。 -
segmented属性が追加され、デフォルトでtrueになります。
セグメント化されたキャッシュストア
Data Grid 8 の時点で、キャッシュストア設定はデフォルトで segmented="true" になり、次のキャッシュストア要素に適用されます。
-
store -
file-store -
string-keyed-jdbc-store -
jpa-store -
remote-store -
rocksdb-store -
soft-index-file-store
Data Grid 8.3 では、キャッシュ設定の file-store 要素によりソフトインデックスのファイルベースストアが作成されます。詳細は 、ファイルベースのキャッシュストアのデフォルトはソフトインデックス を参照してください。
単一ファイルキャッシュストア
シングルファイルキャッシュストアの relative-to 属性は、Data Grid 8 削除されています。キャッシュストア設定にこの属性が含まれている場合、Data Grid はそれを無視し、path 属性のみを使用してストアの場所を設定します。
JDBC キャッシュストア
JDBC キャッシュストアには、xlmns 名前空間宣言を含める必要があります。これは一部の Data Grid 7.x バージョンでは必要ありませんでした。
<persistence> <string-keyed-jdbc-store xmlns="urn:infinispan:config:store:jdbc:14.0" shared="true"> ... </persistence>
JDBC 接続ファクトリー
Data Grid 7.x JDBC キャッシュストアは、次の ConnectionFactory 実装を使用してデータベース接続を取得できます。
-
ManagedConnectionFactory -
SimpleConnectionFactory -
PooledConnectionFactory
Data Grid 8 は、Red Hat JBoss EAP と同じ Agroal に基づく接続ファクトリーを使用してデータベースに接続するようになりました。c3p0.properties および hikari.properties ファイルを使用できなくなりました。
Data Grid 8.3 JDBC 接続ファクトリーは org.infinispan.persistence.jdbc.common.configuration パッケージに含まれます。
セグメンテーション
今デフォルトでセグメンテーションを可能に JDBC 文字列ベースのキャッシュストアの設定は、次のプログラムの例のように 、segmentColumnName と segmentColumnType パラメーターを含める必要があります。
MySQL の例
builder.table()
.tableNamePrefix("ISPN")
.idColumnName("ID_COLUMN").idColumnType(“VARCHAR(255)”)
.dataColumnName("DATA_COLUMN").dataColumnType(“VARBINARY(1000)”)
.timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType(“BIGINT”)
.segmentColumnName("SEGMENT_COLUMN").segmentColumnType("INTEGER")
PostgreSQL Example
builder.table()
.tableNamePrefix("ISPN")
.idColumnName("ID_COLUMN").idColumnType(“VARCHAR(255)”)
.dataColumnName("DATA_COLUMN").dataColumnType(“BYTEA”)
.timestampColumnName("TIMESTAMP_COLUMN").timestampColumnType("BIGINT”)
.segmentColumnName("SEGMENT_COLUMN").segmentColumnType("INTEGER");
ライトビハインド
Write Behind モードの thread-pool-size 属性は、Data Grid 8 で削除されています。
キャッシュストアとローダーの削除
Data Grid 7.3 は、Data Grid 8 で使用できなくなった次のキャッシュストアとローダーを非推奨にします。
- Cassandra キャッシュストア
- REST キャッシュストア
- LevelDB キャッシュストア
- CLI キャッシュローダー
キャッシュストアマイグレーター
以前のバージョンのデータグリッドのキャッシュストアは、データグリッド 8 と互換性のないバイナリー形式でデータを保存します。
StoreMigrator ユーティリティーを使用して、永続キャッシュストア内のデータを Data Grid 8 に移行します。
3.4.1. ファイルベースのキャッシュストアがデフォルト soft index に設定される
キャッシュ設定に file-store 永続性を含めると、単一ファイルキャッシュストア SingleFileStore ではなく、soft index ファイルベースのキャッシュストア SoftIndexFileStore が作成されるようになりました。Data Grid 8.2 以前では、SingleFileStore はファイルベースのキャッシュストアのデフォルトでした。
Data Grid 8.3 に移行またはアップグレードする場合、file-store 設定はサーバーの起動時に SoftIndexFileStore に自動的に変換されます。新しいストアとの互換性を確保するため、設定が SoftIndexFileStore に変換されると、その設定を変更せずに SingleFileStore に戻すことはできません。
3.4.1.1. 宣言型設定
Data Grid 8.2 以前
<persistence>
<soft-index-file-store xmlns="urn:infinispan:config:soft-index:12.1">
<index path="testCache/index" />
<data path="testCache/data" />
</soft-index-file-store>
</persistence>
Data Grid 8.3 以降
<persistence>
<file-store>
<index path="testCache/index" />
<data path="testCache/data" />
</file-store>
</persistence>
3.4.1.2. プログラムによる設定
Data Grid 8.2 以前
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
.addStore(SoftIndexFileStoreConfigurationBuilder.class)
.indexLocation("testCache/index");
.dataLocation("testCache/data")
Data Grid 8.3 以降
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
.addSoftIndexFileStore()
.indexLocation("testCache/index")
.dataLocation("testCache/data");
3.4.1.3. Data Grid 8.3 での単一ファイルキャッシュストアの使用
SingleFileStore キャッシュストアは、Data Grid 8.3 以降で設定できますが、Red Hat ではこれを推奨していません。SoftIndexFileStore キャッシュストアを使用するとスケーラビリティーが向上するため、こちらを使用するようにしてください。
宣言的
<persistence passivation="false">
<single-file-store shared="false"
preload="true"
fetch-state="true"
read-only="false"/>
</persistence>
プログラマティック
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
.addSingleFileStore();