metadata_warehouse
metadata_warehouse (메타데이터 웨어하우스)
metadata_warehouse는 Snowflake에서 dbt State가 수행하는 메타데이터 introspection 쿼리를 별도의 작은 웨어하우스로 라우팅하는 설정이에요. 주 웨어하우스가 과부하일 때 introspection 부담을 기본 컴퓨팅 리소스에서 분리해주는 역할을 해요.
출처: dbt 공식 문서
본문
Snowflake 전용
이 설정은 Snowflake에서만 사용할 수 있어요.
profiles.yml
my_project:
outputs:
prod:
type: snowflake
# ... other connection settings
warehouse: TRANSFORMING
metadata_warehouse: METADATA_XS
target: prod
정의
dbt State는 모델을 다시 빌드해야 하는지 판단하기 위해 메타데이터 introspection 쿼리를 수행해요. Snowflake에서 이 쿼리는 기본적으로 설정된 warehouse에서 실행돼요. 이 때문에 주 웨어하우스가 과부하 상태면 큐잉(queuing)이 생길 수 있어요.
metadata_warehouse는 이런 쿼리를 별도의 더 작은 웨어하우스로 라우팅해 introspection 오버헤드를 메인 컴퓨팅 리소스에서 분리해줘요. 설정하면 dbt는 전용 웨어하우스에서 여러 개의 개별 쿼리(스키마마다 하나씩)를 병렬로 실행해요. metadata_warehouse를 설정하지 않았을 때 dbt가 기본적으로 실행하는 단일 통합 쿼리보다 더 빠르게 처리돼요.
메인 웨어하우스의 메타데이터 쿼리가 15초보다 오래 걸리면 dbt는 전용 웨어하우스를 구성하라는 경고를 내보내요.
dbt 플랫폼에서는 환경 설정에 확장 속성(extended attribute)으로 추가해 metadata_warehouse를 사용할 수도 있어요.
참고
이 설정은 현재 dbt State 메타데이터 쿼리에만 적용돼요. 앞으로 더 넓게 쓰일 수 있지만, 기능 요청은 dbt-labs/dbt#12122에서 확인할 수 있어요.
기본값
profiles.yml의 warehouse 설정으로 대체(fallback)돼요.
예시
메타데이터와 실행 웨어하우스 분리하기
profiles.yml
my_project:
outputs:
prod:
type: snowflake
account: abc12345
database: ANALYTICS
schema: DBT_PROD
warehouse: TRANSFORMING # used for model execution
metadata_warehouse: METADATA_XS # used for dbt State introspection
target: prod