Snowflake
클라우드 기반 데이터 웨어하우스(DW). 스토리지와 컴퓨팅을 분리한 아키텍처로, 대용량 분석 쿼리에 특화되어 있다.
핵심 개념
| 용어 |
설명 |
| Virtual Warehouse |
쿼리를 실행하는 컴퓨팅 클러스터 (독립적으로 스케일) |
| Database / Schema |
논리적 데이터 구조 (RDBMS와 동일) |
| Stage |
데이터 로딩/언로딩을 위한 임시 저장소 (S3 등 연결 가능) |
| Snowpipe |
자동 연속 데이터 수집 파이프라인 |
| Time Travel |
과거 데이터 조회 및 복구 (최대 90일) |
| Zero-copy Clone |
메타데이터만 복사해 즉시 테이블/DB 복제 |
아키텍처
Cloud Storage (S3/Azure Blob/GCS)
↕ (분리)
Virtual Warehouse (컴퓨팅)
↕
Cloud Services Layer (메타데이터, 쿼리 최적화, 인증)
- 스토리지와 컴퓨팅이 완전히 분리 → 각각 독립적으로 스케일링
OLTP vs OLAP
|
OLTP (MySQL 등) |
OLAP (Snowflake) |
| 목적 |
트랜잭션 처리 |
대용량 분석 |
| 쿼리 |
단건 읽기/쓰기 |
집계, 조인, 스캔 |
| 데이터 크기 |
GB 수준 |
TB ~ PB |
| 최적화 |
행(Row) 기반 |
열(Column) 기반 |
주요 SQL
-- Virtual Warehouse 제어
USE WAREHOUSE my_wh;
ALTER WAREHOUSE my_wh SUSPEND;
ALTER WAREHOUSE my_wh RESUME;
-- Time Travel (3일 전 데이터 조회)
SELECT * FROM orders AT (OFFSET => -60*60*24*3);
-- Zero-copy Clone
CREATE TABLE orders_backup CLONE orders;
CREATE DATABASE dev CLONE production;
-- 외부 스테이지에서 데이터 로딩 (S3)
COPY INTO orders
FROM @my_s3_stage/orders/
FILE_FORMAT = (TYPE = 'CSV' FIELD_OPTIONALLY_ENCLOSED_BY = '"');
-- 스키마 자동 감지
CREATE TABLE logs
USING TEMPLATE (
SELECT ARRAY_AGG(OBJECT_CONSTRUCT(*))
FROM TABLE(INFER_SCHEMA(LOCATION => '@my_stage', FILE_FORMAT => 'my_format'))
);
Virtual Warehouse 크기
| 크기 |
크레딧/시간 |
용도 |
| XS |
1 |
소규모 쿼리 |
| S |
2 |
일반 분석 |
| M |
4 |
중간 규모 |
| L |
8 |
대용량 집계 |
| XL+ |
16+ |
초대용량 |
- 쿼리 없으면 자동 일시정지(Auto-suspend) 설정 권장 → 비용 절감
메모