← Ко всем open source проектам

DuckDB

duckdb/duckdb

DuckDB — встраиваемая аналитическая SQL-база данных для быстрых локальных запросов.

Форки 3,367
Автор duckdb
Язык C++
Лицензия MIT
Обновлено 2026-06-27

Что это такое

DuckDB — высокопроизводительная аналитическая SQL-база данных, которая работает внутри процесса приложения. Ее часто описывают как “SQLite для аналитики”, но это скорее полезная аналогия, чем точное определение.

Проект рассчитан на быстрые запросы по данным, которые лежат рядом с приложением или аналитической тетрадью: файлы, таблицы, промежуточные выгрузки и локальные наборы данных.

DuckDB делает ставку на портативность и простоту. Можно поставить клиент, подключить файл или DataFrame и выполнять SQL без отдельного сервера базы данных.

Что внутри

DuckDB поддерживает богатый диалект SQL: вложенные и коррелированные подзапросы, оконные функции, collations, сложные типы вроде массивов, структур и map, а также расширения, которые делают SQL удобнее.

Проект доступен как отдельная программа командной строки и как клиентская библиотека для Python, R, Java, Wasm и других сред. Глубокие интеграции с pandas и dplyr особенно важны для аналитиков.

В отличие от серверных аналитических баз, DuckDB не требует поднимать отдельную службу. Это удобно для локального анализа, тестов, встроенной аналитики и обработки файлов.

Как используют

Типичный сценарий — загрузить CSV, Parquet или DataFrame, выполнить SQL-запрос и получить агрегаты без настройки кластера. Это резко ускоряет работу с данными среднего размера.

Разработчики используют DuckDB в приложениях, где нужна аналитика рядом с пользователем или внутри процесса: отчеты, проверка данных, обработка выгрузок, локальные прототипы.

Ограничение в том, что DuckDB не является заменой многопользовательской транзакционной базы. Для постоянной записи большим числом клиентов, ролей и сетевого доступа нужен другой слой.

Запрос из Python

Пример показывает сильную сторону DuckDB: SQL можно выполнить прямо по данным pandas без отдельного сервера.

Сильные стороны и ограничения

Сильная сторона DuckDB — аналитический SQL там, где раньше приходилось писать много кода обработки данных. Он хорошо работает как локальный двигатель запросов.

Слабая сторона — границы класса продукта. Для централизованного хранилища, прав доступа, постоянных сетевых подключений и масштабирования на много пользователей нужны дополнительные системы.

DuckDB подойдет аналитикам, инженерам данных, разработчикам отчетов и авторам локальных инструментов. Если задача — высоконагруженная запись транзакций, лучше смотреть на обычную серверную базу.

Пример

SQL поверх DataFrame

Пример показывает, как DuckDB может выполнить аналитический запрос по данным, уже загруженным в Python.

Язык: Python
import duckdb
import pandas as pd

sales = pd.DataFrame({
    "region": ["EU", "EU", "US"],
    "amount": [120, 80, 150],
})

result = duckdb.sql("""
    SELECT region, sum(amount) AS total
    FROM sales
    GROUP BY region
""").df()
print(result)