pgrust — клон PostgreSQL на Rust, проходящий все регрессионные тесты

Опубликован проект pgrust с реализацией СУБД PostgreSQL, переписанной на языке Rust c использованием транслятора c2rust и AI-ассистента. Заявлено, что проект пока не готов для использования в рабочих проектах, но уже успешно проходит все регрессионные тесты PostgreSQL, совместим с форматом хранения данных PostgreSQL 18.3 и может использовать data-каталог от PostgreSQL 18.3. Код проекта распространяется под лицензией AGPLv3, в отличие от оригинального PostgreSQL, поставляемого под пермиссивной лицензией PostgreSQL, близкой к лицензиям BSD и MIT. Доступна online-демонстрация возможностей, основанная на сборке в WebAssembly, а также docker-образ для быстрого запуска.

В качестве цели разработки упоминается достижение полной совместимости с PostgreSQL 18.3, а также проведение экспериментов по изменению внутреннего устройства и созданию версии PostgreSQL, избавленной от архитектурных ограничений, от которых не удаётся избавиться по историческим причинам. Проект успешно проходит набор из более чем 46 тысяч регрессионных тестов PostgreSQL, но пока
несовместим с дополнениями к PostgreSQL, не предоставляет желаемых оптимизиций производительности и не полностью реализует процедурные языки PL/Python, PL/Perl и PL/Tcl.

Планы на будущее:

  • Перевод на многопоточную внутреннюю архитектуру.
  • Реализация пулинга соединений.
  • Оптимизация для рабочих процессов, активно использующих JSON.
  • Возможность создания копий и ответвлений элементов БД в режиме Copy-on-Write без копирования данных.
  • Эксперименты с архитектурой, не требующей выполнения операции VACUUM.
  • Система ограничений SQL-запросов, позволяющая блокировать излишнее потребление ресурсов при выполнении некачественных запросов.
  • Защита от переключение оптимизатора на менее эффективные планы выполнения запросов.

По словам автора проекта, в настоящее время ведётся работа над следующей версией pgrust, в которой вместо пула рабочих процессов реализована многопоточная модель обработки соединений, а также задействованы дополнительные оптимизации, такие как пакетная обработка строк в таблицах и упреждающая загрузка данных. При тестировании инструментарием percona-tpcc при обработке транзакций новая версия pgrust оказалась быстрее штатного PostgreSQL на 50%, а при обработке аналитических запросов — в 300 раз.

При переводе на Rust использован гибридный подход, при котором код PostgreSQL вначале был обработан помощи транслятора
c2rust, генерирующего unsafe-представление Rust, близкое по своей структуре к изначальному коду на Си. После обработки в c2rust было создано около 1000 crate-пакетов, которые параллельно переводились на идиоматический Rust при помощи AI-модели Claude и инструментария Conductor для распределения задач между одновременно запускаемыми субагентами.

Источник: http://www.opennet.ru/opennews/art.shtml?num=65879