🎯 Definicja
Snowflake to cloudowa platforma danych (Data Cloud) działająca jako SaaS, oferująca hurtownię danych, data lake i możliwości udostępniania danych — na AWS, Azure i GCP. Wyróżnia ją rozdzielenie compute od storage i architektura multi-cluster.
🔑 Kluczowe punkty
- Rozdzielenie compute/storage: płacisz osobno za przechowywanie i za obliczenia
- Virtual Warehouse: klaster obliczeniowy, który można uruchamiać i zatrzymywać
- Auto-suspend/resume: warehouse zatrzymuje się po bezczynności — brak kosztów w tle
- Time Travel: powrót do dowolnego stanu danych z ostatnich 90 dni
- Zero-copy cloning: kopia tabeli/bazy bez duplikowania danych (metadane)
- Data Sharing: udostępnianie danych innym organizacjom bez kopiowania
📚 Szczegółowe wyjaśnienie
Architektura trójwarstwowa
┌─────────────────────────────────┐
│ Cloud Services Layer │ Optymalizacja zapytań,
│ (Authentication, Optimizer) │ metadata, security
└────────────────┬────────────────┘
│
┌────────────────▼────────────────┐
│ Compute Layer │ Virtual Warehouses
│ ┌──────┐ ┌──────┐ ┌──────┐ │ niezależne klastry
│ │ VW 1 │ │ VW 2 │ │ VW 3 │ │
│ └──────┘ └──────┘ └──────┘ │
└────────────────┬────────────────┘
│
┌────────────────▼────────────────┐
│ Storage Layer │ Dane w S3/Blob/GCS
│ (compressed columnar format) │ płacisz per GB/miesiąc
└─────────────────────────────────┘
Kluczowe funkcje SQL
-- Time Travel — dane sprzed 3 dni
SELECT * FROM orders AT (OFFSET => -3*24*60*60);
-- Zero-copy clone — środowisko testowe w sekundy
CREATE DATABASE production_clone CLONE production;
-- Streams — CDC wbudowane w Snowflake
CREATE STREAM orders_stream ON TABLE orders;
SELECT * FROM orders_stream WHERE METADATA$ACTION = 'INSERT';
-- Dynamic Tables — automatyczne odświeżanie widoków
CREATE DYNAMIC TABLE silver_orders
TARGET_LAG = '10 minutes'
WAREHOUSE = compute_wh
AS
SELECT id, UPPER(status) as status FROM raw_orders;Snowflake w Modern Data Stack
Airbyte → Snowflake (raw) → dbt (transform) → Snowflake (marts) → BI Tool
Koszty — pułapki
- Warehouse działa przez minimum 60 sekund po uruchomieniu
COPY INTOładuje pliki z S3 — tańsze niż INSERT- Unikaj
SELECT *na dużych tabelach — pełen scan - Clustering keys dla dużych tabel (alternatywa dla partycjonowania)
💡 Przykład zastosowania
Centralna platforma analityczna: Airbyte ładuje dane z 15 systemów źródłowych do Snowflake RAW database. dbt transformuje do ANALYTICS database. Marketing używa VW marketing_wh (XS), Finance używa finance_wh (L, tylko w godzinach roboczych) — każdy płaci osobno, nie blokują się nawzajem.