Informatica でのトランザクション制御変換 (例)

⚡ スマートサマリー

Informatica のトランザクション制御変換は、行をコミットまたはロールバックするアクティブな接続オブジェクトであり、マップはping 実行時には、各行に対して一度評価される条件の中に5つの組み込み変数を使用します。

  • 🔄 5つの組み込み変数: TC_CONTINUE_TRANSACTION、TC_COMMIT_BEFORE、TC_COMMIT_AFTER、TC_ROLLBACK_BEFORE、TC_ROLLBACK_AFTERは、各行で何が起こるかを決定します。
  • ⚙️ 条件はプロパティにあります: プロパティタブの「トランザクション制御条件」フィールドには、統合サービスが評価するIIF式が格納されます。
  • 🧪 実例: セブンマップping 設計手順では、部門番号20が見つかるたびにEMPデータをEMP_TARGETにコミットします。
  • 効果的か非効果的か: トランザクション境界を解除する変換は、その背後にあるターゲットに対してオブジェクトを無効にします。
  • 🔧 セッションコミットタイプ: 地図ping 効果的なトランザクション制御変換は、ユーザー定義のコミットタイプで実行されます。
  • ⚠️ 厳密な戻り値: 条件がコミット、ロールバック、または続行以外の値を返すと、インテグレーションサービスはセッションを失敗させます。

Informatica でのトランザクション制御の変換

トランザクション制御変換とは何ですか?

トランザクション制御は、マップの実行中にトランザクションをコミットまたはロールバックできる、アクティブで接続された変換です。pingコミットとロールバック操作は、データの可用性を保証するため、非常に重要です。

大量のデータを処理する際には、データをターゲットにコミットする必要がある状況が発生する場合があります。コミットが頻繁に行われると、システムにオーバーヘッドが発生します。一方、コミットが遅すぎると、障害発生時にデータ損失のリスクが高まります。

そのため、柔軟性を持たせるためにトランザクション制御変換が提供されています。コミットポイントをセッションのデフォルトに任せるのではなく、内部の条件を 地図ping 行ごとに、ある取引がどこで終わり、次の取引がどこで始まるかを決定する。

TCLのコミットおよびロールバックコマンド

この変換処理には、操作を処理するための組み込み変数が5つ用意されています。条件は各行に対して、これら5つのうちいずれか1つを返す必要があり、リスト外の値を返すと、インテグレーションサービスはセッションを失敗させます。

TC_CONTINUE_TRANSACTION

TC_CONTINUE_TRANSACTIONでは、何も操作は実行されず、データロード処理はそのまま継続されます。これは式のデフォルト値です。

TC_COMMIT_BEFORE

TC_COMMIT_BEFORE において、このフラグが設定されている場合、現在の行の処理前にコミットが実行されます。その後、新しいトランザクションが開始され、現在の行がターゲットに書き込まれます。

TC_COMMIT_AFTER

TC_COMMIT_AFTERでは、現在の行が処理された後、コミットが実行され、次のトランザクションが開始されます。

TC_ROLLBACK_BEFORE

TC_ROLLBACK_BEFOREでは、まずロールバックが実行され、その後データが処理されて書き込まれます。

TC_ROLLBACK_AFTER

TC_ROLLBACK_AFTERでは、データが処理された後、ロールバックが実行されます。

トランザクション制御変換プロパティ

オブジェクトの設定は、「変換の編集」ウィンドウから行います。このウィンドウには、他のPowerCenter変換と同様に4つのタブがあります。どのタブにどの設定項目があるかを把握しておくと、以下の手順で探す手間が省けます。

タブ そこに何が設定されているか
変換 変換の名前、その説明、およびオブジェクトが再利用可能になるかどうか。
ポート 入力ポートと出力ポートは、通常、上流の変換処理から列をドラッグインすることで作成されます。
特性 トランザクション制御条件は、フィールドの横にある小さな矢印で開き、 Tracセッションログにレベルが書き込まれました。
メタデータ拡張 ユーザー定義のメタデータは、変換処理とともにリポジトリに保持されます。

