56 минут назад
Представлен публике версия СУБД DuckDB 2.0.0 LTS

21 октября 2026 года состоялся релиз СУБД DuckDB 2.0.0 LTS «Cinnamon Teal» (лат. Spatula cyanoptera - Коричневый чирок - утка с эффектным красновато-коричневым оперением, обитающей в западной части американского континента) с долгосрочной поддержкой до конца 2027 года. Исходный код проекта написан на языке С++ и распространяется под лицензией MIT. Версия СУБД DuckDB 1.0 произошёл в июне 2024 года.

СУБД DuckDB позиционируется как вариант SQLite для аналитических запросов. Проект сочетает такие свойства SQLite, как компактность, возможность подключения в форме встраиваемой библиотеки, хранение БД в одном файле и удобный CLI‑интерфейс, со средствами и оптимизациями для выполнения аналитических запросов, охватывающих значительную часть хранимых данных, в частности, выполняющих агрегирование всего содержимого таблиц или слияние нескольких больших таблиц.
Решение DuckDB предоставляет расширенный диалект языка SQL, включающий дополнительные возможности для обработки весьма сложных и длительно выполняемых запросов. Возможно использование сложных типов (массивы, структуры, объединения), а также выполнение произвольных и вложенных коррелирующих подзапросов. Поддерживается одновременное выполнение нескольких запросов, выполнение запросов напрямую из файлов в форматах CSV и Parquet. Доступна поддержка импорта из СУБД PostgreSQL.
В проекте DuckDB используется оболочка из SQLite, парсер из PostgreSQL, модуль Date Math из MonetDB, своя реализация оконных функций (на базе алгоритма Segment Tree Aggregation), обработчик регулярных выражений на основе библиотеки RE2, собственный оптимизатор запросов, MVCC‑механизм управления одновременным выполнением заданий (Multi‑Version Concurrency Control), а также векторизованный движок выполнения запросов на базе алгоритма Hyper‑Pipelining Query Execution, позволяющий в одной операции разом обрабатывать большие наборы значений.
«Это наш самый масштабный выпуск с точки зрения функциональных возможностей. В него вошли: доработанная релиз протокола Quack, поддержка асинхронного ввода‑вывода (I/O), полноценный тип данных VARIANT, „агентский“ режим (agent mode), триггеры, расширяемый SQL‑парсер и многое другое — результат работы, включающей почти 20 000 коммитов, сделанных после выхода DuckDB 1.5. С выходом этой версии доступны три линейки DuckDB. DuckDB 2.0 — это релиз с долгосрочной поддержкой (LTS), которая будет осуществляться как минимум до октября 2027 года. Предыдущий LTS-релиз, релиз 1.4, также поддерживается — до 17 ноября 2026 года. Чтобы обеспечить плавный переход и предоставить в достаточной степени времени для тестирования, мы продлили дедлайн поддержки DuckDB 1.5 до марта 2027 года, практически равным образом переведя эту версию в категорию LTS», — пояснили в команде проекта.
Основные изменения и доработки в СУБД DuckDB 2.0.0:
с самого начала своего существования DuckDB была внутрипроцессной (in-process) базой данных. В версии DuckDB 1.5.3, выпущенной в мае, мы представили протокол Quack, который даёт возможность применять DuckDB в традиционной архитектуре «клиент-сервер». В дополнение к нему появилось расширение quack, реализующее собственный протокол DuckDB, за счёт чему любой процедура DuckDB может выступать в роли сервера для своих баз данных. В версии DuckDB 2.0.0 представлена доработанная релиз протокола Quack, отличающаяся значительным повышением производительности и стабильности. Кроме того, появилась новая команда CONNECT, которая даёт возможность подключаться к удаленной базе данных и переключаться на нее за одно действие, что делает работу с системой более удобной:

инструкция CONNECT не ограничивается системой Quack: она даёт возможность подключить сеанс к любой удаленной базе данных, поддерживающей этот алгоритм, в том числе PostgreSQL и MySQL. В таких случаях новый оптимизатор удаленных запросов (remote pushdown optimizer) передаёт запросы непосредственно на удаленный хост, вместо того чтобы загружать таблицы по сети;
в CLI также предусмотрены сокращенные команды для настройки пары «клиент-сервер» в Quack: новые аргументы -serve и -connect позволяют запустить хост Quack или подключиться к нему непосредственно из командной строки:

в DuckDB 2.0 внедрён асинхронный ввод-вывод (I/O) для чтения файлов в форматах Parquet и CSV, а равным образом собственного формата хранения данных DuckDB. Теперь уровень ввода-вывода масштабируется нев зависимости от уровня обработки запросов: операции чтения выполняются в фоновом режиме, при этом в обработке может находиться сразу несколько запросов. Это обеспечивает гораздо более высокий уровень параллелизма при удаленном чтении данных и значительно ускоряет выполнение запросов к объектным хранилищам (например, s3://);

режим агента в интерфейсе командной строки (CLI). Агенты для написания кода, такие как Claude Code, Codex и Cursor, всё чаще взаимодействуют с интерфейсом командной строки (CLI) DuckDB от имени своих пользователей. В версии 2.0 CLI автоматически распознает, когда он используется агентом, и переключается в «режим агента»: вместо таблиц в рамках с отступами выводятся компактные таблицы в формате Markdown, четко обозначаются случаи, когда результат был сокращен, выполнение «зацикленных» или чрезмерно долгих запросов принудительно останавливается, а сообщения об ошибках предоставляются в формате JSON;
для длительных SQL‑запросов перед их выполнением выводится оценка ожидаемых затрат, что позволяет агенту принять решение: стоит ли дожидаться результата. В соответствии с нашим экспериментам с использованием набора данных TPC‑H, в режиме агента объем данных, выводимых DuckDB и считываемых моделью, сократился на 59%. Вы можете включить этот режим при ручном тестировании с помощью флага ‑agent или, наоборот, дать указание агенту отключить его, используя флаг ‑no‑agent;
в DuckDB 2.0 предусмотрен маленький набор изменений, нарушающих обратную совместимость. Для большинства пользователей обновление пройдет без затруднений, тем не менее в сложных системах, где одновременно выполняется много процессов DuckDB, потребуется повышенное внимание. Основным источником возможных проблем является формат хранения данных: версии DuckDB, предшествующие 2.0, не могут считывать файлы баз данных, созданные в DuckDB 2.0. При этом DuckDB 2.0 по‑прежнему поддерживает чтение и запись существующих файлов баз данных, которые остаются доступными и для более старых версий. Мы рекомендуем протестировать версию 2.0.0 в изолированной среде, прежде чем переводить на нее рабочую систему. Кроме того, если ваша рабочая нагрузка критически важна, возможно, стоит дождаться первого корректирующего выпуска (патча), который выйдет в ноябре. Подробную информацию можно посмотреть в руководстве по миграции.

В августе 2026 года Amazon приобрела DuckLabs — разработчика открытой базы данных DuckDB. Согласно условиям сделки, все сотрудники DuckLabs, в том числе создателей DuckDB Ханнеса Мюляйзена и Марка Раасвельдта, присоединятся к Amazon. Сделка не предусматривает покупки самой DuckDB, продукт останется открытым и будет распространяться бесплатно под лицензией MIT. Контролировать его разработку будет некоммерческий фонд DuckDB Foundation, как и связанных проектов DuckLake и Quack.
Продолжить читать

