DataStage の Distributed Transaction ステージ
IBM® MQ または Apache Kafka によって管理される複数のデータ・ソースにまたがるトランザクションを実行するには、分散トランザクション・ステージを使用します。 入力コネクタとして、IBM Db2の場合 DataStage の場合、Oracle DatabaseはDataStageの場合、ODBC、IBM MQ、Teradataを使うことができます。
概要
トランザクションは、単一の操作として実行される一連のアクションです。 トランザクションは、変更を永続的なものにするコミット・アクションで終了します。 いずれかの変更をコミットできない場合、トランザクションはすべての変更をロールバックします。
分散トランザクションは、1 つ以上のデータベースや IBM MQ メッセージ・キューなどのトランザクション・マネージャーなど、複数のデータ・ソースにまたがる可能性のあるトランザクションです。 トランザクションを正常にコミットするには、個々のデータ・ソースがすべて正常にコミットされている必要があります。 いずれかのリソースがコミットできない場合、トランザクション全体がロールバックされます。 例えば、分散トランザクションは、異なるデータベース上にある 2 つの銀行口座間の送金で構成される場合があります。 トランザクションは、一方の口座からの引き出しおよび他方の口座への預金が正常に完了した場合にのみコミットされます。
- トランザクション境界を定義し、トランザクションを構成するアクションを指定するアプリケーション・プログラム
- リソース・マネージャー (共有データ・ソースへのアクセスを提供するデータベースやファイル・システムなど)
- トランザクションに ID を割り当て、その進行状況をモニターし、トランザクションの完了と障害のリカバリーを管理するトランザクション・マネージャー
分散トランザクション・フローの標準的な設計の例では、 IBM MQ コネクターは、メッセージ・キューからソース・メッセージを取り込み、そのメッセージを永続作業キューに移動します。 コネクターは、データ、メッセージ ID、およびその他のメッセージ・ヘッダー・フィールドをソースからターゲット・メッセージにコピーします。 また、コネクターはメッセージ・データを出力リンクに送信します。 1 つ以上のステージが Oracle Database for DataStage コネクターからのメッセージ・データおよび追加データを処理し、処理されたデータを 1 つ以上のリンクを介して Distributed Transaction ステージに送信します。 ステージへの各入力リンクは、ターゲット・データベースへの出力を表します。 リンクは、元のソース・メッセージのメッセージ ID を提供します。これは、分散トランザクションの一部として作業キューからコンシュームされます。
「入力」タブ
各入力リンクのコネクター・プロパティーを構成します。 データ・ソースを選択し、関連する接続プロパティーを指定します。 ターゲットにデータを書き込むために使用する書き込みメソッドを選択し、その書き込みメソッドおよびターゲットに必要なプロパティーを指定します。
ステージ・タブ
トランザクション・マネージャーと接続を指定します。 グローバル・トランザクションおよび IBM MQ メッセージングを使用可能にするかどうかを選択します。 メッセージの移動先の作業キューを指定します。 失敗したユニットを拒否するかどうかを選択できます。これにより、失敗したレコードを含むトランザクションがロールバックされます。 失敗したレコードを保管するためのリジェクト・キューを指定し、その他のリジェクト・プロパティーを設定することができます。 入力リンクを処理する順序を指定できます。 レコードがどのリンク上にあるかに関係なく、レコード処理の順序を制御するためにレコードの順序をセットアップすることもできます。