ObjectGrid 記述子 XML ファイルで BackingMap または ObjectMap オブジェクトの CopyMode 属性を定義することで、コピーの数を調整することができます。
更新される可能性があるマップに NO_COPY 属性値を使用する場合は、注意が必要です。WebSphere® eXtreme Scale は最初のタッチ時のコピーを使用して、トランザクションのロールバックを可能にします。 アプリケーションはコピーを変更しただけなので、eXtreme Scale はそのコピーを破棄します。 NO_COPY 属性値が使用され、かつアプリケーションがコミットされた値を変更した場合は、ロールバックを完了することが不可能になります。 索引やレプリカはトランザクションのコミット時に更新されるため、コミット済みの値を変更すると、索引、レプリカ生成などに問題が生じます。コミット済みのデータを変更してからトランザクションをロールバックした場合は、これによって実際にはまったくロールバックされないため、索引は更新されず、レプリカ生成は行われません。 他のスレッドは、コミットされていない変更を、ロックがあっても即時に参照することができます。 読み取り専用マップ、または値を変更する前に適切なコピーを完了するアプリケーションの場合は、NO_COPY 属性値を使用してください。 NO_COPY 属性値を使用した場合に、データ保全性の問題で IBM® サポートに連絡すると、コピー・モードを COPY_ON_READ_AND_COMMIT に設定して問題を再現するように求められます。
COPY_TO_BYTES 値は、マップ内の値をシリアライズ・フォームに保管します。 eXtreme Scale は、読み取り時にシリアライズ・フォームからの値を拡張し、コミット時に値をシリアライズ・フォームに保管します。 この方法によれば、読み取り時とコミット時の両方でコピーが行われます。
マップのデフォルトのコピー・モードは、BackingMap オブジェクトで構成することができます。さらに、トランザクションを開始する前に、ObjectMap.setCopyMode メソッドを使用してマップのコピー・モードを変更することができます。
<cc:backingMap name="RuntimeLifespan" copyMode="NO_COPY"/>