Snowpipe Streaming¶
Snowpipe Streaming은 고성능 아키텍처를 기반으로 구축된 Snowflake의 실시간 수집 서비스입니다. 이를 통해 애플리케이션은 파일을 스테이징하거나 중간 저장소를 관리할 필요 없이, 행이 도착하면 스트리밍 데이터를 Snowflake 테이블에 직접 로드할 수 있습니다. 수집 후 몇 초 내에 데이터를 쿼리할 수 있어, IoT 원격 측정 및 변경 데이터 캡처(CDC) 파이프라인에서 사기 감지 및 실시간 분석에 이르는 다양한 사용 사례를 지원합니다.
Snowpipe Streaming은 다음을 제공합니다.
테이블당 최대 10GB/s 처리량
수집에서 쿼리까지 최소 5초 의 엔드투엔드 대기 시간
기본 제공 오프셋 토큰 추적을 통해 정확히 한 번 전달
각 채널 내 순차적 수집
Snowflake 관리 Apache Iceberg 테이블로 스트리밍
Snowpipe Streaming을 사용하는 이유¶
정확히 한 번 전달: 기본 제공 오프셋 토큰 추적을 통해 ‘정확히 한 번’ 의미 체계를 사용할 수 있습니다. 애플리케이션은 복구 시 마지막으로 커밋된 위치에서 커밋된 오프셋과 재생을 추적하여 중복 데이터와 데이터 손실을 방지합니다. 자세한 내용은 오프셋 토큰 및 정확히 한 번 전달 섹션을 참조하세요.
순차적 수집: 행은 각 채널 내에서 순차적으로 수집됩니다. 채널은 소스 파티션(예: Kafka 항목 파티션)에 자연스럽게 매핑되므로 결정적 재생 및 제로 손실 복구가 가능합니다.
높은 처리량, 짧은 대기 시간: 테이블당 최대 10GB/초의 수집 속도를 지원하여 최소 5초 이내에 데이터를 쿼리할 수 있습니다.
전송 중 변환: PIPE 오브젝트 내의 COPY 명령 구문을 사용하여 수집 중에 데이터를 정리하고 재구성하며 변환합니다. 별도의 ETL 단계 없이 데이터가 대상 테이블에 커밋되기 전에 행을 필터링하고, 열을 재정렬하고, 유형을 캐스트하고, 식을 적용합니다.
수집 시 사전 클러스터링: 클러스터링 키가 있는 테이블에서 최적화된 쿼리 성능을 위해 수집 중에 데이터를 정렬합니다.
Apache Iceberg 테이블 지원: Iceberg v2 및 Iceberg v3 테이블을 모두 포함하여 Snowflake 관리 Iceberg 테이블로 데이터를 스트리밍합니다. 자세한 내용은 Apache Iceberg™ 테이블이 있는 Snowpipe Streaming 고성능 아키텍처 섹션을 참조하십시오.
스키마 진화: 변화하는 데이터 구조에 맞춰 테이블 스키마를 자동으로 조정합니다. Snowflake는 수동 DDL 변경 작업 없이 수신 스트림에서 감지된 새 열을 추가할 수 있습니다.
단순화된 파이프라인: SDKs는 파일이나 중간 클라우드 저장소를 스테이징할 필요 없이 테이블에 직접 행을 쓸 수 있습니다.
서버리스 및 확장 가능: 컴퓨팅 리소스는 수집 로드에 따라 자동으로 확장됩니다. 관리할 인프라가 없습니다.
투명한 가격 책정: 처리량 기반 청구는 수집된 데이터의 압축되지 않은 데이터 GB당 크레딧으로 계산됩니다. 자세한 내용은 Snowpipe Streaming high-performance architecture: Understand your costs 섹션을 참조하십시오.
연결 방법¶
Snowpipe Streaming은 다양한 워크로드에 맞게 여러 수집 경로를 지원합니다.
통합 |
적합한 대상 |
|---|---|
Java SDK <https://central.sonatype.com/artifact/com.snowflake/snowpipe-streaming>`_(`Java API 참조) |
처리량이 많은 사용자 지정 애플리케이션. Java 11 이상이 필요합니다. |
Python SDK <https://pypi.org/project/snowpipe-streaming/>`_(`Python API 참조) |
데이터 엔지니어링 및 Python 네이티브 워크플로. Python 3.9 이상이 필요. |
경량 워크로드, IoT 디바이스 및 에지 배포. |
|
Apache Kafka 항목 수집. |
Java 및 Python SDKs 모두 클라이언트 측 성능 향상 및 낮은 리소스 사용량을 위해 Rust 기반 클라이언트 코어를 사용합니다.
참고
향상된 성능과 시작 경험의 이점을 누리려면 REST API를 통해 Snowpipe Streaming SDK를 시작하는 것이 좋습니다.
시작하려면 자습서: SDK 시작하기 또는 자습서: REST API 시작 섹션을 참조하세요.
PIPE 오브젝트, 채널, 오프셋 토큰 및 지원되는 데이터 타입에 대한에 대한 기술적인 세부 정보는 주요 개념 섹션을 참조하세요.
추천 대상¶
최대 10GB/s 처리량이 필요한 대용량 스트리밍 워크로드
데이터 최신성이 5초 미만인 실시간 분석 및 대시보드
REST API를 사용한 및 IoT 엣지 배포
정확히 한 번 전달을 보장하는 CDC(변경 데이터 캡처) 파이프라인
Kafka용 Snowflake Connector 를 사용한 Apache Kafka 항목 수집
개방형 테이블 형식 분석을 위한 Apache Iceberg 테이블로 스트리밍
Snowpipe Streaming과 Snowpipe 비교¶
Snowpipe Streaming은 Snowpipe를 대체하는 것이 아니라 Snowpipe를 보완하기 위한 것입니다. 데이터가 파일에 기록되는 대신 행(예: 데이터가 파일 대신 행으로 도착하는 시나리오(예: Apache Kafka 항목, IoT 디바이스 또는 애플리케이션 이벤트)에서는 Snowpipe Streaming을 사용합니다. Snowpipe Streaming을 사용하면 Snowflake 테이블에 데이터를 로드하기 위해 파일을 생성할 필요가 없습니다.
다음 표에 Snowpipe Streaming과 Snowpipe의 차이점이 설명되어 있습니다.
카테고리 |
Snowpipe Streaming |
Snowpipe |
|---|---|---|
로드할 데이터의 형식 |
행 |
파일. 기존 데이터 파이프라인이 Blob 저장소에서 파일을 생성하는 경우 대신 Snowpipe를 사용하는 것이 좋습니다. |
데이터 순서 지정 |
각 채널 내에서 순서가 지정된 삽입 |
지원 안 됨. Snowpipe는 클라우드 저장소의 파일 생성 타임스탬프와 다른 순서로 파일에서 데이터를 로드할 수 있습니다. |
로드 내역 |
SNOWPIPE_STREAMING_FILE_MIGRATION_HISTORY 뷰 (Account Usage)에 기록된 로드 내역 |
COPY_HISTORY (Account Usage) 및 COPY_HISTORY 함수 (Information Schema)에 기록된 레코드 로드 |
파이프 오브젝트 |
PIPE 오브젝트는 모든 스트리밍 수집을 위한 서버 측 처리 계층입니다. 스키마 유효성 검사, 진행 중인 변환, 사전 클러스터링을 처리합니다. 각 테이블에 대해 기본 파이프가 자동으로 생성되거나 고급 처리를 위해 사용자 지정 파이프를 생성할 수 있습니다. |
파일 오브젝트는 스테이징된 파일 데이터를 큐에 추가하고 대상 테이블로 로드합니다. |
이 섹션의 내용¶
핵심 개념
시작하기
수집 대상
작업
참조
클래식 아키텍처¶
중요
Snowflake-ingest-sdk Java SDK를 사용하는 클래식 아키텍처는 사용 중단될 예정입니다. 즉시 변경할 필요는 없습니다. 현재 워크로드는 계속해서 완전히 지원됩니다.
자세한 내용은 예정된 사용 중단에 대한 공지 를 참조하세요.
클래식 아키텍처에서 실행 중인 기존 워크로드가 있는 경우 클래식 아키텍처 를 참조하세요. 차이점에 대한 자세한 비교는 고성능과 클래식 간의 비교 SDKs 를 참조하세요.
고성능 아키텍처로 업그레이드하는 경우 마이그레이션 가이드 를 참조하세요.