불변성 제약 조건 이해하기

불변성 제약 조건을 사용하면 동적 테이블의 일부를 정적으로 표시할 수 있습니다. 불변성 제약 조건을 정의할 때 Snowflake는 새로 고침 중에 해당 행을 건너뛰므로, 특히 대량의 과거 데이터가 포함된 테이블의 경우 성능이 향상됩니다.

동적 테이블을 생성하거나 변경할 때 IMMUTABLE WHERE 절을 사용하여 불변성 제약 조건을 정의합니다. 절은 변경할 수 없는 행을 식별하는 조건 또는 조건자를 지정합니다.

주요 동작:

  • 초기 새로 고침: Snowflake에서 IMMUTABLE WHERE 조건자는 초기 새로 고침 중에 무시되지만 이후의 모든 새로 고침에는 적용됩니다.

  • 전체 새로 고침 모드: 조건자는 조건과 일치하지 않는 행으로만 재계산을 제한합니다.

  • 증분 새로 고침: 스트림 및 증분 새로 고침 동적 테이블은 불변성 제약 조건이 있는 전체 새로 고침 동적 테이블에서 읽을 수 있습니다.

  • 클론 및 복제: Snowflake는 제한이 없는 IMMUTABLE WHERE 제약 조건을 복사합니다.

컴퓨팅 비용에 대한 자세한 내용은 불변성 제약 조건에 대한 비용 계산 섹션을 참조하세요.

불변성 제약 조건을 사용하는 경우

불변성 제약 조건은 다음 시나리오에서 유용합니다.

과거 데이터 재처리 방지

동적 테이블에 다시 처리하고 싶지 않은 과거 데이터가 포함된 경우 이전 행을 변경할 수 없는 행으로 표시합니다.

전체 새로 고침 모드 최적화

전체 :ref:`새로 고침 모드 <label-dynamic_tables_intro_refresh_modes>`를 사용하는 동적 테이블은 일반적으로 새로 고칠 때마다 모든 행을 다시 계산합니다. 불변성 제약 조건은 재계산을 변경 가능한 행으로만 제한하여 대부분의 데이터가 과거 데이터일 때 작업을 크게 줄입니다.

증분 다운스트림 새로 고침 촉진

Python 사용자 정의 테이블 함수와 같은 일부 쿼리 구성을 전체 새로 고침 모드에서 실행하려면 동적 테이블이 필요합니다. 일반적으로, 이로 인해 다운스트림 테이블이 증분 새로 고침의 이점을 얻지 못합니다. 업스트림 테이블에 불변성 제약 조건이 있는 경우 다운스트림 테이블은 여전히 증분 처리의 이점을 누릴 수 있습니다.

불변성이 있는 백필 사용

백필은 불변성 제약 조건을 확장합니다. 백필은 기존 데이터를 다시 계산하지 않고도 동적 테이블에 즉시 복사할 수 있는 제로 복사 작업입니다. 이를 사용하여 기존 파이프라인을 마이그레이션하거나 동적 테이블 정의를 변경하거나 수년간의 과거 데이터가 있는 테이블을 생성할 때 값비싼 초기화를 방지할 수 있습니다.

백필된 데이터는 향후 새로 고침 중에 변경할 수 없습니다.

IMMUTABLE WHEREBACKFILL FROM 모두 사용하여 동적 테이블을 생성하는 경우 다음을 수행합니다.

  • 백필은 소스 테이블에서 **불변 리전**을 복사합니다. 불변 리전은 IMMUTABLE WHERE 조건과 일치하는 행으로 구성됩니다.

  • 쿼리 정의는 **가변 리전**을 계산합니다. 가변 리전은 조건과 일치하지 않는 행으로 구성됩니다.

다음 단계

구현 지침과 예제는 백필 예제불변성 제약 조건 섹션을 참조하세요.