
Data Warehouse
Snowflake는 스토리지(저장) 와 컴퓨팅(처리) 을 완전히 분리하고, 여러 독립 클러스터가 동일 데이터를 동시에, 서로 간섭 없이 처리할 수 있도록 설계된 클라우드 네이티브 데이터 웨어하우스다. 📋 목차 왜 이 아키텍처가 탄생했는가 전체 구조 한눈에 보기 Cloud Services Layer — 두뇌 Query Processing Layer — ...

Storage Layer

Snowflake는 3개의 레이어가 완전히 분리된 구조로 이루어져 있습니다

❄️ Snowflake Architecture: Cloud Services Layer 완전 정리 > 📌 출처: Snowflake 공식 문서 - Key Concepts & Architecture > 이 글은 공식 문서를 기반으로 작성되었습니다. 🏗️ 먼저 알아야

Account 바로 아래에 존재하는 객체들실제 데이터가 저장되는 핵심 객체

각 Snowflake 계정의 핵심 특성:단일 클라우드 제공자에서 호스팅Amazon Web Services (AWS)Google Cloud Platform (GCP)Microsoft Azure (Azure)단일 지리적 리전에 프로비저닝됨

UDF는 스키마 레벨 객체(schema-level objects)로, 사용자가 직접 함수를 작성할 수 있다.

Stored Procedures 기본 개념 정의 | 구분 | 내용 | |------|------| | RDBMS 정의 | SQL 문장들의 명명된 집합(named collections) | | 특징 | 절차적 로직(procedural logic) 포함 가능 | | Snowflake | 분기(branching), 반복(looping) 등 프로그래밍 구조 ...

Sequence란? > A sequence is a schema-level object that generates unique, incrementing numeric values automatically.

A Task is an object used to schedule the execution of a SQL statement, a stored procedure, or procedural logic using Snowflake Scripting.Task는 SQL 문,

1. Connectors & Drivers 드라이버 (언어별 직접 연결) Python, Go, PHP, .NET, Node.js, JDBC, ODBC 커넥터 (서드파티 시스템 통합) Spark, Kafka > 💡 목록에 없는 툴 → JDBC 또는 ODBC로 연결 권장 2. Python Connector 핵심 특징 순수 Python 패키지 — J...

Snowflake Scripting은 Snowflake SQL에 절차적 로직(procedural logic)을 추가하는 확장 기능이다.사용 가능한 컨텍스트 Stored Procedure (저장 프로시저) 내부UDF (User-Defined Function) 내부Stor

1️⃣ Snowpark란? (Domain 1 — 아키텍처) | 항목 | 내용 | |---|---| | 정의 | Python / Java / Scala 코드로 Snowflake 내부에서 직접 데이터 처리하는 라이브러리 | | 핵심 원칙 | 데이터를 외부로 이동하지 않고 Snowflake 서버 내에서 실행 (Pushdown) | | 지원 언어 | Java,...

LLM 기반 AI 어시스턴트로, 데이터 분석 전 과정을 자연어로 지원Snowflake Cortex 내에서 실행되며, 엔터프라이즈 데이터와 메타데이터는 Snowflake 외부로 나가지 않음RBAC(역할 기반 접근 제어)를 완전히 준수하며, 사용자가 접근 가능한 데이터셋

Snowflake Cortex는 Snowflake가 제공하는 완전 관리형 AI/ML 서비스 플랫폼이다.별도 인프라 구축 없이 Snowflake 안에서 LLM을 활용한 애플리케이션을 구축할 수 있다.핵심 메시지: "Snowflake 데이터를 벗어나지 않고, AI 기능을

Access Control을 이해하기 위한 기본 단위는 Who → Operation → Object 구조다.Snowflake는 아래 세 가지 모델을 혼합하여 사용한다."Privilege → Role → User"Access privilege를 Role에 부여하고, Ro

A role is an entity to which privileges on securable objects can be granted or revoked.Role은 보안 가능한 객체(Securable Object)에 대한 권한(Privilege)을 부여하거나 취소할

A security privilege defines a level of access to an object.Privilege는 객체(Object)에 대한 접근 수준을 정의하는 보안 권한각 객체(Object)마다 부여 가능한 고유한 Privilege 집합이 존재함Priv

핵심 개념 User authentication = username + password 기반 인증, Snowflake의 기본(default) 인증 방식 사용자 생성 USERADMIN 역할 + CREATE USER 권한 → 사용자 생성 가능 MUSTCHANGEPASS

