10.2.2. 単一ファイルキャッシュストア
Single File キャッシュストアである SingleFileStore
は、ファイルにデータを永続化します。また、Data Grid は、キーと値がファイルに保存される間に、キーのインメモリーインデックスも維持されます。デフォルトでは、単一ファイルキャッシュストアはセグメント化されるため、Data Grid は各セグメントに個別のファイルを作成します。
SingleFileStore
はキーのインメモリーインデックス、および値の場所を保持するため、キーのサイズと数に応じて追加のメモリーが必要です。このため、SingleFileStore
は、鍵のサイズが大きいユースケースには推奨されません。
SingleFileStore
が断片化される場合もあります。値のサイズが継続的に増加している場合は、単一ファイルで利用可能な領域は使用されませんが、エントリーはファイルの最後に追加されます。このファイルで使用可能な領域は、エントリーに収まることができる場合に限り使用されます。同様に、メモリーからすべてのエントリーを削除すると、単一のファイルストアのサイズが減少したり、デフラグしたりしません。
宣言型設定
<persistence> <file-store max-entries="5000"/> </persistence>
プログラムによる設定
- 埋め込みデプロイメントの場合は、以下を実行します。
ConfigurationBuilder b = new ConfigurationBuilder(); b.persistence() .addSingleFileStore() .maxEntries(5000);
- サーバーデプロイメントの場合は、以下を実行します。
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder; import org.infinispan.client.hotrod.configuration.NearCacheMode; ... ConfigurationBuilder builder = new ConfigurationBuilder(); builder .remoteCache("mycache") .configuration("<infinispan><cache-container><distributed-cache name=\"mycache\"><persistence><file-store max-entries=\"5000\"/></persistence></distributed-cache></cache-container></infinispan>");
セグメンテーション
単一ファイルキャッシュは、セグメンテーションをサポートし、セグメントごとに別のインスタンスを作成するので、設定するパスに複数のディレクトリーが作成されます。各ディレクトリーは、データマップ先のセグメントを表す数字です。