リポジトリ サイズの概要

このドキュメントでは、リポジトリ サイズが SQL ワークフローの開発や Dataform のコンパイル リソース使用量に与える影響と、リポジトリのコンパイル リソースの使用量を見積もる方法について説明します。

Dataform のリポジトリ サイズについて

リポジトリのサイズは、Dataform の開発における以下の側面に影響します。

コラボレーション
大規模なリポジトリに対して複数の共同編集者が作業すると、過剰な pull リクエストが作成され、マージの競合リスクが高くなる可能性があります。
コードベースの読みやすさ
1 つのリポジトリに SQL ワークフローを構成するファイルが多いと、リポジトリの操作が困難になることがあります。
開発プロセス
1 つのリポジトリ内の大規模な SQL ワークフローの一部の領域には、残りの SQL ワークフローに適用される権限やプロセスとは異なる、カスタム権限やプロセス(スケジューリングなど)が必要になる場合があります。リポジトリのサイズが大きいと、開発プロセスを SQL ワークフローの特定の領域に調整することが困難になります。
ワークフローのコンパイル
Dataform では、コンパイル リソースに使用量上限が適用されます。リポジトリのサイズが大きいと、これらの上限を超えてコンパイルが失敗する可能性があります。
ワークフローの実行
Dataform は実行中に、ワークスペース内のすべてのリポジトリ コードを実行し、アセットを BigQuery にデプロイします。リポジトリが大きいほど、Dataform の実行に要する時間も長くなります。

リポジトリの大きさが Dataform の開発に悪影響を与える場合は、リポジトリを複数の小さなリポジトリに分割できます。

リポジトリのコンパイル リソースの上限について

開発中に、Dataform はワークスペース内のすべてのリポジトリ コードをコンパイルし、コンパイル結果と呼ばれるリポジトリ内の SQL ワークフローの表現を生成します。Dataform ではコンパイル リソースに使用量上限が適用されます。

次の理由により、リポジトリが使用量上限を超過する場合があります。

  • リポジトリ コードの無限ループのバグ。
  • リポジトリ コードのメモリリークのバグ。
  • リポジトリ サイズが大きい(SQL ワークフロー ノードの数が約 1000 個を超える)。

コンパイル リソースの使用量上限について詳しくは、Dataform コンパイル リソースの上限をご覧ください。

リポジトリのコンパイル リソースの使用量を見積もる

リポジトリに対する次のコンパイル リソースの使用量を見積もることができます。

  • CPU 時間の使用状況
  • リポジトリで定義されたアクションの生成済みグラフのシリアル化された合計最大データサイズ

リポジトリのコンパイルの現在のコンパイル CPU 時間の使用状況を大まかに得るには、ローカルの Linux または macOS マシンで Dataform SQL ワークフローのコンパイルの時間を計測します。

  • SQL ワークフローのコンパイルの時間を計測するには、リポジトリ内で次の形式で Dataform CLI dataform compile コマンドを実行します。
time dataform compile

次のコードサンプルは、time dataform compile コマンドを実行した結果を示しています。

real    0m3.480s
user    0m1.828s
sys     0m0.260s

real の結果は、リポジトリのコンパイルでの CPU 時間の使用状況の大まかな指標として扱うことができます。

リポジトリで生成されたアクションのグラフの合計サイズの大まかな概算値を取得するには、グラフの出力を JSON ファイルに書き込みます。非圧縮 JSON ファイルのサイズは、グラフの合計サイズの大まかな指標として扱うことができます。

  • SQL ワークフローのコンパイル済みグラフの出力をリポジトリ内の JSON ファイルに書き込むには、次の Dataform CLI コマンドを実行します。
dataform compile --json > graph.json

次のステップ