동적 테이블 쿼리 성능

이 섹션에서는 쿼리 시점에 우수한 성능을 얻을 수 있도록 파이프라인을 설계하는 방법에 대해 설명합니다. 데이터는 여러 시스템을 거치면서 다양한 형태로 이동합니다

  1. 원본 데이터: 처음에는 데이터가 실제 엔터티에서 생성되어 일선 시스템에서 수집됩니다. 그런 다음 이 데이터는 ETL 프로세스를 통해 Snowflake로 수집 됩니다.

  2. 원시 데이터: 수집된 데이터는 Snowflake 테이블에 저장되어 분석에 더 적합한 형태로 변환 됩니다.

  3. 모델링된 데이터: 이러한 변환을 통해 분석 을 위해 컨슈머에게 친숙한 개념을 제시하는 모델 세트가 생성됩니다.

사용자의 파이프라인 은 이러한 담계로 구성됩니다. 동적 테이블은 변환 단계에서 동작하지만 전체 파이프라인의 맥락에서 동적 테이블의 성능을 고려해야 합니다.

구체화 이해하기

분석 쿼리의 성능은 원시 데이터에서 모델화된 데이터로의 변환을 설계하고 구현하는 데 따라 결정됩니다. 이러한 변환을 원시 데이터에 대한 뷰 집합으로 정의하는 것이 기술적으로는 정확하지만, 성능 및 비용 요구 사항을 충족하지 못할 수 있습니다.

이 문제를 해결하려면 일부 또는 모든 데이터 모델을 미리 계산하여 결과를 구체화 하고, 빠른 액세스를 위해 저장하고, 최신 상태로 유지해야 할 수 있습니다. 다이내믹 테이블을 사용하면 이러한 구체화를 편리하게 수행할 수 있지만, 어떤 모델을 구체화할지는 여전히 결정해야 합니다.

구체화 경계

변환에서 구체화된 부분과 구체화되지 않은 부분을 구분하는 것을 구체화 경계 라고 합니다. 구체화 경계를 결정할 때 일반적으로 관련되는 요소는 다음과 같습니다.

  • 지연 또는 최신성: 공급자가 제공하는 데이터의 최신성, 즉 결과가 얼마나 오래되었는지를 나타냅니다. 구체화의 경계는 일반적으로 이 요소에 큰 영향을 미치지 않습니다.

  • 응답 시간: 더 많은 파이프라인을 구체화하면 응답 시간이 단축됩니다. 최신성은 항상 쿼리의 응답 시간만큼 길지만, 훨씬 더 길어질 수도 있습니다.

  • 비용: 워크로드 비용은 다음과 관련이 있습니다.

    • 구체화 비용: 이 비용은 소스의 데이터 양과 변환의 복잡성에 따라 달라집니다.

    • 분석 중 비구체화 변환을 계산하는 비용: 이 비용은 분석 쿼리의 수와 복잡성에 따라 증가합니다.

    • 저장 비용: 이 비용에는 원시 데이터와 구체화된 데이터가 모두 포함됩니다.

더 많은 모델링 데이터를 구체화하면 응답 시간이 빨라지고 분석 비용은 낮아지지만, 구체화 비용이 높아질 수 있습니다. 최적의 구체화 경계를 찾으려면 위의 요소들 간의 균형을 맞춰야 합니다. 일반적으로 응답 시간 요구 사항을 충족하는 최소한의 데이터를 구체화하면 우수한 결과를 얻을 수 있습니다.

구체화 방법

구체화 경계를 설정한 후에는 이에 따라 동적 테이블과 뷰를 생성할 수 있습니다. 다른 Snowflake 쿼리와 마찬가지로 구체화되지 않은 변환의 성능도 최적화할 수 있습니다. 쿼리한 후에는 정규 테이블과 동적 테이블의 성능이 비슷하므로 정규화, 사전 집계, 클러스터링과 같은 표준 기법을 사용하여 성능을 향상시킬 수 있습니다.

더 많은 아이디어를 살펴보려면 쿼리 성능 체크리스트 섹션을 참조하십시오.