MotherDuck — облачная платформа на DuckDB для команд до 30 аналитиков. Гибридное выполнение, DuckDB-WASM, Team Attach. Узнайте, когда она выгоднее Snowflake.
Представьте: ваша команда из десяти аналитиков работает с данными до 1 ТБ, платит за Snowflake $50 000 в месяц, а половина запросов выполняется на ноутбуке. MotherDuck — облачная платформа от создателей DuckDB — предлагает гибридную модель: один SQL-запрос выполняется частично локально, частично в облаке. Это снижает стоимость в 100 раз и ускоряет ad-hoc запросы. В статье разберём четыре ключевые примитива MotherDuck, сравним со Snowflake и дадим готовый код для старта.
Главная особенность MotherDuck — гибридное выполнение. Планировщик SQL сам решает, какую часть запроса выполнять локально (на ноутбуке аналитика), а какую — в облаке. Например, локальный Parquet-файл объединяется с облачной таблицей в одном запросе без лишних движений данных.
import duckdb, os
# Подключаемся к MotherDuck
con = duckdb.connect(f'md:acme_prod?motherduck_token={os.environ["MD_TOKEN"]}')
# Гибридный запрос: локальный CSV + облачная таблица
con.sql('''
SELECT c.country, SUM(o.amount) AS revenue
FROM read_csv_auto('local_orders.csv') o
JOIN md:acme_prod.public.customers c ON o.cust_id = c.id
GROUP BY c.country
ORDER BY revenue DESC
LIMIT 10
''').show()Планировщик сам решает: read_csv_auto выполняется локально, а md:acme_prod.public.customers — в облаке. Аналитик видит единый результат. Это даёт субсекундную задержку для локальных данных и экономию на облачных ресурсах.
Гибридная модель идеальна для исследовательских запросов: вы загружаете небольшой срез данных локально, а тяжёлые агрегации оставляете в облаке. Например, ETL-пайплайн, который читает сырые логи из S3 (локально через read_parquet) и обновляет витрину в MotherDuck.
DuckDB компилируется в WebAssembly, и MotherDuck использует duckdb-wasm для запуска аналитики прямо в браузере. Никаких серверов, никакой установки — достаточно открыть страницу.
// JavaScript: инициализация DuckDB-WASM
import * as duckdb from '@duckdb/duckdb-wasm';
const worker = new Worker(new URL('@duckdb/duckdb-wasm/dist/duckdb-browser.worker.js', import.meta.url));
const logger = new duckdb.ConsoleLogger();
const db = new duckdb.AsyncDuckDB(logger, worker);
await db.instantiate('https://unpkg.com/@duckdb/duckdb-wasm@1.0/dist/duckdb-eh.wasm');
// Загружаем Parquet-файл по HTTP
const res = await fetch('https://example.com/sales.parquet');
const buf = await res.arrayBuffer();
await db.registerFileBuffer('sales.parquet', new Uint8Array(buf));
// Выполняем запрос
const conn = await db.connect();
const result = await conn.query(`SELECT region, SUM(revenue) FROM 'sales.parquet' GROUP BY region`);
console.table(result.toArray());Производительность: до 10–100 миллионов строк комфортно, до 1 ГБ Parquet через HTTP range reads. Ограничение — память браузера (~2 ГБ). Подходит для дашбордов и ad-hoc анализа без бэкенда.
Team Attach — это примитив для шаринга баз данных. Одна строка подключения, ролевой доступ и снимки с откатом во времени.
-- Администратор создаёт базу и даёт доступ
ATTACH 'md:acme_prod';
CREATE OR REPLACE TABLE analytics.revenue AS SELECT * FROM source;
GRANT SELECT ON analytics TO analyst_role;
-- Аналитик подключается той же строкой
ATTACH 'md:acme_prod';
SELECT * FROM analytics.revenue LIMIT 10;RBAC: три роли — read-only, read-write, admin. Time-travel: можно откатить таблицу на любой момент за последние 7 дней. Это проще и дешевле, чем Snowflake Data Sharing (контракты) или BigQuery (IAM).
Принимайте решение по четырём осям: объём данных, стоимость ad-hoc запроса, задержка, совместная работа.
| Ось | MotherDuck | Snowflake |
|---|---|---|
| Объём данных | до 1 ТБ на БД | петабайты |
| Стоимость ad-hoc | ~$0 (локально) – $0.001 | кластер-секунда, мин. разогрев |
| Задержка (<1 ТБ) | миллисекунды – субсекунда | 1–10 с (холодный старт) |
| Шаринг | Team Attach (одна строка) | Data Sharing (контракты) |
Для команд до 30 аналитиков с данными до 1 ТБ MotherDuck в 10–100 раз дешевле. Если нужны петабайты, ML-пайплайны или enterprise-интеграции — оставайтесь на Snowflake/BigQuery/Databricks.
Прямо сейчас: зарегистрируйтесь в MotherDuck (бесплатный тариф), подключите свою базу через duckdb.connect('md:...') и выполните тестовый запрос. Сравните стоимость и скорость со своим текущим решением. Для команд до 1 ТБ это лучший выбор в 2026 году.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →