pgrust - клон PostgreSQL на Rust, що проходить всі регресійні тести

Опубліковано проект pgrust з реалізацією СУБД PostgreSQL, переписаною мовою Rust з використанням транслятора 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 для розподілу завдань між субагентами, що одночасно запускаються.

Джерело: opennet.ru

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster