Snowpipe¶
Snowpipe를 사용하면 스테이지에서 파일을 사용할 수 있는 즉시 파일에서 데이터를 로드할 수 있습니다. 즉, 더 큰 배치를 로드하기 위해 일정에 따라 COPY 문을 수동으로 실행하는 방식이 아닌 사용자가 몇 분 내에 사용할 수 있도록 마이크로 배치로 파일에서 데이터를 로드할 수 있습니다.
이 항목의 내용:
Snowpipe는 어떻게 작동합니까?¶
Snowpipe는 스테이지에서 사용할 수 있는 즉시 파일에서 데이터를 로드합니다. 데이터는 참조된 파이프에 정의된 COPY 문에 따라 로드됩니다.
파이프는 Snowpipe에서 사용하는 COPY 문이 포함된 명명된 일급 Snowflake 오브젝트입니다. COPY 문은 데이터 파일의 소스 위치(즉, 스테이지)와 대상 테이블을 식별합니다. JSON 및 Avro와 같은 반정형 데이터 타입을 포함한 모든 데이터 타입이 지원됩니다.
스테이징된 파일을 감지하는 다음과 같은 다양한 방식이 지원됩니다.
클라우드 메시징을 사용한 Snowpipe 자동화
자동화된 데이터 로드는 클라우드 저장소에 대한 이벤트 알림을 활용하여 Snowpipe에 로드할 새 데이터 파일이 수신되었음을 알립니다. Snowpipe는 큐에서 이벤트 알림을 폴링합니다. Snowpipe는 큐의 메타데이터를 사용하여 지정된 파이프 오브젝트에 정의된 매개 변수를 기반으로 연속적인 서버리스 방식으로 새 데이터 파일을 대상 테이블에 로드합니다.
Snowpipe REST 엔드포인트 호출
클라이언트 애플리케이션은 파이프 오브젝트의 이름과 데이터 파일 이름 목록을 사용하여 공용 REST 엔드포인트를 호출합니다. 파이프 오브젝트가 참조하는 스테이지에서 목록과 일치하는 새 데이터 파일이 발견되면 로드할 수 있도록 큐에 추가됩니다. Snowflake가 제공하는 컴퓨팅 리소스는 파이프에 정의된 매개 변수를 기반으로 큐에서 Snowflake 테이블로 데이터를 로드합니다.
지원되는 클라우드 저장소 서비스¶
다음 테이블은 각 클라우드 플랫폼 에서 호스팅되는 Snowflake 계정의 자동화된 Snowpipe 및 Snowpipe REST API 호출을 위해 지원되는 클라우드 저장소 서비스를 보여줍니다.
Snowflake 계정 호스트 |
Amazon S3 |
Google Cloud Storage |
Microsoft Azure Blob 저장소 |
Microsoft Data Lake Storage Gen2 |
Microsoft Azure 범용 v2 |
---|---|---|---|---|---|
Amazon Web Services |
✔ |
✔ |
✔ |
✔ |
✔ |
Google Cloud Platform |
✔ |
✔ |
✔ |
✔ |
✔ |
Microsoft Azure |
✔ |
✔ |
✔ |
✔ |
✔ |
자세한 내용은 클라우드 메시징을 사용한 연속 데이터 로딩 자동화하기 및 데이터를 로드하기 위한 Snowpipe REST 엔드포인트 개요 섹션을 참조하십시오.
클라우드 공급자의 정부 리전에서는 이벤트 알림이 다른 상업 리전으로 전송되거나 다른 상업 리전에서 전송되는 것을 허용하지 않습니다. 자세한 내용은 AWS GovCloud(US) 및 Azure Government 섹션을 참조하십시오.
중요
비용, 이벤트 노이즈, 대기 시간을 줄이기 위해 Snowpipe에 대해 클라우드 이벤트 필터링을 사용하는 것이 좋습니다. 각 클라우드 공급자의 이벤트 필터링 구성에 대한 자세한 내용은 다음 페이지를 참조하십시오.
Snowpipe와 대량 데이터 로딩의 차이점은 무엇입니까?¶
이 섹션에서는 Snowpipe와 COPY 명령을 사용하는 대량 데이터 로드 워크플로 간의 주요 차이점을 간략하게 설명합니다. 자세한 세부 정보는 Snowpipe 설명서 전반에 걸쳐 제공됩니다.
인증¶
- 대량 데이터 로드:
클라이언트에서 지원하는 보안 옵션을 사용하여 사용자 세션을 인증 및 시작합니다.
- Snowpipe:
REST 엔드포인트 호출 시 JSON 웹 토큰(JWT)이 포함된 키 페어 인증이 필요합니다. JWTs는 RSA 암호화가 적용된 공용/개인 키 페어를 사용하여 서명됩니다.
로드 내역¶
- 대량 데이터 로드:
대상 테이블의 메타데이터에 64일 동안 저장됩니다. COPY 문 입력 시 문의 출력으로 사용할 수 있습니다.
- Snowpipe:
파이프의 메타데이터에 14일 동안 저장됩니다. REST 엔드포인트, SQL 테이블 함수 또는 ACCOUNT_USAGE 뷰를 통해 Snowflake가 요청해야 합니다.
중요
파일이 다시 로드(및 데이터 복제)되는 것을 방지하려면 대량 데이터 로딩 또는 Snowpipe를 사용하여 특정 파일 세트에서 데이터를 로드하되, 두 기능을 모두 사용하는 것은 권장되지 않습니다.
트랜잭션¶
- 대량 데이터 로드:
로드는 항상 단일 트랜잭션에서 수행됩니다. 데이터는 사용자가 수동으로 제출한 다른 SQL 문과 함께 테이블에 삽입됩니다.
- Snowpipe:
각 데이터 파일의 행 수와 크기에 따라 로드는 단일 또는 다중 트랜잭션으로 결합되거나 분할됩니다. 부분적으로 로드된 파일의 행(ON_ERROR 복사 옵션 설정에 따라)도 1개 이상의 트랜잭션으로 결합 또는 분할될 수 있습니다.
컴퓨팅 리소스¶
- 대량 데이터 로드:
COPY 문을 실행하려면 사용자 지정 웨어하우스가 필요합니다.
- Snowpipe:
Snowflake에서 제공하는 컴퓨팅 리소스를 사용합니다.
요금¶
- 대량 데이터 로드:
각 가상 웨어하우스가 활성화된 시간에 대한 요금이 부과됩니다.
- Snowpipe:
파일을 로드하는 동안 Snowpipe 웨어하우스에서 사용된 컴퓨팅 리소스에 따라 요금이 부과됩니다.
권장 로드 파일 크기¶
Snowpipe에서 가장 효율적이고 비용 효율적인 로드 경험을 위해 파일 크기 조정 모범 사례 및 제한 사항 에서 제공되는 파일 크기 권장 사항을 준수하고 분당 한 번씩 파일을 스테이징하는 것이 좋습니다. 이러한 방식을 통해 일반적으로 비용(예: Snowpipe 큐 관리 및 실제 로드에 사용되는 리소스)과 성능(예: 로드 지연 시간) 간의 균형을 유지할 수 있습니다. 자세한 내용은 연속 데이터 로드(즉, Snowpipe) 및 파일 크기 조정 섹션을 참조하십시오.
데이터 파일 로드 순서¶
각 파이프 오브젝트에 대해 Snowflake는 로드 대기 중인 데이터 파일의 순서를 지정하는 단일 큐를 설정합니다. 스테이지에서 새 데이터 파일이 발견되면 Snowpipe는 해당 파일을 큐에 추가합니다. 그러나 여러 프로세스가 큐에서 파일을 가져오므로, 일반적으로 Snowpipe는 더 오래된 파일을 먼저 로드하지만 스테이징된 순서대로 파일이 로드된다는 보장은 없습니다.
데이터 중복¶
Snowpipe는 각 파이프 오브젝트 와 연결된 파일 로드 메타데이터를 사용하여 테이블에서 동일한 파일(및 중복 데이터)이 다시 로드되는 것을 방지합니다. 이 메타데이터를 통해 로드된 각 파일의 경로(즉, 접두사) 및 이름을 저장하고 나중에 수정된(즉, 다른 eTag) 동일한 이름의 파일이 로드되는 것이 방지됩니다.
Snowpipe 지연 예상하기¶
Snowpipe 로드는 매우 다양한 요소로 구분되므로, Snowflake가 지연을 예상하는 것은 매우 어렵습니다. 파일 형식과 크기, COPY 문의 복잡성(변환에 사용되는 SELECT 문 포함)은 모두 Snowpipe 로드에 필요한 시간에 영향을 줍니다.
그러므로 일반적인 로드 세트를 수행하여 실험을 통해 평균 지연을 예상하는 것이 권장됩니다.
파이프 보안¶
액세스 제어 권한¶
파이프 만들기¶
파이프를 생성하고 관리하기 위해서는 최소한으로 다음의 권한이 있는 역할이 필요합니다.
오브젝트 |
권한 |
참고 |
---|---|---|
데이터베이스 |
USAGE |
|
스키마 |
USAGE, CREATE PIPE |
|
파이프 정의에서의 스테이지 |
USAGE |
외부 스테이지 전용. |
파이프 정의에서의 스테이지 |
READ |
내부 스테이지 전용. |
파이프 정의에서의 테이블 |
SELECT, INSERT |
파이프 소유하기¶
파이프가 생성된 후 파이프 소유자(즉, 파이프에 대한 OWNERSHIP 권한이 있는 역할)에는 다음 권한이 있어야 합니다.
오브젝트 |
권한 |
참고 |
---|---|---|
데이터베이스 |
USAGE |
|
스키마 |
USAGE |
|
파이프 |
OWNERSHIP |
|
파이프 정의에서의 스테이지 |
USAGE |
외부 스테이지 전용. |
파이프 정의에서의 스테이지 |
READ |
내부 스테이지 전용. |
파이프 정의에서의 테이블 |
SELECT, INSERT |
파이프 일시 중지 및 다시 시작하기¶
파이프 소유자 외에도 다음과 같은 최소 권한이 있는 역할이 파이프를 일시 중지하거나 재개할 수 있습니다.
오브젝트 |
권한 |
참고 |
---|---|---|
데이터베이스 |
USAGE |
|
스키마 |
USAGE |
|
파이프 |
OPERATE |
|
파이프 정의에서의 스테이지 |
USAGE |
외부 스테이지 전용. |
파이프 정의에서의 스테이지 |
READ |
내부 스테이지 전용. |
파이프 정의에서의 테이블 |
SELECT, INSERT |
Snowpipe DDL¶
파이프의 생성 및 관리를 지원하기 위해 Snowflake가 제공하는 특수 DDL 명령 세트는 다음과 같습니다.
또한, 공급자는 다음과 같은 표준 액세스 제어 DDL을 사용하여 Snowpipe에 필요한 데이터베이스 오브젝트에 대한 액세스를 확인, 권한 부여 또는 취소할 수 있습니다.