스트림과 태스크 소개
스트림과 태스크 소개
Snowflake는 스트림(Stream)과 태스크(Task)로 연속 데이터 파이프라인을 지원해요.
출처: Documentation
본문
스트림
스트림 객체는 테이블(예: 스테이징 테이블)에 대한 CDC(변경 데이터 캡처, change data capture) 정보의 델타를 기록해요. 여기에는 삽입과 기타 DML(데이터 조작 언어) 변경이 포함돼요. 스트림을 사용하면 두 트랜잭션 시점 사이의 행 수준에서 테이블에 대한 변경 집합을 조회하고 소비할 수 있어요.
연속 데이터 파이프라인에서 테이블 스트림은 연속 데이터 로드를 사용해 비즈니스 애플리케이션의 데이터가 스테이징 테이블과 그 아래의 다운스트림 테이블에 채워지고, SQL 문으로 추가 처리를 할 준비가 된 때를 기록해요.
자세한 내용은 스트림 소개를 참고해요.
태스크
태스크 객체는 저장 프로시저 호출을 포함할 수 있는 SQL 문을 실행해요. 태스크는 일정에 따라 또는 데이터 도착 같은 사용자가 정의한 트리거에 따라 실행될 수 있어요. 태스크 그래프를 사용해 태스크를 연결하고, DAG(방향성 비순환 그래프, directed acyclic graph)를 정의해 더 복잡한 주기적 처리를 지원할 수 있어요. 자세한 내용은 태스크 소개와 태스크 그래프로 태스크 시퀀스 만들기를 참고해요.
태스크를 테이블 스트림과 결합하면 새 데이터나 변경된 데이터를 연속적으로 처리하는 편리하고 강력한 방법이 돼요. 태스크는 SYSTEM$STREAM_HAS_DATA를 사용해 스트림이 표시하는 새 행이나 변경된 행을 변환할 수 있어요. 태스크가 실행될 때마다 변경 데이터를 소비하거나, 변경 데이터가 없으면 현재 실행을 건너뛸 수 있어요.
다른 연속 데이터 파이프라인 기능
- Snowpipe, Snowpipe Streaming, 또는 Kafka용 Snowflake 커넥터를 사용하는 연속 데이터 로드.
- 동적 테이블(Dynamic Tables)을 사용하는 연속 데이터 변환.