DuckDB 2.0.0 LTS «Cinnamon Teal»: крупнейший релиз базы данных

· Программы
Команда DuckDB выпустила версию 2.0.0 с долгосрочной поддержкой — клиент-серверный протокол Quack, асинхронный ввод-вывод, триггеры, тип VARIANT и режим для ИИ-агентов. В основе — почти 20 000 коммитов.

cover.svg

Команда DuckDB представила версию 2.0.0 с долгосрочной поддержкой (LTS) под кодовым именем «Cinnamon Teal» — в честь рыжевато-бурой утки Spatula cyanoptera, обитающей на западе Америк. Если выпуск 1.0 был посвящён стабильности и обратной совместимости, то 2.0 авторы называют прежде всего релизом новых возможностей: за ним стоит почти 20 000 коммитов, накопившихся со времён DuckDB 1.5.

DuckDB как сервер

С самого начала DuckDB была встраиваемой базой, работающей внутри процесса приложения. В версии 1.5.3 появился протокол Quack, позволяющий запускать её в привычной клиент-серверной связке. Теперь Quack получил заметный прирост производительности и стабильности, а новая команда CONNECT позволяет подключиться к удалённой базе одним выражением. Она работает не только с Quack, но и с PostgreSQL и MySQL, причём оптимизатор передаёт запросы на удалённый сервер, а не вытягивает таблицы по сети.

Скорость и данные

Добавлен асинхронный ввод-вывод для чтения файлов Parquet и CSV: слой I/O теперь масштабируется независимо от обработки запросов и держит несколько чтений «в полёте», что особенно ускоряет работу с объектными хранилищами вроде s3://. Полноправным гражданином стал тип VARIANT — своего рода «JSON на стероидах»: он хранит бессхемные данные, но при этом движок находит общую структуру и «нарезает» её для хорошего сжатия и быстрого исполнения.

Режим для ИИ-агентов

Поскольку CLI всё чаще запускают кодовые агенты вроде Claude Code, Codex и Cursor, DuckDB 2.0 умеет распознавать такой запуск и переходит в agent mode: вместо громоздких рамок печатаются компактные таблицы Markdown, честно сообщается об усечении результата, долгие запросы заранее оценивают стоимость, а ошибки возвращаются в JSON. На тестах TPC-H это сократило объём вывода, который приходится читать модели, на 59%.

Расширяемость и SQL

По умолчанию включён новый парсер SQL на основе PEG, пришедший на смену потомку парсера PostgreSQL. Расширения теперь могут встраиваться прямо в грамматику. Появились триггеры (CREATE TRIGGER), обновлённый C API v2 и возможность размещать собственные подписанные репозитории расширений. SQL-диалект пополнился сокращением $переменная, соединениями NEAREST для векторного поиска, вложенными схемами и функциями изменения JSON.

Переход на 2.0

Бреакинг-изменений немного, но главный риск — формат хранения: версии до 2.0 не читают файлы, созданные в 2.0, хотя сама 2.0 работает со старыми файлами. Библиотека ICU исчезла: часовые пояса, календари и сравнения теперь реализованы самой базой, с данными IANA, сжатыми примерно до 45 кБ. Требуется компилятор C++17, по умолчанию используется Clang. Для критичных нагрузок разработчики советуют дождаться первого патча в ноябре.


Источник: Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.