Materialize 설정

Materialize 설정

Materialize용 dbt 어댑터(dbt-materialize)의 설정을 정리한 페이지예요. 실시간 데이터베이스인 Materialize에서 클러스터, 인덱스, materialized view, 데이터 테스트를 구성하는 방법을 소개해요.

출처: dbt 공식 문서

본문

성능 최적화

클러스터

클러스터 구성 기능을 활성화해요.

materialized view나 인덱스를 유지하는 기본 클러스터프로파일에서 cluster 연결 파라미터로 설정할 수 있어요. 특정 모델(또는 모델 그룹)에 사용할 클러스터를 덮어쓰려면 cluster 구성 파라미터를 사용해요.

my_view_cluster.sql

{{ config(materialized='materializedview', cluster='not_default') }}

select ...

dbt_project.yml

models:
  project_name:
    +materialized: materializedview
    +cluster: not_default

Incremental 모델: Materialized Views

Materialize는 본질적으로 실시간 데이터베이스로, 지연 시간이나 정확성을 타협하지 않으면서 incremental한 뷰 업데이트를 제공해요. materialized views를 사용해 쿼리 결과를 계산하고 점진적으로 업데이트해요.

인덱스

인덱스에 대한 추가 설정을 활성화해요.

표준 관계형 데이터베이스에서처럼 Materialize에서도 인덱스로 쿼리 성능을 최적화할 수 있어요. 개선 효과는 상당해서 응답 시간을 수 밀리초 수준까지 줄일 수 있어요.

Materialized views(materializedview), views(view), sources(source)에는 indexes 목록을 정의할 수 있어요. 각 Materialize 인덱스는 다음 구성 요소를 가질 수 있어요.

  • columns (목록, 필수): 인덱스가 정의되는 하나 이상의 컬럼이에요. 모든 컬럼을 쓰는 인덱스를 만들려면 대신 default 구성 요소를 사용해요.
  • name (문자열, 선택): 인덱스 이름이에요. 지정하지 않으면 Materialize는 materialization 이름과 제공된 컬럼 이름을 사용해요.
  • cluster (문자열, 선택): 인덱스를 만들 때 사용할 클러스터예요. 지정하지 않으면 materialization을 만드는 데 사용된 클러스터에 인덱스가 생성돼요.
  • default (bool, 선택): 기본값은 False예요. True로 설정하면 모든 컬럼을 사용하는 기본 인덱스를 만들어요.

my_view_index.sql

{{ config(materialized='view',
          indexes=[{'columns': ['col_a'], 'cluster': 'cluster_a'}]) }}
          indexes=[{'columns': ['symbol']}]) }}

select ...

my_view_default_index.sql

{{ config(materialized='view',
    indexes=[{'default': True}]) }}

select ...

데이터 테스트

선택적 --store-failures 플래그나 store_failures 설정을 설정하면 dbt는 각 테스트에 대해 시간이 지나도 실패를 추적할 수 있는 materialized view를 만들어요. 기본적으로 테스트 뷰는 dbt_test__audit로 접미사가 붙은 스키마에 생성돼요. 사용자 지정 접미사를 지정하려면 schema 설정을 사용해요.

dbt_project.yml

data_tests:
  project_name:
    +store_failures: true
    +schema: test

더 알아보기 (Learn more)