pgrust — un clone de PostgreSQL écrit en Rust, réussissant tous les tests de régression

Un projet pgrust a été publié, mettant en œuvre une base de données PostgreSQL réécrite en Rust, utilisant le traducteur c2rust et un assistant AI. Il est déclaré que le projet n'est pas encore prêt pour une utilisation dans des projets de production, mais il passe déjà avec succès tous les tests de régression de PostgreSQL, est compatible avec le format de stockage des données PostgreSQL 18.3 et peut utiliser le catalogue de données de PostgreSQL 18.3. Le code du projet est distribué sous la licence AGPLv3, contrairement à l'original PostgreSQL, qui est fourni sous une licence permissive proche des licences BSD et MIT. Une démonstration en ligne des capacités est disponible, basée sur une version WebAssembly, ainsi qu'une image docker pour un démarrage rapide.

L'objectif du développement est d'atteindre une compatibilité totale avec PostgreSQL 18.3, ainsi que de mener des expériences sur la modification de l'architecture interne et de créer une version de PostgreSQL débarrassée des contraintes architecturales historiques. Le projet réussit à passer plus de 46 000 tests de régression de PostgreSQL, mais il n'est pas encore compatible avec les extensions de PostgreSQL, ne fournit pas les optimisations de performance souhaitées et ne met pas entièrement en œuvre les langages procéduraux PL/Python, PL/Perl et PL/Tcl.

Plans futurs :

  • Conversion à une architecture interne multithread.
  • Mise en œuvre du pooling de connexions.
  • Optimisation pour les workflows utilisant activement JSON.
  • Possibilité de créer des copies et des branches des éléments de la base de données en mode Copy-on-Write sans copier les données.
  • Expérimentations avec une architecture ne nécessitant pas l'opération VACUUM.
  • Un système de contraintes pour les requêtes SQL permettant de bloquer une consommation excessive de ressources lors de l'exécution de requêtes de mauvaise qualité.
  • Protection contre le changement de l'optimiseur vers des plans d'exécution moins efficaces.

Selon l'auteur du projet, des travaux sont actuellement en cours sur la prochaine version de pgrust, dans laquelle un modèle de traitement des connexions multithread remplace le pool de processus, ainsi que des optimisations supplémentaires, telles que le traitement par lots des lignes dans les tables et le chargement anticipé des données. Lors des tests avec l'outil percona-tpcc pour le traitement des transactions, la nouvelle version de pgrust s'est révélée 50% plus rapide que le PostgreSQL standard et 300 fois plus rapide pour le traitement des requêtes analytiques.

Lors de la traduction en Rust, une approche hybride a été adoptée, où le code PostgreSQL a d'abord été traité à l'aide du traducteur c2rust, générant une représentation unsafe en Rust, proche de la structure du code C d'origine. Après le traitement dans c2rust, environ 1000 packages crate ont été créés, qui ont été parallèlement traduits en Rust idiomatique à l'aide du modèle d'IA Claude et de l'outil Conductor pour répartir les tâches entre des sous-agents s'exécutant simultanément.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster