Le projet pgrust, une implĂ©mentation du SGBD PostgreSQL réécrite en Rust Ă l'aide du traducteur c2rust et d'un assistant IA, est dĂ©sormais disponible. Bien que le projet ne soit pas encore prĂȘt pour une utilisation en production, il a passĂ© avec succĂšs tous les tests de rĂ©gression PostgreSQL, est compatible avec le format de stockage de donnĂ©es PostgreSQL 18.3 et peut utiliser le catalogue de donnĂ©es PostgreSQL 18.3. Le code du projet est distribuĂ© sous licence AGPLv3, contrairement Ă PostgreSQL, qui est distribuĂ© sous une licence permissive similaire aux licences BSD et MIT. Une dĂ©monstration en ligne basĂ©e sur WebAssembly est disponible, ainsi qu'une image Docker pour un dĂ©marrage rapide.
L'objectif de développement est d'atteindre une compatibilité totale avec PostgreSQL 18.3, ainsi que d'expérimenter des modifications de conception interne et de créer une version de PostgreSQL exempte des limitations architecturales qui persistent pour des raisons historiques. Le projet réussit avec succÚs une série de plus de 46 000 tests de régression PostgreSQL, mais est actuellement incompatible avec les modules complémentaires PostgreSQL, n'offre pas les optimisations de performance souhaitées et n'implémente pas entiÚrement les langages procéduraux PL/Python, PL/Perl et PL/Tcl.
Projets pour l'avenir:
- Traduction vers une architecture interne multithread.
- Mise en Ćuvre du regroupement de connexions.
- Optimisé pour les flux de travail qui utilisent intensivement JSON.
- La possibilité de créer des copies et des branches d'éléments de base de données en mode Copy-on-Write sans copier les données.
- Expérimentations avec une architecture qui ne nécessite pas l'opération VACUUM.
- Un systĂšme de limites de requĂȘtes SQL qui vous permet de bloquer la consommation excessive de ressources lors de l'exĂ©cution de requĂȘtes de mauvaise qualitĂ©.
- Protection contre le passage de l'optimiseur Ă des plans d'exĂ©cution de requĂȘtes moins efficaces.
D'aprĂšs l'auteur du projet, la prochaine version de pgrust est en cours de dĂ©veloppement. Elle remplace un pool de processus de travail par un modĂšle de traitement des connexions multithread et intĂšgre des optimisations supplĂ©mentaires, comme le traitement par lots des lignes de table et le chargement prĂ©dictif des donnĂ©es. TestĂ©e avec l'outil percona-tpcc, cette nouvelle version de pgrust s'est avĂ©rĂ©e 50 % plus rapide que PostgreSQL standard pour le traitement des transactions et 300 fois plus rapide pour le traitement des requĂȘtes analytiques.
Une approche hybride a été utilisée pour la traduction en Rust. Le code PostgreSQL a d'abord été traité avec le traducteur c2rust, qui génÚre une représentation Rust non sécurisée dont la structure est similaire à celle du code C original. AprÚs traitement par c2rust, environ 1 000 paquets crate ont été créés, puis traduits simultanément en Rust idiomatique grùce au modÚle d'IA Claude et à la boßte à outils Conductor, permettant la distribution des tùches entre des sous-agents exécutés en parallÚle.
Source: opennet.ru
