このドキュメントでは、リポジトリ サイズが 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
次のステップ
- Dataform コンパイルのリソース制限の詳細については、Dataform コンパイル リソースの制限をご覧ください。
- Dataform でリポジトリを分割する方法については、リポジトリの分割をご覧ください。