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)
- Materialize 데이터베이스 — 클러스터, 인덱스, materialized view 개념
- store_failures — 테스트 실패 저장 설정