ГлавнаяБлогMotherDuck: гибридная аналитика на DuckDB в облаке
Алгоритмы

MotherDuck: гибридная аналитика на DuckDB в облаке

MotherDuck — облачная платформа на DuckDB для команд до 30 аналитиков. Гибридное выполнение, DuckDB-WASM, Team Attach. Узнайте, когда она выгоднее Snowflake.

Al
Редакция Algolitalgolit.ru
12 мин чтения29 июля 2026 г.

Зачем читать эту статью

Представьте: ваша команда из десяти аналитиков работает с данными до 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-WASM: аналитика в браузере

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: совместная работа

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).

Когда MotherDuck выигрывает у Snowflake

Принимайте решение по четырём осям: объём данных, стоимость ad-hoc запроса, задержка, совместная работа.

ОсьMotherDuckSnowflake
Объём данныхдо 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 году.

#MotherDuck#DuckDB#гибридная аналитика#облачные базы данных#Snowflake
Al
Редакция Algolit

Пишем про алгоритмы, подготовку к собеседованиям и карьеру в IT — так, чтобы было понятно и полезно.

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →