Snowpipe Streaming: 고성능 아키텍처¶
Snowpipe Streaming을 위한 고성능 아키텍처는 실시간에 가까운 인사이트가 요구되는 현대적이고 데이터 집약적인 조직을 위해 설계되었습니다. 이 차세대 아키텍처는 실시간 수집을 위한 처리량, 효율성, 유연성을 크게 향상시킨 Snowflake입니다.
클래식 아키텍처에 대한 내용은 Snowpipe Streaming - 클래식 아키텍처 섹션을 참조하세요. 클래식 SDK와 고성능 SDK 간의 차이점은 클래식 SDK와 고성능 SDK 비교 섹션을 참조하세요.
소프트웨어 요구 사항¶
Java
Java 11 이상이 필요합니다.
SDK maven 리포지토리: snowpipe-streaming Java SDK
Python
Python 버전 3.9 이상이 필요합니다.
주요 기능¶
처리량 및 지연 시간:
높은 처리량: 테이블당 최대 10 GB/초의 수집 속도를 지원하도록 설계되었습니다.
실시간에 가까운 인사이트: 5~10초 이내에 엔드투엔드 수집에서 쿼리까지의 대기 시간을 달성합니다.
청구:
간소화되고 투명한 처리량 기반 청구. 자세한 내용은 Snowpipe Streaming 고성능 아키텍처: 비용 이해 섹션을 참조하십시오.
유연한 수집:
Java SDK 및 Python SDK: 향상된 클라이언트 측 성능 및 낮은 리소스 사용량을 위해 Rust 기반 클라이언트 코어를 갖춘 새로운
snowpipe-streamingSDK를 활용합니다.REST API: 직접 수집 경로를 제공하여 경량 워크로드, IoT 디바이스 데이터, 엣지 배포를 위한 통합을 간소화합니다.
참고
향상된 성능과 시작 경험의 이점을 누리려면 REST API를 통해 Snowpipe Streaming SDK를 시작하는 것이 좋습니다.
데이터 처리 최적화:
실시간 변환: PIPE 오브젝트 내에서 COPY 명령 구문을 사용하여 수집 중 데이터 정리 및 재형성을 지원합니다.
채널 표시 여부 개선: 주로 Snowsight의 채널 기록 뷰와 새로운
GET_CHANNEL_STATUSAPI 를 통해 수집 상태에 대한 인사이트가 향상되었습니다.
이 아키텍처는 다음과 같은 경우에 권장됩니다.
대용량 스트림 워크로드의 일관된 수집.
실시간 분석 및 대시보드를 통해 시간에 민감한 의사결정을 지원합니다.
IoT 디바이스 및 엣지 배포에서 데이터의 효율적인 통합.
스트림 수집을 위해 투명하고 예측 가능한 처리량 기반 가격을 원하는 조직.
새로운 개념: PIPE 오브젝트¶
이 아키텍처는 채널 및 오프셋 토큰과 같은 핵심 개념을 Snowpipe Streaming Classic에서 계승하면서 PIPE 오브젝트를 중심 구성 요소로 도입합니다.
PIPE 오브젝트는 수집된 모든 스트림 데이터의 진입점 및 정의 계층 역할을 하는 명명된 Snowflake 오브젝트입니다. 다음을 제공합니다.
데이터 처리 정의: 변환 또는 스키마 매핑을 위한 서버 측 버퍼링을 포함하여 스트림 데이터가 대상 테이블에 커밋되기 전에 처리되는 방식을 정의합니다.
변환 활성화: COPY 명령 변환 구문을 통합하여 전송 중인 데이터를 조작(예: 필터링, 열 재정렬, 간단한 식)할 수 있습니다.
테이블 기능 지원: 클러스터링 키, DEFAULT 값 열, AUTOINCREMENT(또는 IDENTITY) 열이 정의된 테이블에 대한 수집을 처리합니다.
스키마 관리: 수신 스트림 데이터의 예상 스키마와 대상 테이블 열에 대한 매핑을 정의하여 서버 측 스키마 유효성 검사를 지원합니다.
수집 중 데이터 사전 클러스터링¶
Snowpipe Streaming은 수집 중에 진행 중인 데이터를 클러스터링할 수 있어 대상 테이블의 쿼리 성능이 향상됩니다. 이 기능은 데이터가 커밋되기 전에 수집하는 동안 데이터를 직접 정렬합니다. 이러한 방식으로 데이터를 정렬하면 더 빠른 쿼리를 위해 구성을 최적화할 수 있습니다.
사전 클러스터링을 활용하려면 대상 테이블에 클러스터링 키가 정의되어 있어야 합니다. 그런 다음 Snowpipe Streaming 파이프를 생성하거나 교체할 때 COPY INTO 문에서 CLUSTER_AT_INGEST_TIME 매개 변수를 :code:`TRUE`로 설정하여 이 기능을 활성화할 수 있습니다.
자세한 내용은 :ref:`CLUSTER_AT_INGEST_TIME <label-copy_into_table_copyoptions> ` 섹션을 참조하십시오. 이 기능은 고성능 아키텍처에서만 사용할 수 있습니다.
중요
사전 클러스터링 기능을 사용할 때 대상 테이블에서 자동 클러스터링 기능을 비활성화하지 않아야 합니다. 자동 클러스터링을 비활성화하면 시간이 지남에 따라 쿼리 성능이 저하될 수 있습니다.
Snowpipe Streaming Classic과의 차이점¶
기존 아키텍처에 익숙한 사용자를 위해 고성능 아키텍처는 다음과 같은 변경 사항을 도입합니다.
신규 SDK 및 APIs: 새로운
snowpipe-streamingSDK (Java SDK 및 REST API)가 필요하므로 마이그레이션을 위한 클라이언트 코드 업데이트가 필요합니다.PIPE 오브젝트 요구 사항: 모든 데이터 수집, 구성(예: 변환), 스키마 정의는 서버 측 PIPE 오브젝트를 통해 관리되며, 이는 클래식의 클라이언트 중심 구성에서 벗어난 것입니다.
채널 연결: 클라이언트 애플리케이션은 대상 테이블에 대해 직접 채널을 열지 않고 특정 PIPE 오브젝트에 대해 채널을 엽니다.
스키마 유효성 검사: 주로 클라이언트 측(Classic SDK)에서 PIPE 오브젝트를 기반으로 하는 Snowflake에 의한 서버 측 적용으로 이동합니다.
마이그레이션 요구 사항: 새 SDK 에 대한 클라이언트 애플리케이션 코드를 수정하고 Snowflake에서 PIPE오브젝트를 정의해야 합니다.