Het project pgrust is gepubliceerd, met de implementatie van de PostgreSQL-database, herschreven in Rust met behulp van de c2rust-translator en een AI-assistent. Er wordt gemeld dat het project nog niet klaar is voor gebruik in productieomgevingen, maar het doorloopt inmiddels succesvol alle regressietests van PostgreSQL, is compatibel met het gegevensopslagformaat van PostgreSQL 18.3 en kan de data-directory van PostgreSQL 18.3 gebruiken. De code van het project wordt verspreid onder de AGPLv3-licentie, in tegenstelling tot de originele PostgreSQL, die onder de permissieve PostgreSQL-licentie valt, vergelijkbaar met de BSD- en MIT-licenties. Er is een online demonstratie beschikbaar, gebaseerd op een build in WebAssembly, evenals een docker-image voor een snelle start.
Als doel van de ontwikkeling wordt volledige compatibiliteit met PostgreSQL 18.3 genoemd, evenals het uitvoeren van experimenten met het interne ontwerp en het creƫren van een versie van PostgreSQL die vrij is van architectonische beperkingen, waarvan het niet mogelijk is om te ontsnappen om historische redenen. Het project doorloopt met succes een set van meer dan 46.000 regressietests van PostgreSQL, maar is momenteel niet compatibel met extensies voor PostgreSQL, biedt niet de gewenste prestatie-optimalisaties en implementeert de procedurele talen PL/Python, PL/Perl en PL/Tcl nog niet volledig.
Toekomstplannen:
- Overstappen naar een multi-threaded interne architectuur.
- Implementatie van connection pooling.
- Optimalisatie voor werkprocessen die intensief gebruikmaken van JSON.
- Mogelijkheid om kopieƫn en takken van database-elementen te creƫren in een Copy-on-Write-modus zonder data te kopiƫren.
- Experimenten met architecturen die het uitvoeren van de VACUUM-operatie niet vereisen.
- Een systeem van beperkingen voor SQL-query's, waardoor overmatig verbruik van middelen bij het uitvoeren van kwalijke query's kan worden geblokkeerd.
- Bescherming tegen het overschakelen van de optimizer naar minder efficiƫnte uitvoeringsplannen voor query's.
Volgens de auteur van het project wordt momenteel gewerkt aan de volgende versie van pgrust, waarin in plaats van een pool van werkprocessen een multi-threaded model voor verbindingen wordt geĆÆmplementeerd, en ook extra optimalisaties worden toegepast, zoals batchverwerking van rijen in tabellen en voorwaartse gegevenslading. Bij het testen met het percona-tpcc hulpmiddel bleek de nieuwe versie van pgrust 50% sneller te zijn bij het verwerken van transacties dan de standaard PostgreSQL, en 300 keer sneller bij het verwerken van analytische query's.
Bij de vertaling naar Rust werd een hybride benadering gebruikt, waarbij de PostgreSQL-code aanvankelijk werd verwerkt met behulp van de c2rust-translator, die een unsafe-representatie van Rust genereert, dicht bij de structuur van de oorspronkelijke C-code. Na verwerking in c2rust werden er ongeveer 1000 crate-pakketten gemaakt, die parallel werden vertaald naar idiomatisch Rust met behulp van het AI-model Claude en de Conductor-toolset voor het verdelen van taken tussen gelijktijdig draaiende subagenten.
Bron: opennet.ru
