DuckDB версии 2.0.0 улучшает режим работы сервера, поддерживает асинхронный ввод-вывод и SQL-триггеры, обеспечивает распознавание ИИ-агентов и будет поддерживаться до октября 2027 года.

Содержание.

В новой версии 2.0.0 системы DuckDB, получившей кодовое имя "Cinnamon Teal", представлена улучшенная серверная часть, а также реализована асинхронная обработка данных и возможность обнаружения обращений от агентов искусственного интеллекта. Кроме того, в новой версии появились триггеры и собственный SQL-парсер.

В версии DuckDB 2.0.0, выпущенной 21 октября, реализованы самые масштабные изменения за всю историю проекта. В нее вошли почти 20 000 изменений, внесенных с момента выхода версии DuckDB 1.5, сообщает команда разработчиков DuckDB в своем блоге. Версия DuckDB 2.0.0 является версией LTS (Long-term Service) и будет поддерживаться как минимум до октября 2027 года.

Больше серверных функций.

Протокол Quack, который был известен с версии DuckDB 1.5.3 и позволял запускать базу данных в традиционной клиент-серверной конфигурации, был расширен. Разработчики сообщают, что в версии 2.0.0 этот протокол работает быстрее и стабильнее.

Новая функция – CONNECT – позволяет пользователям подключать удаленную базу данных одним простым действием и сразу же переходить к работе с ней. Функция CONNECT работает с любой базой данных, поддерживающей удаленное выполнение запросов, включая, помимо Quack, PostgreSQL и MySQL. Для последних двух баз данных новый оптимизатор "Remote Pushdown" отправляет запросы непосредственно на удаленный сервер, вместо того чтобы загружать целые таблицы по сети. В командной строке новые параметры "-serve" и "-connect" запускают сервер Quack или устанавливают прямое соединение с существующим сервером соответственно.

Повышение производительности за счет асинхронного ввода-вывода.

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

В версии DuckDB 1.5 уже был реализован тип данных VARIANT для полуструктурированных данных, таких как JSON, а теперь он полностью интегрирован. Теперь DuckDB разбивает общие структуры в данных на столбцы ("фрагментация"), что позволяет лучше сжимать данные и ускорить их обработку.

Обнаружение агентов искусственного интеллекта.

В новой версии добавлена функция "режим агента" в командной строке. База данных автоматически переходит в этот режим, как только обнаруживает, что к ней обращаются такие инструменты для разработки кода, как Claude Code, Codex или Cursor. В этом режиме DuckDB выводит компактные таблицы в формате Markdown, указывает на усеченные результаты, прерывает слишком длинные запросы и сообщает об ошибках в формате JSON. Перед выполнением длительных запросов отображается информация о предполагаемых затратах. Режим агента также можно включать или отключать вручную с помощью параметров `-agent` и `-no-agent`.

По данным разработчиков DuckDB, в тесте TPC-H использование ресурсов (в виде токенов), необходимых для работы модели искусственного интеллекта, снизилось на 59 процентов благодаря режиму "агент" – с 123 600 до 50 800. Для оценки эффективности этого режима, модель Claude Code отвечала на 22 контрольных вопроса, используя набор данных с коэффициентом масштабирования 100, причем каждый вопрос задавался трижды: как с режимом "агент", так и без него. Однако это оказало незначительное влияние на общую стоимость и время выполнения, поскольку системный запрос, используемый агентом, составляет большую часть входных данных. Экономия токенов составила всего около 0,5 процента от общего объема входной информации.

SQL-триггер и новый парсер.

Триггеры теперь являются частью инструментов SQL в версии DuckDB 2.0.0. С их помощью можно создавать, например, таблицы для аудита или материализованные представления с постепенным обновлением данных. Параллельно с этим, DuckDB заменяет ранее использованный SQL-парсер, основанный на PostgreSQL, собственным парсером, разработанным на основе технологии PEG, который был доступен опционально начиная с версии 1.5.

Расширения позволяют добавлять новую синтаксическую конструкцию SQL с помощью парсера, а сообщения об ошибках указывают точное место в запросе, где произошла ошибка. Также интегрированы собственные репозитории расширений, через которые организации могут предоставлять расширения, подписанные ими самими. Кроме того, разработана обновленная версия C API (v2), которая пока не считается стабильной.

Переход на версию 2.0.

Поскольку версия DuckDB 2.0.0 содержит лишь незначительные изменения, процесс обновления для большинства пользователей должен пройти без проблем. Однако, более ранние версии DuckDB не смогут читать файлы баз данных, созданные с использованием версии 2.0. Разработчики DuckDB рекомендуют сначала протестировать версию 2.0.0 в тестовой среде, а затем переходить к использованию в производственной среде. Пользователи, использующие DuckDB для критически важных задач, могут рассмотреть возможность ожидания первого патч-релиза, запланированного на 18 ноября.

Предыдущая стабильная версия LTS 1.4 будет поддерживаться до 17 ноября 2026 года, а версия 1.5 – до марта 2027 года. Все даты указаны в календаре релизов. Полные примечания к выпуску DuckDB 2.0.0 доступны на GitHub. Команда представит другие небольшие нововведения в последующей публикации. Новая версия получила название в честь зимородка синекрылого (Spatula cyanoptera), вида уток, распространенного в западной части Северной и Южной Америки, характеризующегося красно-коричневым оперением.

Первоисточник — Heise

Автор оригинала — Manuel Masiero

Нашли неточность?

Сообщите редакции. Существенные исправления мы отмечаем в материале