Learning Platform
Глоссарий Troubleshooting
Урок 16.01 · 18 мин
Начальный
SnowflakeCloud DWHVirtual Warehouse

Snowflake: отдельные compute и storage

В 2012 году три инженера (Benoît Dageville, Thierry Cruanes, Marcin Żukowski) — все с прошлым в Oracle/VectorWise — основали компанию Snowflake. Их идея была революционной: полностью разделить storage и compute в облачном DWH. Не “разделить логически”, а физически: данные лежат в S3, а compute — это отдельные виртуальные машины, которые можно запускать и тушить независимо.

К 2026 году Snowflake — один из трёх главных cloud DWH в мире (Snowflake, BigQuery, Redshift), используется десятками тысяч компаний. Поняв общую модель Snowflake, ты поймёшь концепции, которые потом увидишь и у конкурентов.


Главная архитектурная идея

В традиционных DWH (Teradata, Oracle) storage и compute жили на одной машине. Хочешь больше данных — покупаешь машину с большим диском. Хочешь больше пользователей — добавляешь машину. Но эти потребности не растут одинаково: данные растут постоянно, а compute — рывками.

Snowflake разорвал эту связь:

Архитектура Snowflake: три слоя
Cloud Services Layer
Compute Layer (Virtual Warehouses)
Storage Layer (S3/GCS/Azure)

Три слоя независимы:

  • Storage растёт по мере данных. Цена — около 23-40 USD за TB в месяц.
  • Compute запускается под нагрузку. Платишь только за время работы warehouses (по секундам).
  • Cloud Services — управляющий слой, считается “бесплатным” (включён в стоимость).

Virtual Warehouses

Virtual warehouse — это compute-кластер для запросов. Размер обозначается t-shirt sizes: XS, S, M, L, XL, и далее до 6XL. Каждый размер удваивает количество нод и стоимость в credits/hour. 1 credit стоит примерно 2-4 USD в зависимости от региона и edition.

Ключевые свойства:

  • Можно запускать много warehouses одновременно. Маркетинг-команда и финансовая команда работают с одной DB через свои warehouses — друг другу не мешают.
  • Биллинг по секундам (после первой минуты).
  • Auto-suspend — warehouse выключится через N минут без запросов (типично 1-5 минут).
  • Auto-resume — при следующем запросе включится автоматически за пару секунд.
-- Создание warehouse
CREATE WAREHOUSE etl_wh WITH
  WAREHOUSE_SIZE = 'LARGE'
  AUTO_SUSPEND = 60      -- засыпает через 60 сек idle
  AUTO_RESUME = TRUE
  INITIALLY_SUSPENDED = TRUE;

-- Использование
USE WAREHOUSE etl_wh;
SELECT count(*) FROM huge_table;
TIP

Главная техника экономии в Snowflake: настраивай AUTO_SUSPEND = 60 seconds для warehouses, которые используются редко. Если warehouse работает 1 час в день — это 1 credit (для XS) против 24 credits, если не выключать.


Micro-partitions и pruning

Snowflake хранит данные в micro-partitions — внутреннем колоночном формате (похожий на Parquet, но проприетарный).

Что такое micro-partition:

  • Сжатый файл размером 16 MB (несжатый около 50-500 MB).
  • Колоночный: каждая колонка хранится отдельно с её типом сжатия.
  • Содержит metadata: min/max каждой колонки, кардинальность, количество NULL.

При запросе Snowflake читает metadata всех micro-partitions, отсеивает те, которые не подходят по WHERE-условию (partition pruning), и читает только нужные колонки (columnar pruning).

Parquet row groups vs Snowflake micro-partitions: как устроено columnar pruning

Clustering keys — можно явно указать, по каким колонкам кластеризовать данные. Snowflake будет стараться держать одинаковые значения этих колонок в одних micro-partitions, что улучшает pruning:

CREATE TABLE orders (
  order_id BIGINT,
  customer_id BIGINT,
  created_at TIMESTAMP,
  amount DECIMAL(10,2)
)
CLUSTER BY (created_at, customer_id);

Snowflake периодически перекластеризует таблицу автоматически (auto-clustering). Это дорого — расходует credits, но улучшает запросы.


Time travel

Snowflake хранит все версии таблицы за retention period (по умолчанию 1 день, в Enterprise — до 90 дней). Можно прочитать таблицу на момент в прошлом:

-- 10 минут назад
SELECT * FROM orders AT(OFFSET => -60 * 10);

-- Конкретный timestamp
SELECT * FROM orders AT(TIMESTAMP => '2026-05-15 10:00:00');

-- Восстановить случайно дропнутую таблицу
UNDROP TABLE orders;

Это спасает в большинстве инцидентов: случайный TRUNCATE, ошибочный UPDATE, миграция сломалась — UNDROP и time travel вытаскивают.


Zero-copy clones

Самая удивительная фича Snowflake: CLONE создаёт копию таблицы или базы за секунды и не дублирует данные.

