A fost publicat proiectul pgrust cu implementarea bazei de date PostgreSQL, rescris în limbajul Rust folosind traductorul c2rust și asistentul AI. Se declară că proiectul nu este încă pregătit pentru utilizarea în proiecte de muncă, dar trece deja toate testele de regresie PostgreSQL, este compatibil cu formatul de stocare a datelor PostgreSQL 18.3 și poate utiliza catalogul de date de la PostgreSQL 18.3. Codul proiectului este distribuit sub licența AGPLv3, spre deosebire de PostgreSQL original, livrat sub o licență permissivă apropiată de licențele BSD și MIT. Este disponibilă o demonstrație online a capabilităților, bazată pe o construcție în WebAssembly, precum și o imagine Docker pentru pornirea rapidă.
Printre obiectivele dezvoltării se menționează atingerea compatibilității complete cu PostgreSQL 18.3, precum și realizarea de experimente pentru modificarea arhitecturii interne și crearea unei versiuni PostgreSQL scutite de constrângerile arhitecturale de care nu se poate scăpa din motive istorice. Proiectul trece cu succes un set de peste 46.000 de teste de regresie PostgreSQL, dar deocamdată este incompatibil cu extensiile PostgreSQL, nu oferă optimizările de performanță dorite și nu implementează complet limbajele procedurale PL/Python, PL/Perl și PL/Tcl.
Planuri pentru viitor:
- Traducerea pe arhitectura internă multi-thread.
- Implementarea pool-ului de conexiuni.
- Optimizarea pentru fluxurile de lucru care utilizează intens JSON.
- Posibilitatea de a crea copii și ramificații ale elementelor BD în modul Copy-on-Write fără copierea datelor.
- Experimente cu o arhitectură care nu necesită executarea operației VACUUM.
- Sistemul de constrângeri ale interogărilor SQL, care permite blocarea consumului excesiv de resurse în timpul executării interogărilor de calitate slabă.
- Protecție împotriva trecerii optimizatorului la planuri de executare mai puțin eficiente.
Conform autorului proiectului, în prezent se lucrează la următoarea versiune a pgrust, în care, în locul pool-ului de procese de lucru, este implementat un model multi-thread de procesare a conexiunilor, precum și optimizări suplimentare, cum ar fi procesarea în lot a rândurilor din tabele și încărcarea proactivă a datelor. În testarea cu instrumentul percona-tpcc, în timpul procesării tranzacțiilor, noua versiune pgrust a fost mai rapidă decât PostgreSQL standard cu 50%, iar în timpul procesării interogărilor analitice—de 300 de ori.
În traducerea în Rust a fost folosită o abordare hibridă, în care codul PostgreSQL a fost inițial procesat cu ajutorul translatorului c2rust, care generează o reprezentare unsafe în Rust, similară ca structură codului original în C. După procesarea în c2rust au fost create aproximativ 1000 de pachete crate, care au fost traduse parțial în Rust idiomatic cu ajutorul modelului AI Claude și al instrumentelor Conductor pentru distribuirea sarcinilor între subagenții rulați simultan.
Sursa: opennet.ro
