Hitachi

インメモリデータグリッド Hitachi Elastic Application Data Store ユーザーズガイド


11.15.1 優先度が低いデータを自動的に削除する手順

この項の内容は,メモリキャッシュまたはディスクキャッシュを使用する場合にお読みください。

データ自動削除機能を使用して,優先度が低いデータを自動的に削除する手順について説明します。

ポイント

データ自動削除機能を使用する場合は,Javaヒープの容量,およびExplicitヒープの容量について見積もる必要があります。データ自動削除機能を使用する場合の見積もりの方法については,「4. 必要なリソースを確認する」を参照してください。

〈この項の構成〉

(1) データ総量監視機能を有効にする

データ自動削除機能の前提となるデータ総量監視機能を有効にしてください。データ総量監視機能については,「11.14 データの格納先の空き容量を管理したい」を参照してください。

(2) データの自動削除ポリシーを決める

eads.cache.eviction.policyパラメタで,データの自動削除ポリシーを決めます。データ自動削除機能を使用して,しきい値を超えたデータを削除する場合の動作を指定する必要があります。

eads.cache.eviction.policyパラメタに,次のどちらかを指定してください。

なお,データの更新順およびデータの参照順は,次の操作が実行されるたびに更新されます(データの更新順およびデータの参照順が新しくなります)。

表11‒5 データの更新順およびデータの参照順が更新される操作一覧

データの自動削除ポリシー

データの更新順およびデータの参照順が更新される操作

API

コマンド

FIFO

データの更新操作
  • put

  • putAll

  • create

  • update

  • replace

データの更新操作

LRU

データの更新操作
  • put

  • putAll

  • create

  • update

  • replace

データの参照操作
  • get

  • getAll

データの更新操作
データの参照操作
注意事項

データの更新順およびデータの参照順の情報は,EADSサーバが起動している間だけ保持されます。EADSサーバを再起動した場合は初期化されます。

注意事項

データを多重化している場合に,eads.cache.eviction.policyパラメタにLRUを指定したときは,データが使用された順番の管理方法がEADSサーバによって異なります。

  • データの格納先EADSサーバは,データの更新操作およびデータの参照操作の順番で管理します。

  • データのコピー先EADSサーバは,データの更新操作の順番で管理します。

そのため,障害などが発生し,アクセス先が自動的にデータのコピー先EADSサーバに切り替わった直後は,データの更新操作およびデータの参照操作の順ではなく,データの更新操作の順番が古いデータから削除されます。そのあとは,データの更新操作およびデータの参照操作の順番で管理します。

(3) データを削除するためのしきい値を決める

eads.cache.eviction.keyCountパラメタで,データを削除するためのしきい値として使用する1レンジ当たりのデータ件数を決めます。

データ自動削除機能の前提となるデータ総量監視機能による1EADSサーバに格納する1レンジ当たりのデータ件数(eads.cache.keyCountパラメタ)は,次の条件を満たすような値を指定する必要があります。

eads.cache.keyCountパラメタの指定値=

  eads.cache.eviction.keyCountパラメタの値 <

  eads.cache.keyCountパラメタの値

(4) データ自動削除機能で優先度が低いデータを削除する

データ総量監視機能を有効にして,eads.cache.eviction.policyパラメタおよびeads.cache.eviction.keyCountパラメタを指定したら,データ自動削除機能を使用できます。

データ自動削除機能は,API(create,put,putAll)およびeztool putコマンドによって格納される新規データがeads.cache.eviction.keyCountパラメタで指定したしきい値を超えた場合に,eads.cache.eviction.policyパラメタで指定したデータの自動削除ポリシーに従って,しきい値を超えたデータが自動的に削除されます。

データの自動削除は,createおよびputの処理の場合はremoveが使用されます。putAllの処理の場合は削除件数に関係なく,removeAllが使用されます。

参考

データ自動削除機能でデータが削除された場合,removeまたはremoveAllに関連するキャッシュの統計情報が更新されます。キャッシュの統計情報については,「11.13.3(1) キャッシュの統計情報(eads_cache_stats.csv)に出力される情報」を参照してください。

注意事項
  • API(put,putAll)およびeztool putコマンドの場合,新規データを格納するかどうかに関係なく,しきい値を超えるデータは削除されます。そのため,既存のデータを更新する場合には,一時的にデータ件数がしきい値を下回ることがあります。

  • データの削除に失敗した場合,データの更新操作は実行されません。エラーコードが返却されます。

  • API(putAll)の場合,データの削除に失敗したキーはデータの更新が実行されません。データの削除に成功したキーはデータの更新が実行されます。

