Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成の手引


4.3.2 ISTテーブルの概要

ISTテーブルの概要について説明します。

〈この項の構成〉

(1) ISTテーブルへのアクセス環境

ISTテーブルは,各ノードの共用メモリ上にあるテーブルです。テーブルの実体にあたるファイルはありません。そのため,UAPからISTテーブルへアクセスできるのは,オンライン中だけです。オフライン環境ではISTテーブルにはアクセスできません。

また,複数のノードでISTサービスを使う場合には,各ノードの時刻を合わせておく必要があります。ノード間で時刻が一致していないと,あるノードで更新したデータに対して,別のノードからの更新が反映されないことがあります。ISTサービスで複数のノードのISTレコード(ISTテーブル中のレコード)を更新する処理の流れを次の図に示します。

図4‒21 ISTレコードの更新処理

[図データ]

  1. ノードAのISTテーブルAのISTレコード(レコード番号1)を更新するレコード更新データを作成します。

  2. 現在の時刻(マシン時刻:マイクロ秒精度)を取得し,レコード更新データにタイムスタンプとして付与します。

  3. ノードAの共用メモリ上の該当するISTレコードに設定されているタイムスタンプとレコード更新データに付与したタイムスタンプとを比較します。

    レコード更新データの方が新しい場合は,共用メモリ上のISTレコードを更新します。レコード更新データの方が古い場合は,共用メモリ上のISTレコードを更新しません。なお,ISTレコードを更新しない場合も,dc_ist_write関数は正常にリターンします。

  4. 共用メモリ上のISTレコードを更新した場合,ノードAでISTレコードを更新したことをノードBのISTサービスへ通知します。このとき,ISTレコードとISTレコードに付与したタイムスタンプも通知します。

  5. 更新されたISTレコードを受信したノードBのISTサービスは,ノード内の該当するISTレコードに設定されているタイムスタンプと受信したISTレコードのタイムスタンプとを比較します。

  6. 5.の結果,受信したISTレコードのタイムスタンプの方が新しいと判断した場合だけ,ノードBの該当するISTレコードを,受信したISTレコードの情報に更新します。

上記のように,ISTサービスでは,ISTレコードを更新するか,またはそのままとするかを,タイムスタンプを基に判断しています。次のような場合は,最新の更新データがISTレコードに反映されないことがあります。

(2) ISTテーブルの構造

UAPからISTテーブルを参照,更新するときは,レコード単位でアクセスします。ISTテーブルは,複数のレコードから構成されます。UAPの処理では,一つのレコードへアクセスすることも,複数のレコードへ一括してアクセスすることもできます。