1. 기본 개념 MFA는 Duo Security로 구동되며, 이 서비스는 Snowflake가 완전히 관리한다. MFA는 사용자(per-user) 단위로 활성화되며, 사용자는 자동 등록되지 않는다 → 직접 enroll 필요. MFA는 비밀번호로 인증하는 human 사용

1. 개념 Federated authentication은 안전한 SSO(Single Sign-On) 로 Snowflake에 연결하게 해준다. SSO를 사용하면 사용자는 Snowflake에 직접 인증하지 않고 제3자 IdP로 인증한다. Snowflake는 인증 책임을

1. Key Pair Authentication ⭐ 키워드 최소 2048-bit RSA 키 페어 필요 OpenSSL로 PEM 형식 키 생성 사용자에게 할당: ALTER USER ... SET RSAPUBLICKEY=... basic auth(아이디/비번)의 대안으

1. Network Rules (네트워크 규칙) 스키마 레벨(schema-level) 객체로, 단일 IP 또는 IP 범위를 저장한다. 📌 핵심 포인트 CIDR 표기법으로 IP 서브넷 범위를 표현 → 192.168.1.0/24 IPv4뿐 아니라 IPv6도 지원 (

1. 두 가지 암호화 | 구분 | 무엇을 | 어떻게 | |------|--------|--------| | At Rest (저장) | Table Data, Internal Stage Data | AES-256 | | In Transit (전송) | ODBC/JDBC/

1. Column-level Security (컬럼 단위 보안) 컬럼에 Masking Policy를 적용하는 기능. 두 가지 하위 기능 포함: Dynamic Data Masking (동적 데이터 마스킹) External Tokenization (외부 토큰화) 2.

1. Secure View란? 기반 테이블(underlying table) 또는 뷰의 내부 구조적 세부사항(internal structural details) 에 대한 접근을 제한하도록 설계된 뷰 데이터 프라이버시(민감 데이터 보호) 목적으로 사용 ⚠️ 단순 쿼리

1. Account Usage Snowflake가 제공하는 공유 읽기 전용(shared read-only) 데이터베이스 SNOWFLAKE ACCOUNT_USAGE라는 Share 객체를 통해 import됨 6개 스키마로 구성 (account/object 레벨의 세밀한

Virtual Warehouse = Snowflake의 컴퓨팅 리소스 클러스터에 대한 이름 붙은 추상화(named abstraction)💡 사용자는 named warehouse 객체와만 상호작용하고, 그 아래 실제 컴퓨팅 리소스는 직접 다루지 않음공식 문서 기준, w

가상 웨어하우스는 STARTED(=Running) 와 SUSPENDED 상태를 오갈 수 있습니다.SUSPEND: 웨어하우스에서 모든 컴퓨트 노드를 제거(removes all compute nodes) 하고 'Suspended' 상태로 전환. → 크레딧 소비 중단.RES

총 10개: X-Small → S → M → L → X-Large → 2XL → 3XL → 4XL → 5XL → 6XL사이즈마다 컴퓨팅 파워 약 2배 증가 → 클수록 쿼리 성능 ↑⭐ 데이터 로딩은 큰 Warehouse 불필요 (파일 개수/크기가 더 중요)🧠 1부터 2

핵심 규칙: 한 단계 커질 때마다 크레딧 2배 (XS=1 부터 시작)🎯 암기법: 1·2·4·8 만 외우고 2배씩 → 1, 2, 4, 8, 16, 32, 64, 128...XS=1, M=4, L=8, XL=16 이 시험에 가장 자주 나옴.컴퓨팅 리소스 프로비저닝의 최소

QAS = "튀는 쿼리(outlier)"의 무거운 스캔·필터 작업을 공유 컴퓨팅 자원에 떠넘겨(offload) 빠르게 처리하는 서비스핵심 동사 "offload(오프로드)" 하나만 기억하면 됩니다.🔑 "스캔이 크고(Large Scan), 둘 중 하나"큰 스캔 + 선택적

이 흐름 안에서 성능 문제 5가지가 터집니다:SELECT는 맨 먼저 쓰지만, 거의 맨 나중에 실행된다.암기 문장 (영어 첫 글자):Friendly Whales Gather, Hungry Quietly... Dive, Order Lunch(FROM-WHERE-GROUP-

1️⃣ Caching (캐싱) 🏛️ 3-Layer별 캐시 위치 (⭐) | 캐시 | 위치 | |---|---| | Metadata Cache | Services Layer | | Results Cache | Services Layer | | Local Disk C

Clustering = 비슷한 데이터를 같은 "서랍(micro-partition)"에 모아두는 것→ 찾을 때 모든 서랍을 뒤지지 않고 필요한 서랍만 열면 됨 (= 빠른 쿼리)도서관에서 책을 찾는다고 생가해보자Snowflake도 똑같습니다. 데이터를 잘 정렬해두면 → 불

"건초더미에서 바늘 찾기"를 빠르게 해주는 기능→ 거대한 테이블에서 딱 몇 개 행만 콕 집어 찾는 쿼리를 빠르게!책이 10,000권 있는 도서관에서 특정 책 1권을 찾는다고 해보세요.Search Optimization = 이 "색인" 역할을 합니다.→ 정식 명칭은 Se

그룹 A — "입력을 넣으면 출력이 어떻게 나오나?" (모양으로 구분)→ Scalar, Aggregate, Window, Table그룹 B — "누가 만들고, 어디서 도는가?" (출처로 구분)→ System, User-defined, External이 4개는 "행(ro

암기법: "CHSFP" → CHe SoFt PCardinality–HyperLogLogSimilarity–MinHashFrequency–Space-SavingPercentile–t-DigestQ. distinct 개수를 추정하는 알고리즘은? → HyperLogLogQ.

전체 통(테이블)을 다 먹어볼 순 없으니,무작위로 한 스푼 떠서 맛보는 것 = Table SamplingSAMPLE이랑 TABLESAMPLE은 이름만 다른 쌍둥이 🍼 (완전히 같음)사탕 한 알 한 알을 집을지 말지 동전을 던져 결정→ 50%면 사탕마다 앞면 나온 것만

미리 정의된 구조/스키마가 없는 데이터Stage에 올린 비정형 파일에 접근하는 URL을 생성하는 함수들📍 공식 문서 추가: GET_PRESIGNED_URL과 BUILD_SCOPED_FILE_URL은 non-deterministic,BUILD_STAGE_FILE_URL

본질: Stage 위 implicit object (별도 DB 객체 ❌, 자체 권한 ❌)저장: 파일 단위 메타데이터 (External Table과 유사)켜기: DIRECTORY = (ENABLE = TRUE) ← CREATE / ALTER 공통조회: SELECT \*

🔑 "C·J·P 양방향 / A·O·X 들어오기만"전부 Load 가능Unload 불가 = Avro · ORC · XMLCSV만 정형, 나머지 5개 반정형(→ VARIANT)🎯 함정: 50~500MB / uncompressed📌 클론 함정"Snowflake가 컬럼형으

Snowflake 테이블의 모든 데이터는 자동으로 micro-partition으로 나뉘며, 이는 연속적인(contiguous) 저장 단위입니다.⭐ 포인트: 크기 50–500MB (uncompressed) 는 단골 출제. 압축 시 더 작아진다는 단서도 함께 기억.micr

Active Data → Time Travel (0~90일) → Fail-safe (고정 7일)설정 파라미터: DATA_RETENTION_TIME_IN_DAYS용도 3가지: 복원(UNDROP) · 과거조회(AT/BEFORE) · 복제(CLONE)0일 = Time Tra

1. Cloning이란? 기존 객체의 복사본을 생성하는 작업. 핵심은 metadata-only operation. 실제 데이터를 복사하지 않고 메타데이터(pointer)만 복사 → source와 동일한 micro-partition을 공유 따라서 매우 빠르고, 변경

Replication(복제) 은 같은 조직(Organization) 내 Snowflake 계정들 사이에서 데이터베이스를 복제하는 기능이다.데이터베이스 객체와 저장된 데이터를 계정 간 동기화 상태로 유지리전(Region) 간, 클라우드 플랫폼(AWS/GCP/Azure)

하루 평균 on-disk 바이트 × 리전별 TB당 정액 요율 → 매월 청구현·타·페 + 스테이블: 현재 데이터 + Time Travel + Fail-SafeInternal Stage: 스테이징된 파일(압축/비압축)TB당 정액(flat rate)계정 유형(Capacity

Secure Data Sharing(보안 데이터 공유) 는 내 계정의 데이터베이스 객체를 다른 Snowflake 계정과 공유하는 기능이다.핵심은 계정 레벨의 SHARE 객체를 통해 공유가 이루어진다는 점이다. SHARE는 데이터 제공자(Data Provider) 가 생