Открыть сервис

DuckDB

DuckDB — это встраиваемая реляционная система управления базами данных (СУБД), ориентированная на выполнение аналитических запросов (OLAP) в процессах обработки данных. Разрабатывается как открытое программное обеспечение (Open Source) под лицензией MIT. Главной особенностью DuckDB является колоночное хранение данных и движок, оптимизированный для сложных OLAP-запросов (агрегации, соединения больших таблиц, оконные функции), при этом она не требует установки отдельного сервера и работает внутри приложения.

История и контекст

DuckDB была создана в 2018—2019 годах в Центре интеллектуальных систем данных (CWI) в Нидерландах под руководством Ханнеса Мюлеисера и Марка Расвелда. Разработчики стремились создать аналог SQLite, но для аналитических нагрузок. SQLite идеально подходит для транзакционных (OLTP) задач, но неэффективен при анализе больших объёмов данных из-за строчного хранения и отсутствия продвинутого оптимизатора запросов. DuckDB проектировалась как колоночная база данных, способная работать с датасетами, значительно превышающими доступную оперативную память, за счёт поддержки внешних сортировок и хэшей.

Первый публичный релиз (v0.1) состоялся в 2019 году. За короткое время DuckDB завоевала популярность в сообществе разработчиков данных (Data Engineering, Data Science) благодаря лёгкости интеграции с языками Python, R, Julia, Node.js, а также низкому порогу входа. К 2024 году проект стабильно развивается, выпускаются новые версии, добавляющие расширения, поддержку форматов Parquet, CSV, JSON, а также возможности для работы с большими объёмами данных (шардинг, параллельное выполнение запросов).

Архитектура и устройство

DuckDB реализована как колоночная СУБД с векторным выполнением запросов. Векторная обработка означает, что ядро СУБД оперирует не одной строкой за раз, а пакетами (векторами) значений (типичный размер 1024 элемента), что существенно снижает накладные расходы на вызовы функций и повышает эффективность кэша процессора.

Ключевые компоненты архитектуры:

Классификация и характеристики

DuckDB относится к классу встраиваемых OLAP-СУБД. Она не является клиент-серверной (хотя может работать и в таком режиме через расширения). Основные характеристики:

Применение и экосистема

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

Важные инструменты экосистемы:

Преимущества и ограничения

Достоинства DuckDB:

Недостатки и ограничения:

Примеры использования

Интересные факты

Источники

  1. H. Mühleisen, M. Raasveldt. DuckDB: an embeddable analytical database. Proceedings of the 2019 International Conference on Management of Data (SIGMOD). 2019.
  2. DuckDB Documentation (official). DuckDB: What is DuckDB?https://duckdb.org/docs (режим доступа: свободный).
  3. Raasveldt, M., Mühleisen, H. (CWI). Vectorized execution in DuckDB. arXiv:2109.07392. 2021.
  4. DuckDB GitHub repository. License: MIThttps://github.com/duckdb/duckdb (режим доступа: свободный).
  5. TPC-H Benchmark Results for DuckDB. DuckDB Blog. 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →