이 문서에서는 저장소 크기가 SQL 워크플로 개발 및 Dataform 컴파일 리소스 사용량에 미치는 영향과 저장소의 컴파일 리소스 사용량을 추정하는 방법을 이해하는 데 도움이 됩니다.
Dataform의 저장소 크기 정보
저장소 크기는 Dataform 개발의 다음 측면에 영향을 미칩니다.
- 공동작업
- 대규모 저장소에서 작업하는 여러 공동작업자가 과도한 수의 풀 요청을 생성하여 병합 충돌의 위험이 증가할 수 있습니다.
- 코드베이스 가독성
- 단일 저장소에서 SQL 워크플로를 구성하는 파일이 많으면 저장소를 탐색하기 어려울 수 있습니다.
- 개발 프로세스
- 단일 저장소에 있는 대규모 SQL 워크플로의 일부 영역에는 예약과 같은 커스텀 권한 또는 프로세스가 필요할 수 있으며, 이는 나머지 SQL 워크플로에 적용되는 권한 및 프로세스와 다릅니다. 저장소 크기가 크면 SQL 워크플로의 특정 영역에 개발 프로세스를 맞추기가 어렵습니다.
- 워크플로 컴파일
- Dataform은 컴파일 리소스에 사용량 한도를 적용합니다. 저장소 크기가 크면 이러한 한도를 초과하여 컴파일이 실패할 수 있습니다.
- 워크플로 실행
- 실행 중에 Dataform은 작업공간 내에서 모든 저장소 코드를 실행하고 애셋을 BigQuery에 배포합니다. 저장소가 클수록 Dataform이 이를 실행하는 데 더 많은 시간이 걸립니다.
저장소의 크기가 커서 Dataform의 개발에 부정적인 영향을 미치는 경우 여러 개의 작은 저장소로 저장소를 분할할 수 있습니다.
저장소 컴파일 리소스 한도 정보
개발 중에 Dataform은 작업공간 내에서 모든 저장소 코드를 컴파일하여 저장소에 있는 SQL 워크플로 표현을 생성합니다. 이를 컴파일 결과라고 합니다. Dataform은 컴파일 리소스에 사용량 한도를 적용합니다.
다음과 같은 이유로 저장소의 사용량 한도가 초과될 수 있습니다.
- 저장소 코드의 무한 루프 버그
- 저장소 코드의 메모리 누수 버그
- 큰 저장소 크기(SQL 워크플로 노드 약 1,000개 이상)
컴파일 리소스의 사용량 한도에 대한 자세한 내용은 Dataform 컴파일 리소스 한도를 참조하세요.
저장소의 컴파일 리소스 사용량 추정
저장소의 다음 컴파일 리소스 사용량을 예측할 수 있습니다.
- CPU 시간 사용량
- 저장소에 정의된 작업의 그래프로 표현된 직렬화된 최대 데이터 크기
로컬 Linux 또는 macOS 머신에서 Dataform SQL 워크플로 컴파일 시간을 지정하면 저장소 컴파일의 현재 컴파일 CPU 시간 사용량을 대략적으로 확인할 수 있습니다.
- 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에서 저장소 분할에 대한 자세한 내용은 저장소 분할을 참고하세요.