Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Client for .NET Framework 使用の手引


2.3.1 トランザクション制御機能の概要

トランザクション制御機能を使用すると,アプリケーションでトランザクションを管理できます。そのため,処理が失敗した場合でも,データが失われたり,不整合が発生したりすることを避けられます。

〈この項の構成〉

(1) トランザクションのコミットとロールバック

トランザクションとは,関連する複数の処理を一つのまとまった処理として扱うための論理的な単位です。一つのトランザクション内で実行した処理は,すべてが有効になるか,すべてが無効になるかのどちらかです。

トランザクションを有効にすることを,トランザクションのコミットといいます。トランザクションがコミットして初めてトランザクション処理の結果が有効になります。

トランザクションをコミットするかどうか最終的に決定するトランザクション処理の区切りを,同期点といいます。

トランザクションを無効にして,処理対象としていた資源をトランザクション開始直前の状態に戻すことを,トランザクションのロールバックといいます。トランザクションをコミットできなかった場合や,処理の不整合を検出した場合などは,これまでの処理をロールバックで取り消して,データの整合性を保ちます。

(2) グローバルトランザクション

UAPでRPCを実行すると,トランザクションは複数のUAPプロセスにわたります。

複数のプロセスで構成されるトランザクションを,グローバルトランザクションといいます。グローバルトランザクションを構成する各プロセスを,トランザクションブランチといいます。特に,トランザクションの開始を宣言したプロセスをルートトランザクションブランチといいます。

(3) ローカルトランザクション

OpenTP1が管理するトランザクションです。Client .NETを使用するCUP.NET上でのリソースマネジャへのアクセスをトランザクションに含めることはできません。

CUP.NETのプロセスはルートトランザクションブランチになることはできません。

TP1ClientクラスのBeginメソッドによってトランザクションを開始した場合,rapサーバのプロセスがルートトランザクションブランチになります。

(4) 連鎖モードと非連鎖モード

トランザクション処理の同期点取得には,一つのトランザクションの終了後,同期点を取得して次のトランザクションを続けて起動する連鎖モードのコミットと,トランザクションの終了で同期点を取得したあと,新たなトランザクションを起動しない非連鎖モードのコミットがあります。

また同様に,連鎖モードのロールバックと,非連鎖モードのロールバックがあります。連鎖モードのロールバックでは,ロールバック処理後もUAPプロセスはグローバルトランザクションの範囲内にありますが,非連鎖モードのロールバックでは,UAPプロセスはグローバルトランザクションの範囲外となります。

(5) RPCの形態と同期点の関係

RPCの形態と同期点の関係を次に示します。

(a) 同期応答型RPCと同期点の関係

同期応答型RPCで要求を行うトランザクション処理の場合,クライアントUAPに処理結果が戻って,同期点処理を終えた時点で,トランザクションの終了となります。

(b) 非応答型RPCと同期点の関係

非応答型RPCで要求を行うトランザクション処理の場合,クライアントUAPと,サーバUAPの処理終了で同期を取ります。