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.ymlwarehouse 설정으로 대체(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

더 알아보기 (Learn more)