このドキュメントでは、リポジトリ サイズが 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 でのリポジトリの分割の詳細については、リポジトリの分割をご覧ください。