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 се оказа с 50% по-бърза от стандартния PostgreSQL, а при обработка на аналитични заявки – 300 пъти.

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

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

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