Ir publicēts pgrust projekts — PostgreSQL DBMS ieviešana, kas pārrakstīta Rust valodā, izmantojot c2rust tulkotāju un mākslīgā intelekta palīgu. Lai gan projekts vēl nav gatavs lietošanai ražošanā, tas ir veiksmīgi izturējis visus PostgreSQL regresijas testus, ir saderīgs ar PostgreSQL 18.3 datu glabāšanas formātu un var izmantot PostgreSQL 18.3 datu katalogu. Projekta kods tiek izplatīts saskaņā ar AGPLv3 licenci, atšķirībā no sākotnējā PostgreSQL, kas ir licencēts saskaņā ar atļaujošu PostgreSQL licenci, kas ir līdzīga BSD un MIT licencēm. Ir pieejama tiešsaistes demonstrācija, kuras pamatā ir WebAssembly, kā arī Docker attēls ātrai palaišanai.
Izstrādes mērķis ir panākt pilnīgu saderību ar PostgreSQL 18.3, kā arī eksperimentēt ar iekšējām dizaina izmaiņām un izveidot PostgreSQL versiju, kas ir brīva no arhitektūras ierobežojumiem, kuri vēsturisku iemeslu dēļ joprojām nav atrisināti. Projekts veiksmīgi iztur vairāk nekā 46 000 PostgreSQL regresijas testu, taču pašlaik nav saderīgs ar PostgreSQL pievienojumprogrammām, nenodrošina vēlamo veiktspējas optimizāciju un pilnībā neievieš PL/Python, PL/Perl un PL/Tcl procedurālās valodas.
Nākotnes plāni:
- Tulkojums uz daudzpavedienu iekšējo arhitektūru.
- Savienojumu apvienošanas ieviešana.
- Optimizēts darbplūsmām, kurās tiek plaši izmantots JSON.
- Iespēja izveidot datubāzes elementu kopijas un atzarus režīmā "Kopēt rakstīšanas laikā", nekopējot datus.
- Eksperimenti ar arhitektūru, kurai nav nepieciešama VACUUM darbība.
- SQL vaicājumu ierobežojumu sistēma, kas ļauj bloķēt pārmērīgu resursu patēriņu, izpildot zemas kvalitātes vaicājumus.
- Aizsardzība pret optimizētāja pārslēgšanos uz mazāk efektīviem vaicājumu izpildes plāniem.
Pēc projekta autora teiktā, pašlaik notiek darbs pie nākamās pgrust versijas, kas aizstāj darba procesu kopu ar daudzpavedienu savienojumu apstrādes modeli un ietver papildu optimizācijas, piemēram, tabulas rindu partijveida apstrādi un paredzamo datu ielādi. Testējot ar percona-tpcc rīkkopa, jaunā pgrust versija bija par 50% ātrāka nekā standarta PostgreSQL, apstrādājot darījumus, un 300 reizes ātrāka, apstrādājot analītiskos vaicājumus.
Rust tulkošanai tika izmantota hibrīda pieeja. PostgreSQL kods vispirms tika apstrādāts, izmantojot c2rust tulkotāju, kas ģenerē nedrošu Rust attēlojumu, kura struktūra ir līdzīga sākotnējam C kodam. Pēc apstrādes c2rust tika izveidotas aptuveni 1000 crate pakotnes, kuras pēc tam tika vienlaicīgi tulkotas idiomātiskajā Rust valodā, izmantojot Claude AI modeli un Conductor rīku komplektu uzdevumu sadalīšanai starp vienlaicīgi darbojošiem apakšagentiem.
Avots: opennet.ru
