Organisation ← 최상위
└── Account ← 서비스 사용 단위
├── Network Policy
├── User
├── Role Account-level Objects
├── Warehouse
├── Share
├── Resource Monitor
└── Database
└── Schema
├── Table
├── View
├── Stage
├── Pipe Schema-level Objects
├── Stream
├── Task
├── Stored Procedure
└── Function (UDF)
| 객체 | 한 줄 요약 |
|---|---|
| Organisation | 최상위 컨테이너. 여러 Account를 통합 관리 |
| Account | 실제 서비스 사용 단위. 모든 리소스는 Account 안에 존재 |
Account 바로 아래에 존재하는 객체들
| 객체 | 한 줄 요약 | 핵심 키워드 |
|---|---|---|
| Network Policy | IP 허용/차단으로 접근 제어 | 보안 |
| User | 로그인 주체 (사람 또는 서비스) | 인증 |
| Role | 권한 묶음. RBAC의 핵심 | 권한 관리 |
| Database | Schema를 담는 논리적 컨테이너 | 스토리지 |
| Warehouse | 쿼리 실행 컴퓨팅 리소스. 사용 중에만 크레딧 소모 | 컴퓨팅 |
| Share | 다른 Account와 데이터 공유 | 데이터 공유 |
| Resource Monitor | 크레딧 사용량 모니터링 및 임계값 초과 시 알림/정지 | 비용 관리 |
| 객체 | 한 줄 요약 |
|---|---|
| Database | Schema의 논리적 그룹 |
| Schema | Table, View 등 실제 객체들의 네임스페이스. 기본으로 PUBLIC, INFORMATION_SCHEMA 자동 생성 |
실제 데이터가 저장되는 핵심 객체
| 유형 | Time Travel | Fail-safe | 특징 |
|---|---|---|---|
| Permanent | 최대 90일 | ✅ 7일 | 기본 테이블. 가장 강한 보호 |
| Transient | 최대 1일 | ❌ | 비용 절감. Fail-safe 없음 |
| Temporary | 최대 1일 | ❌ | 세션 종료 시 자동 삭제 |
| Iceberg ⭐ | 제한적 | ❌ | 오픈 포맷. 외부 카탈로그 연동 가능 |
| External | ❌ | ❌ | 외부 스토리지(S3 등) 직접 쿼리 |
| Dynamic ⭐ | ✅ | ❌ | 선언적 자동 증분 갱신 |
⭐ = COF-C03 신규 추가
Time Travel 기간: Standard 에디션 최대 1일 / Enterprise 이상 최대 90일
| 유형 | 특징 |
|---|---|
| Standard | SELECT 쿼리를 가상 테이블로. 매 조회 시 실행 |
| Materialized | 결과를 물리적 저장 → 빠름. 스토리지 추가 소모 |
| Secure | DDL 정의 숨김 → Data Sharing 시 사용 |
데이터 로드/언로드 시 사용하는 임시 저장 위치
| 유형 | 특징 |
|---|---|
| Named Internal | CREATE STAGE로 명시적 생성. Schema-level 객체 |
| Named External | S3 / Azure Blob / GCS 등 외부 스토리지 연결 |
User Stage (@~) | 사용자마다 자동 할당. 별도 생성 불필요 |
Table Stage (@%테이블명) | 테이블마다 자동 할당. 별도 생성 불필요 |
| 객체 | 역할 | 핵심 키워드 |
|---|---|---|
| Pipe | Stage에 파일 업로드 시 자동 수집 (Snowpipe) | 파일 단위, 준실시간 |
| Stream | 테이블 변경(INSERT/UPDATE/DELETE) 추적 | CDC, 변경 감지 |
| Task | cron 일정 또는 이벤트 기반으로 SQL 자동 실행 | 스케줄러, 자동화 |
💡 Stream + Task 조합 → ELT 파이프라인 자동화의 핵심 패턴
| 항목 | Stored Procedure | Function (UDF) |
|---|---|---|
| DML 실행 | ✅ 가능 | ❌ 불가 |
| SELECT 내 호출 | ❌ 불가 | ✅ 가능 |
| 반환값 | 단일 값 또는 테이블 | 단일 값(Scalar) 또는 테이블(UDTF) |
| 지원 언어 | SQL, JS, Python, Java, Scala | SQL, JS, Python, Java |
| 용도 | 비즈니스 로직 캡슐화 | 재사용 가능한 계산 로직 |
| 비교 | 구분 포인트 |
|---|---|
| Permanent vs Transient vs Temporary | Fail-safe 유무 → Permanent만 있음 / 세션 삭제 → Temporary만 |
| Standard vs Materialized View | Materialized = 물리적 저장 → 빠름 |
| Standard vs Secure View | Secure = DDL 숨김 → Data Sharing 필수 |
| Internal vs External Stage | 저장 위치: Snowflake 내부 vs 외부(S3 등) |
| Pipe vs Stream | Pipe = 파일 수집 / Stream = 테이블 변경 추적 |
| Stored Procedure vs Function | Procedure = DML 가능 / Function = SELECT 안에서 호출 |
| Iceberg vs External Table | Iceberg = 오픈 포맷 + 외부 카탈로그 / External = 외부 스토리지 직접 쿼리 |
📌 참고 공식 문서