Технически это указатель на те же micro-partitions. Если оригинал и клон не меняются — они физически одни и те же данные. Если клон начнёт меняться — Snowflake создаст новые micro-partitions только для изменённых частей (copy-on-write).

-- Создать клон production DB за секунды для тестов
CREATE DATABASE prod_clone CLONE prod;

-- Использовать в dev: 30 TB данных, 0 TB затрат
USE DATABASE prod_clone;

-- Дроп клона — бесплатная операция
DROP DATABASE prod_clone;

Раньше для testing надо было копировать prod-данные физически, что занимало часы и стоило storage. С zero-copy clones — секунды и копейки.

NOTE

Zero-copy clones — главная фича Snowflake для DataOps. Каждый разработчик может иметь свою копию prod-базы. Меняем данные — это видно только в моём клоне.


Snowpark и встроенный ML

В 2021 году Snowflake добавил Snowpark — API для написания трансформаций на Python, Scala, Java. Под капотом компилирует код в SQL и выполняет на warehouses. Можно также запускать UDF на Python внутри warehouse без выгрузки данных.

В 2023+ году Snowpark расширили до ML-возможностей: тренировка моделей прямо в Snowflake (Snowpark ML, Cortex AI с LLM-функциями).


Pricing model

Snowflake берёт деньги за две вещи:

  1. Storage — фиксированная цена за TB в месяц (около 23-40 USD/TB).
  2. Credits — за compute. 1 credit примерно 2-4 USD в зависимости от региона и edition.

Editions влияют на цену credit и фичи:

  • Standard — базовый, около 2 USD/credit.
  • Enterprise — multi-cluster warehouses, materialized views, longer time travel. Около 3 USD/credit.
  • Business Critical — HIPAA, дополнительная безопасность. Около 4 USD/credit.

Реальный пример счёта для небольшой команды:

  • 50 TB storage = 50 × 30 USD = 1500 USD/мес
  • ETL-warehouse 8 часов в день, M-size = 4 credits/hr × 8hr × 30 = 960 credits = около 2000 USD
  • BI-warehouse 4 часа в день, L-size = 8 × 4 × 30 = 960 credits = около 2000 USD
  • Итого: около 5500 USD/мес

Когда выбирать Snowflake

Плюсы:

  • Простота, fully managed (меньше DevOps).
  • Изолированные warehouses не конкурируют за ресурсы (multi-tenant без конфликтов).
  • Zero-copy clones, UNDROP — лучшие в индустрии для dev workflow.
  • Multi-cloud (AWS, Azure, GCP).

Минусы:

  • Сложное прогнозирование cost (credit-billing).
  • Vendor lock-in (но Iceberg ослабляет).
  • Cold start warehouses — 1-3 секунды на первый запрос.
  • Дорого при низкой утилизации.

Выбирай Snowflake если:

  • Команда любит SQL и не хочет управлять инфрой.
  • Workloads — смесь ETL и интерактивной аналитики.
  • Бюджет позволяет — Snowflake не самый дешёвый.
  • Нужна простота dev/staging через zero-copy clones.

Попробуй сам

Зарегистрируй бесплатный trial Snowflake (30 дней, 400 USD кредитов). Создай первый warehouse XS-размера. Загрузи sample dataset (есть встроенные snowflake_sample_data). Поэкспериментируй с warehouse sizes: запусти один и тот же запрос на XS и L — увидишь разницу в скорости и cost. Попробуй CLONE: CREATE DATABASE my_clone CLONE snowflake_sample_data; — копия за секунды. Сделай UNDROP таблицы после DROP. Это даст ощущение, чем Snowflake отличается от обычной PostgreSQL.


NOTE

Этот урок — обзорный. Глубокий разбор внутренностей Snowflake (query optimizer, search optimization service, dynamic tables, продвинутый Snowpark, dataops-практики, продакшен tuning) будет в отдельном будущем курсе snowflake-fundamentals платформы.

Проверка знанийKnowledge check
В чём революционность архитектуры Snowflake, и почему разделение storage и compute стало стандартом для cloud DWH?
ОтветAnswer
Революция Snowflake (2012) — физическое разделение storage (данные в S3/GCS/Azure) и compute (виртуальные warehouses). До этого в Teradata, Oracle всё было на одной машине: хочешь больше данных — покупаешь машину с большим диском, что задирает цену compute. Snowflake позволил масштабировать их независимо: storage растёт линейно с данными за дешёвую цену, compute запускается по запросу и платится по секундам. Это даёт три преимущества. Первое — экономика: платишь только за то, что используешь, не за idle железо. Второе — изоляция нагрузок: маркетинг и финансы запускают разные warehouses на одних данных без конкуренции. Третье — гибкость: zero-copy clones создают копии за секунды, dev/staging бесплатные. Эта модель оказалась настолько эффективна, что Redshift добавил RA3 (decoupled storage), BigQuery так делал с самого начала, а Databricks lakehouse-подход усилил концепт. К 2026 году разделение storage/compute — стандарт всех современных DWH и lakehouse-платформ.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 5. Что Snowflake разделяет в своей архитектуре, что сделало его революционным в 2012 году?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 4