このページでは、DMS のタスクオーケストレーションにおける基本概念について説明します。
タスク
タスクとは、実行される操作のことです。
タスクノード
タスクノードとは、タスクフロー内でタスクを表す要素です。ノードはフロー内の任意の位置に配置でき、ノード間のエッジによって実行依存関係が定義されます。DMS では、以下の 4 種類のタスクノードを提供しています:
データ統合ノード
データ処理ノード
ステータス確認ノード
汎用ノード
ノードインスタンス
複数のノードインスタンスが集まって、タスクフローインスタンスを構成します。ノードインスタンス間の依存関係は、実行されたタスクフローのバージョンに従います。
タスクフローが失敗した場合、以下の 2 つの対応が可能です:
復元:依存関係に基づき、失敗したノードインスタンスのみを再実行します。
再実行:すべてのノードインスタンスを最初から再実行します。
いずれの操作でも、当初実行されたタスクフローの同一バージョンが使用されます。
ノードインスタンスは、以下のいずれかの状態になります:
RUNNING
SUSPEND
FAIL
SUCCESS
KILLING
SKIPPED
CANCELLED
QUEUED
タスクフロー
タスクフローとは、特定の実行順序で並べられたタスクノードの集合です。ノード間の依存関係は、有向非循環グラフ(DAG)で表現され、各ダウンストリームノードは、そのすべてのアップストリームノードが成功した後にのみ実行されます。タスクフローに含まれるすべてのタスクノードは実行可能です。
タスクフローバージョン
タスクフローバージョンとは、ある時点におけるタスクフローのスナップショットです。バージョンには以下の 2 種類があります:
編集バージョン:現在編集可能なバージョンです。テスト実行をトリガーするたびに、編集バージョンが保存されます。テスト実行では常に最新の編集バージョンが使用されます。
公開バージョン:タスクフローを公開した際に生成されるバージョンです。スケジュール実行では常に最新の公開バージョンが使用されます。
トリガーメソッド
タスクフローは、以下の 2 つの方法でトリガーできます:
手動トリガー:最新の編集バージョンに基づき、タスクフローを即時実行します。
スケジュールトリガー:最新の公開バージョンに基づき、指定されたスケジュールでタスクフローを実行します。
タスクフローインスタンス
タスクフローインスタンスとは、タスクフローの実行時の記録です。
タスクフローインスタンスが成功した場合、再実行できます。
タスクフローインスタンスが失敗した場合、復元して失敗したノードのみを再実行するか、手動でその状態を FAIL から SUCCESS に変更できます。
タスクフローを手動でトリガーすると、新しいタスクフローインスタンスのバージョンが作成されます。
タスクフローインスタンスは、以下のいずれかの状態になります:
WAIT_SCHEDULE
RUNNING
SUSPEND
FAIL
SUCCESS
KILLING
QUEUED
エッジ
エッジとは、DAG 内で 2 つのタスクノードを接続し、それらの間に依存関係を確立する方向性を持つ線です。開始ノードをアップストリームノード、終了ノードをダウンストリームノードと呼びます。ダウンストリームノードは、すべてのアップストリームノードが成功した後にのみ実行されます。
DMS では、以下の 3 種類のエッジを提供しています:
エッジ:2 つのタスクノード間、またはタスクノードとタスクフロー間の依存関係。
タスクフロー内のエッジ:同一タスクフローに属する 2 つのタスクノード間の依存関係。
タスクフロー間のエッジ:異なるタスクフローに属する 2 つのタスクノード間の依存関係。この種類のエッジを作成するには、イベントスケジュールを設定します。
業務日時
業務日時とは、タスクフローがデータを処理する対象となる日付であり、タスクフローの実行日より常に 1 日前となります。業務日時は bizdate 変数で表されます。詳細については、「変数」をご参照ください。
データバックフィル
データバックフィル操作とは、タスクフローの公開バージョン N を基に、特定の時点または期間に対して 1 つ以上のタスクフローインスタンスを生成することです。
オーナーおよび関係者
| 役割 | 権限 |
|---|---|
| オーナー | タスクフローおよびその構成を編集可能。テスト実行をトリガー可能。実行時のアラートを受信可能。 |
| 関係者 | タスクフローおよびその構成を閲覧可能。テスト実行をトリガー可能。ただし、タスクフローの編集はできません。 |
タスクフローの実行権限
オーナーおよび関係者の両方が、タスクフローの実行をトリガーできます。ただし、実行が成功するかどうかは、オーナーが関連するデータベースおよびテーブルに対して必要な権限を持っているかどうかに依存します。
オーナーが必要な権限を持っていない場合、実行をトリガーした関係者がその権限を保有していても、タスクフローは失敗します。
実行時間
タスクが実行される時間です。
実行モード
DMS では、以下の 4 種類の実行モードを提供しています:
試験実行:タスクフローを即時に実行します。
ダミー実行:タスクフローに対して実際に実行せずに、スケジュールトリガーの記録を生成します。タスクフロー A がタスクフロー B に依存しているが、タスクフロー A をタスクフロー B を実行せずに実行できる場合に使用します。
特定時点での実行:SQL ステートメントを変更せずに、特定の時点を基準としてタスクフローを実行します。タスクフロー内で時間変数を定義し、SQL ステートメント内でそれを参照します。変数の値は、実行日の前日および指定されたオフセットに基づいて計算されます。
特定期間での実行:複数の業務日時を対象としてタスクフローを実行します。タスクフロー内で複数の時間変数を定義します。実行中のタスクは直列で実行され、次の業務日時の実行を開始する前に、各業務日時の処理が正常に完了する必要があります。
単一の「特定期間での実行」では、最大 50 個のノードインスタンスをカバーできます。たとえば、スケジューリング周期が 1 日の場合、最大 50 日分の実行が可能です。