DuckDB 2.0.0 LTS «Cinnamon Teal»: крупнейший релиз базы данных
Команда 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
Комментарии
Войдите, чтобы комментировать.