JPA 時間ベース・データ・アップデーター

Java Persistence API (JPA) 時間ベース・データベース・アップデーターは、 データベース内の最新の変更で ObjectGrid マップを更新します。

WebSphere® eXtreme Scale グリッドの背後にあるデータベースに変更が直接行われた場合、それらの変更は同時には eXtreme Scale グリッドに反映されません。eXtreme Scale をメモリー内のデータベース処理スペースとして正しく実装するには、グリッドがデータベースと同期しなくなる可能性があることを考慮する必要があります。時間ベース・データベース・アップデーター は、Oracle 10g のシステム変更番号 (SCN) 機能 および DB2® 9.5 の行変更タイム・スタンプを 使用して、無効化または更新のためにデータベース内の変更をモニターします。また、 アップデーターを使用すると、複数のアプリケーションが同じ目的でユーザー定義フィールドを設定することもできます。

図 1. 定期的リフレッシュ
定期的リフレッシュ

時間ベース・データベース・アップデーターでは、JPA インターフェースを使用して、定期的にデータベースを照会し、データベース内で新たに挿入され、更新されたレコードを示す JPA エンティティーを取得します。レコードを定期的に更新するために、データベース内のすべてのレコードには、レコードが最後に更新または挿入された時点の時刻または順序を識別するためのタイム・スタンプが必要です。タイム・スタンプはタイム・スタンプ形式になっている必要はありません。タイム・スタンプ値は、固有の漸増値を生成する場合は、整数または長形式とすることができます。

この機能は、いくつかの市販のデータベースで提供されています。

例えば、DB2 9.5 では、 ROW CHANGE TIMESTAMP 形式を使用する列を以下のように定義できます。

ROWCHGTS TIMESTAMP NOT NULL
      GENERATED ALWAYS
      FOR EACH ROW ON UPDATE AS
      ROW CHANGE TIMESTAMP

Oracle では、レコードのシステム変更番号を示す ora_rowscn という疑似列を使用することができます。

時間ベース・データベース・アップデーターは、ObjectGrid マップを次の 3 つの異なる方法で更新します。
  1. INVALIDATE_ONLY: データベース内の対応するレコードが変更された場合に、ObjectGrid マップのエントリーを無効化します。
  2. UPDATE_ONLY: データベース内の対応するレコードが変更された場合に、ObjectGrid マップのエントリーを更新します。ただし、データベースに新たに挿入されたレコードは、すべて無視されます。
  3. INSERT_UPDATE: ObjectGrid マップの既存のエントリーをデータベースの最新の値で更新します。また、データベースに新たに挿入されたレコードが、すべて ObjectGrid マップに挿入されます。

JPA 時間ベース・データ・アップデーターについて詳しくは、 JPA 時間ベース・データ・アップデーターの構成を参照してください。