このドキュメントでは、リポジトリ サイズが SQL ワークフローの開発と Dataform コンパイル リソースの使用量に与える影響と、リポジトリのコンパイル リソースの使用量を見積もる方法について説明します。
Dataform のリポジトリ サイズについて
リポジトリのサイズは、Dataform での開発の次の側面に影響します。
- コラボレーション
- 大規模なリポジトリで複数の共同編集者が作業すると、プル リクエストの数が過剰になり、マージ競合のリスクが高まります。
- コードベースの可読性
- 1 つのリポジトリ内の SQL ワークフローを構成するファイルの数が多いと、リポジトリ内を移動するのが難しくなる可能性があります。
- 開発プロセス
- 単一リポジトリ内の大規模な SQL ワークフローの一部の領域では、SQL ワークフローの他の部分に適用される権限やプロセスとは異なる、スケジュール設定などのカスタム権限またはプロセスが必要になる場合があります。リポジトリのサイズが大きいため、SQL ワークフローの特定の領域に合わせて開発プロセスを調整することが困難です。
- ワークフロー コンパイル
- Dataform ではコンパイル リソースに使用量上限が適用されます。リポジトリ サイズが大きいと、これらの上限を超えてコンパイルが失敗する可能性があります。
- ワークフロー実行
- 実行中、Dataform はワークスペース内のリポジトリ コードを実行し、アセットを BigQuery にデプロイします。リポジトリが大きいほど、Dataform の実行に時間がかかります。
リポジトリのサイズが大きいことが Dataform での開発に悪影響を及ぼしている場合は、リポジトリを分割して複数の小さなリポジトリにできます。
リポジトリのコンパイル リソースの上限について
開発中に、Dataform はワークスペース内のすべてのリポジトリ コードをコンパイルし、コンパイル結果と呼ばれるリポジトリ内の SQL ワークフローの表現を生成します。Dataform ではコンパイル リソースに使用量上限が適用されます。
リポジトリで使用上限を超える可能性があるのは、次の理由によるものです。
- リポジトリ コードの無限ループ バグ。
- リポジトリ コードのメモリリーク バグ。
- リポジトリ サイズが大きい(SQL ワークフロー アクションの数が約 1, 000 個を超える)。
コンパイル リソースの使用上限の詳細については、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 でリポジトリを分割する方法については、リポジトリの分割をご覧ください。