2つの設定が実際の作業を行います。 取引制御条件 式を保持します。これは通常、5 つの変数のいずれかを返す IIF() テストです。 Tracレベル 実行内容を調査する際に、変換に関する詳細情報がセッションログにどの程度表示されるかを決定します。

1つの設定は変換の外側にあります。地図ping 効果的なトランザクション制御変換が含まれているため、セッションは コミットタイプ プロパティタブで「ユーザー定義」に設定 セッション、代わりに Target または、固定コミット間隔を使用するソースコミットタイプ。

Informaticaでトランザクション制御変換を使用する方法

この例では、部門番号が20であるという条件が真であると判断された場合に、ターゲットにデータをコミットします。

ステップ1) マップを作成するping EMPをソース、EMP_TARGETをターゲットとするマップ。ping デザイナーキャンバスには、ソース、そのソース修飾子、およびターゲット定義が格納されます。

地図ping EMPソース、そのソース修飾子、およびEMP_TARGETターゲット定義を含むデザイナーキャンバス

ステップ2) 「変換」メニューを使用して新しい変換を作成し、「変換の作成」ウィンドウで次の操作を行います。

  1. 新しい変換としてトランザクション制御を選択します。
  2. 変換名「tc_commit_dept20」を入力します
  3. 作成オプションを選択

トランザクション制御を選択し、名前をtc_commit_dept20と入力して、変換ウィンドウを作成します。

ステップ3) トランザクション制御変換が作成されますので、「完了」ボタンを選択してください。新しいオブジェクトがキャンバス上のソース修飾子の横に表示されます。

トランザクション制御変換 tc_commit_dept20 がソース修飾子の隣に作成されました

ステップ4) ソース修飾子からトランザクション制御変換にすべての列をドラッグアンドドロップし、トランザクション制御変換からターゲットテーブルにすべての列をリンクします。これでパイプラインはソース → ソース修飾子 → tc_commit_dept20 → EMP_TARGET の順に実行されます。

ソース修飾子列は、tc_commit_dept20 を介して EMP_TARGET テーブルにリンクされます。

ステップ5) Double トランザクション制御変換をクリックし、プロパティ編集ウィンドウで以下を実行します。

  1. プロパティタブを選択
  2. トランザクション制御エディターのアイコンをクリックします。

トランザクション制御エディタのアイコンが表示されている、[変換の編集] ウィンドウの [プロパティ] タブ

ステップ6) 式エディタに次の式を入力します –

iif(deptno=20,tc_commit_before,tc_continue_transaction)

「OK」を選択してください。これは、部門番号20が見つかった場合はターゲットでトランザクションをコミットし、見つからなかった場合は現在の処理を続行することを意味します。

部門番号20の行の前にコミットするIIF条件を保持する式エディタ

ステップ7) 前のウィンドウで「OK」を選択してください。これで、条件が変換の「プロパティ」タブに保存されました。

トランザクション制御条件を保存した後の「変換の編集」ウィンドウの「プロパティ」タブ

これでマップを保存できますping セッションとワークフローを作成した後、それを実行します。このマップping データ内に部門番号20が見つかった場合、そのデータをターゲットにコミットします。

効果的な取引管理変革と非効果的な取引管理変革

この変換処理はトランザクション生成器です。上流から送られてくるトランザクション境界をすべて破棄し、下流のすべてのトランザクションに対して独自の新しい境界を定義します。そのため、パイプライン内での位置は、その状態と同じくらい重要になります。

それが呼び出されます 効果的な ターゲットに対して、それが作成する境界がまだそのターゲットに到達している場合、 効果のない 後続の変換処理でこれらの境界が破棄される場合。Informatica PowerCenter変換ガイドによると、以下のオブジェクトは受信トランザクション境界を破棄します。

  • アグリゲーター、 ジョイナー, ランクソーターまたは変換スコープが「すべての入力」であるカスタム変換
  • トランザクションを生成するように構成されたカスタム変換
  • トランザクション制御の別の変革
  • 複数の入力グループ変換が、複数の上流トランザクション制御ポイントに接続されている。

