pgrust — клон на PostgreSQL на Rust, преминаващ всички регресионни тестове

Публикуван е проектът pgrust с реализиране на СУБД PostgreSQL, преписан на езика Rust с използването на транслатора c2rust и AI асистента. Заявено е, че проектът все още не е готов за използване в работни проекти, но вече успешно преминава всички регресионни тестове на PostgreSQL, съвместим е с формата на данни на PostgreSQL 18.3 и може да използва data каталог от PostgreSQL 18.3. Кодът на проекта се разпространява под лицензия AGPLv3, за разлика от оригиналния PostgreSQL, доставян под разрешителна лицензия, близка до лицензите BSD и MIT. Налична е онлайн демонстрация на възможностите, базирана на сборка в 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, близко по структура до оригиналния код на C. След обработката в c2rust са създадени около 1000 crate-пакета, които паралелно се превеждат на идиоматичен Rust с помощта на AI модела Claude и инструмента Conductor за разпределяне на задачите между едновременно стартирани субагенти.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster