データ統合コアコンセプトビルド

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

ビルド

ビルドは、Foundry でデータセットの新しいバージョンを計算するために使用されるメカニズムです。ビルドは、計算のオーケストレーションと調整を提供し、適切な入力データが読み込まれ、出力データが適切な場所に書き込まれることを確認します。

ビルドはジョブで構成され、それぞれが共有ロジックで定義された作業単位であり、1つ以上の出力データセットを計算します。ジョブが複数の出力データセットを定義する場合、それらは常に一緒に更新され、データセットの一部だけをビルドせずに完全なジョブを実行することはできません。ジョブ仕様、またはJobSpecは、ジョブがどのように構築されるべきかを定義したものです。データエンジニアがコードリポジトリで新しい変換コードをコミットするなど、Foundry のデータ変換ロジックに変更が加えられたときに JobSpec が発行されます。

ビルドを実行すると、出力データセットのセットが一度だけ計算されます。データをシステム全体で流れるようにするために、スケジュールが使用されて、ビルドが時間をかけて実行されます。

Foundry でビルドを探索するには、ビルドアプリケーションを使用してください。

ジョブと JobSpecs

ジョブは、入力データセットのデータから1つ以上の出力データセットの新しいバージョンを計算するものをカプセル化しています。JobSpecは、入力データセットの依存関係と、ジョブの一部として実行されるべきロジックを詳細に説明することで、ジョブの構築方法を定義します。

入力データセットの依存関係は、InputSpecsのセットとして宣言され、それぞれが特定の入力データセットを指定します。InputSpecs は、データセットから読み取るデータのサブセットをビューの観点から指定します。

Foundry でジョブとして表現できるロジックの種類は多岐にわたり、以下に示すものに限定されません。

  • データ接続 Sync は、外部データソースからデータをどのように読み取るかを定義します。
  • コードリポジトリで記述された変換は、データセットを変換するコードを記述できるようにします。
  • ヘルスチェックは、データセットの特性を検証するために生成されるジョブとして定義されます。
  • 分析アプリケーションは、データセットを変換するロジックを定義することをサポートしています。
  • エクスポートは、入力データが Foundry の外部に送信される方法を定義します。

ジョブの状態

ある時点でのジョブは、常に以下の状態のいずれかになります。

  • WAITING:ジョブの初期状態。ジョブは依存するジョブの完了を待っており、まだ起動されていません。
  • RUN_PENDING:ジョブは実行待ちですが、実行環境がまだステータスを確認していません。
  • RUNNING:ジョブが起動され、現在計算中です。
  • ABORT_PENDING:ジョブが中止されましたが、実行環境が中止された状態をまだ確認していません。
  • ABORTED:ジョブは、ユーザーの要求により、または依存するジョブが失敗した結果として中止されました。
  • FAILED:ジョブは起動されましたが、計算が失敗しました。
  • COMPLETED:ジョブは起動され、計算が正常に終了しました。

ビルドのライフサイクル

ビルドが実行されると、提出されたビルドを検証し、データの一貫性を確保し、新しい出力を生成するために必要なジョブのみが実行されるように、いくつかのステップが実行されます。

ビルドの解決

まず、ビルドでは以下の手順が行われます。

  • 指定された入力データセットで循環を検出し、循環が存在する場合はビルドに失敗します。
  • すべての入力データセットが存在し、各入力データセットの適切なスキーマを特定します。
  • 出力データセットごとに新しいトランザクションを開始し、アクティブなビルドのみが出力データセットに書き込むことができるようにします。これはビルドロックと呼ばれます。
  • ビルドが進行中で、入力に変更が加えられる他のビルドがあるかどうかを検出します。その場合、ビルドはキューに入れられ、他のビルドが完了するのを待ちます。

ジョブの実行

上記の手順が完了すると、ビルド内のジョブが実行されます。お互いに依存しないジョブは並行して実行されます。ジョブがジョブの状態を経ると、全体的なビルドの状態がそれに応じて更新されます。

  • ビルド内のジョブが失敗すると、そのビルド内の直接依存するジョブと出力データセットのトランザクションがすべて終了します。オプションで、ビルドは同時にすべての非依存ジョブを中止するように設定できます。
  • ビルド内のすべてのジョブが完了すると、ビルドは完了と見なされます。

ビルド内のジョブが失敗しても、以前に完了したジョブは出力データセットにデータを書き込んでいる可能性があります。

古さ

出力データセットは、ビルドの解決ステップが入力データセットと JobSpec 内のロジックが前回の出力データセットがビルドされた時以降に変更されていないことを判断した場合、新鮮と見なされます。出力データセットが新鮮である場合、それは後続のビルドで再計算されません。

ビルドシステムのデフォルトの古さの動作を上書きするには、強制ビルドを実行して、すでに最新であるかどうかに関係なく、ビルドの一部としてすべてのデータセットを再計算します。

ブランチング

Foundry のビルドでは、データパイプライン上での共同作業ワークフローをサポートするために、ブランチングが実装されています。ブランチングについて詳しく知りたい場合は、以下を参照してください。

  • ブランチングの概要については、branching overviewを参照してください。
  • ビルドでのブランチングの仕組みについては、ビルド内のブランチのセクションを参照してください。