対象に対して効果がないからといって、オブジェクトが無用になるわけではありません。変換スコープがトランザクションである下流の変換は、上流で定義された境界を依然として使用するため、同じ変換でもソーターに対しては効果的でも、その背後にあるテーブルに対しては効果がない場合があります。

地図上でping 複数のターゲットがある場合、オブジェクトは1つのターゲットには効果的でも、別のターゲットには効果がない可能性があります。マップping マップは、すべてのターゲットが有効なトランザクション制御変換に接続されている間は有効であり、いずれかのターゲットが接続されていないとすぐに無効になります。デザイナは、マップが無効なときにターゲットに対してどの変換が無効であるかを報告します。ping 保存または検証されます。

取引管理変革に関する規則とガイドライン

この変換に関する問題のほとんどは、設計時ではなく実行時に発生するため、セッションを構築する前に以下の点を確認しておく価値があります。

  • 戻り値は厳密です。 条件がコミット、ロールバック、または続行以外の値に評価された場合、インテグレーションサービスはセッションを失敗とします。
  • TC_CONTINUE_TRANSACTION はフォールバックです。 IIF() のすべての分岐はどこかで終了する必要があり、continue は現在のトランザクションを変更しない値です。
  • 対象の種類が重要です。 トランザクション制御変換は、リレーショナル、XML、または動的MQSeriesターゲット以外のターゲットに接続されている場合、そのターゲットに対しては効果がありません。
  • その条件は、到達したものしか利用できない。 トランザクション制御エディタ内で使用できるのは、変換にリンクされたポート、その変数ポート、および組み込み変数のみです。
  • コミット頻度はトレードオフの関係にある。 ほぼすべての行でコミットされる条件はバッファリングの利点を失わせ、ほとんど発生しない条件は変換によって解消しようとしたデータ損失の期間を再び招き入れることになる。
  • セッションログを確認してください。 ログには実際に実行されたコミットポイントが記録され、これは条件が意図どおりに動作したことを確認する最も迅速な方法です。 性能調整.

よくあるご質問

コミット間隔は、セッションで設定された固定行数に達した後にコミットを実行します。トランザクション制御条件はデータ自体に基づいてコミットを実行するため、コミットポイントは行数ではなくビジネスルールに従います。

Informatica PowerCenter Transformation Guide には、リレーショナル、XML、または動的 MQSeries ターゲット以外のターゲットに接続されたトランザクション制御変換は、そのターゲットに対しては無効であると記載されています。

はい。変換開発者で作成するか、既存の変換の変換タブで「再利用可能にする」にチェックを入れてください。すべてのマップping すると、それらはすべて同じ条件を共有するため、ルールの変更はそれらすべてに同時に影響する。

過去のセッションログを機械学習で分析することで、コミット頻度が長時間実行やロールバックの頻発と相関している負荷を特定できる可能性があります。ただし、これはあくまで仮説なので、条件を変更する前に実際の実行環境で検証してください。

CopilotはIIF()シェイプを作成し、5つの変数名をリマインダーとして表示できますが、ポート名やビジネスルールは認識しません。出力はあくまで出発点として扱い、式エディタで検証してください。

更新戦略は、行に対して何が行われるかを決定し、挿入、更新、削除、または拒否のいずれかのタグを付けます。トランザクション制御は、書き込まれた行がいつ永続化されるかを決定します。この2つは異なる質問に答えるものであり、多くの場合、一緒に使用されます。

Cloud Data Integration には、コミット、ロールバック、継続の変数を含む独自のトランザクション制御変換が付属しています。設計思想は引き継がれますが、オブジェクトはクラウド マップで構築されます。ping PowerCenterクライアントではなく、Designerで操作します。

そのトランザクションにおける最後のコミット以降に書き込まれた行は破棄されます。それ以前にコミットされたものはターゲットに残るため、コミットポイントの位置によって、障害発生時の処理コストが決まります。