5.5. ファイルシステムベースのキャッシュストア
通常、ファイルシステムベースのキャッシュストアは、メモリーからオーバーフローしたデータを保存し、サイズや時間の制限を超過する、ローカルで利用可能なキャッシュストアを持つキャッシュを取得する場合に使用されます。
NFS、Windows 共有などの共有ファイルシステムでファイルシステムベースのキャッシュストアを使用すると、適切なファイルロックが実装されず、データが破損する可能性があるため、回避する必要があります。ファイルシステムは通常トランザクションではないため、トランザクションコンテキストでキャッシュを使用しようとすると(コミットフェーズ中に発生する)ファイルへの書き込みに失敗します。
5.5.1. 単一ファイルストア リンクのコピーリンクがクリップボードにコピーされました!
単一ファイルキャッシュストアは、すべてのデータを 1 つのファイルに保持します。データを検索する方法は、キーのインメモリーインデックスと、その値の位置を保持することで、このファイルにあります。これにより、古いファイルキャッシュストアと比較してパフォーマンスが向上します。ただし、注意点があります。1 つのファイルベースのキャッシュストアは鍵をメモリーに保持するため、メモリー消費が増大するため、大きなキーを持つキャッシュを使用することは推奨されません。
特定のユースケースでは、このキャッシュストアは断片化からの影響を受けます。大きな値を保存すると、領域は再利用されず、エントリーがファイルの末尾に追加されます。スペース(現在は空)は、配置できる別のエントリーを書き込む場合にのみ再利用されます。また、キャッシュからすべてのエントリーを削除すると、ファイルは縮小されず、デフラグされません。
以下は、単一のファイルキャッシュストアで使用できる設定オプションです。
pathは、Red Hat Data Grid がデータを格納するファイルシステムの場所です。埋め込みデプロイメントの場合、Red Hat Data Grid はデータを現在の作業ディレクトリーに保存します。別の場所にデータを保存するには、そのディレクトリーへの絶対パスを値として指定します。
サーバーのデプロイメントの場合には、Red Hat Data Grid はデータを
$RHDG_HOME/dataに保存します。Red Hat Data Grid サーバーのデフォルトの場所は変更しないでください。つまり、サーバーデプロイメントでpathの値を設定しないでください。
パス宣言を作成し、ファイルストアの場所に relative-to 属性を使用する必要があります。relative-to をディレクトリーの場所または環境変数に設定すると、Red Hat Data Grid サーバーの起動に失敗します。
-
max-entriesは、このファイルストアに保持するエントリーの最大数を指定します。前述のように、ルックアップを迅速化するために、単一のファイルキャッシュストアはキーとその対応する位置をファイルに保持します。このインデックスでメモリー消費の問題が発生するのを回避するために、このキャッシュストアは、保存するエントリーの最大数によってバインドされます。この制限を超えると、インメモリーインデックスと基礎となるファイルベースのキャッシュストアの両方から LRU アルゴリズムを使用してエントリーが完全に削除されます。そのため、Red Hat Data Grid がキャッシュとして使用される場合にのみ最大制限を設定すると、コンテンツを再計算できるか、権威データストアから取得できます。Red Hat Data Grid が権威データストアとして使用されるときにこの最大制限が設定されている場合には、データが失われる可能性があるため、このユースケースでは推奨されません。デフォルト値は-1で、ファイルストアサイズは無制限になります。
5.5.1.1. 宣言型設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、単一のファイルキャッシュストアの宣言設定を示しています。
ライブラリーモード
<persistence> <file-store path="/tmp/myDataStore" max-entries="5000"/> </persistence>
<persistence>
<file-store path="/tmp/myDataStore" max-entries="5000"/>
</persistence>
サーバーモード
<persistence> <file-store max-entries="5000"/> </persistence>
<persistence>
<file-store max-entries="5000"/>
</persistence>
5.5.1.2. プログラムによる設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、単一のファイルキャッシュストアのプログラムによる設定を示しています。
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
.addSingleFileStore()
.location("/tmp/myDataStore")
.maxEntries(5000);
ConfigurationBuilder b = new ConfigurationBuilder();
b.persistence()
.addSingleFileStore()
.location("/tmp/myDataStore")
.maxEntries(5000);