(5) データ自動削除機能を使用する場合の注意事項

  1. EADSサーバのデータが自動で削除されると問題になる場合は,データ自動削除機能を使用しないでください。

  2. クラスタの停止時のデータの読み込みが不要な場合,EADSサーバを起動したときに,データを読み込まないでキャッシュを再作成する次の運用を推奨します。

    • eztool closeコマンドで,クラスを閉塞状態にする。

    • eztool stopコマンドに--no_exportオプションを指定してクラスタを終了する。

    • ezstartコマンド,またはezserverコマンドでEADSサーバを開始する。

    • ディスクキャッシュを使用している場合,すべてのディスクキャッシュに対してeztool deleteecfコマンドでキャッシュファイルを削除する。

    • eztool createcacheコマンドで,使用するすべてのキャッシュを再作成する。

    • eztool openコマンドで,クラスタの閉塞状態を解除する。

  3. データ自動削除機能を使用する場合,スケールアウト処理およびリバランス処理は使用できません。

  4. 次のコマンドを使用してデータを読み込んだ場合は,データの読み込み順で,データの更新操作およびデータの参照操作の順番が初期化されます。

    • メモリキャッシュおよびディスクキャッシュを使用している場合

      ezstart -rコマンド(復旧したEADSサーバだけが対象となります)

      ezserver -rコマンド(復旧したEADSサーバだけが対象となります)

    • メモリキャッシュを使用している場合

      eztool importコマンド

    • ディスクキャッシュを使用している場合

      eztool resumeコマンド

      eztool importecfコマンド

  5. メモリキャッシュでデータの読み込みを行う場合の注意点を次に示します。

    • eztool importコマンドでストアデータファイルからデータを読み込んだ場合に,しきい値として指定したレンジのデータ件数を超えるレンジからは,それ以上データの読み込みを行いません。しきい値として指定したデータ件数を超えるレンジのデータが格納されていた場合,コマンドのリターンコードに10が返却されます。また,すべてのデータを読み込む場合は,レンジに格納されたデータ件数以上の値をしきい値に指定する必要があります。

    • eztool importコマンドで,eztool exportコマンドに-sまたは--singleオプションを指定して出力したストアデータファイルは読み込まないで,eztool createcacheコマンドでキャッシュを再作成し,必要に応じてデータを再投入することを推奨します。eztool exportコマンドに-sまたは--singleオプションを指定して出力したストアデータファイルを読み込む場合は,データ自動削除機能のしきい値(eads.cache.eviction.keyCountパラメタの指定値)をストアデータファイル出力時に設定してあったしきい値よりも小さい値に変更しないでください。

  6. ディスクキャッシュでデータの読み込みを行う場合の注意点を次に示します。

    • eztool importecfコマンドで永続データを再配置する場合,しきい値として指定したレンジのデータ件数を超えるレンジからは,それ以上データの読み込みを行いません。しきい値として指定したデータ件数を超えるレンジのデータが格納されていた場合,コマンドのリターンコードに10が返却されます。また,すべてのデータを読み込む場合は,レンジに格納されたデータ件数以上の値をしきい値に指定する必要があります。

    • eztool importecfコマンドで,キャッシュデータファイルおよびキャッシュインデックスファイルが破損していたり,障害時のファイルだったりした場合は読み込まないでeztool createcacheコマンドでキャッシュを再作成し,必要に応じてデータを再投入することを推奨します。また,読み込み対象のファイルが破損していたり,障害時のファイルだったりした場合に読み込むときは,データ自動削除機能のしきい値(eads.cache.eviction.keyCountパラメタの指定値)をキャッシュ使用時に設定してあったしきい値よりも小さい値に変更しないでください。

  7. ディスクキャッシュを使用する場合,データ自動削除機能を使用するときでも,APIでkeyを削除するときと同様に,コンパクションを実行するまでキャッシュデータファイルの空き容量は増加しません。そのため,空き容量が不足した場合は,API(create,put,putAll)がデータ総量監視機能のキャッシュファイルの空き容量不足でエラーとなります。

  8. API(create,put,putAll)がデータ総量監視機能の登録済みキー数の上限でエラーとなった場合は,次のパラメタの指定値を見直してください。

  9. API(create,put,putAll)がデータ総量監視機能によるvalueの格納先であるExplicitヒープの空き容量不足でエラーとなった場合は,valueのサイズが容量見積もり時より大きくなっていないかを見直してください。または,見積もり結果が過少でないかについても確認してください。

  10. API(create,put,putAll)がデータ総量監視機能のキャッシュファイルの空き容量不足(ディスクキャッシュ使用時)でエラーとなった場合は,レコード1件分のサイズが容量見積もり時より大きくなっていないかを見直してください。または,見積もり結果が過少でないか,コンパクションで空き容量を確保できているかについても確認してください。