pgrust — ein Klon von PostgreSQL, der in Rust geschrieben wurde und alle Regressionstests besteht

Das Projekt pgrust wurde veröffentlicht, mit einer Implementierung der PostgreSQL-Datenbank, die in der Programmiersprache Rust unter Verwendung des Transpilers c2rust und eines KI-Assistenten neu geschrieben wurde. Es wird angegeben, dass das Projekt derzeit noch nicht für den Einsatz in Produktionsprojekten bereit ist, jedoch bereits erfolgreich alle Regressionstests von PostgreSQL bestanden hat, mit dem Speicherformat von PostgreSQL 18.3 kompatibel ist und das Data-Katalog von PostgreSQL 18.3 verwenden kann. Der Quellcode des Projekts wird unter der AGPLv3-Lizenz verbreitet, im Gegensatz zu dem ursprünglichen PostgreSQL, das unter einer permissiven Lizenz vertrieben wird, die den Lizenzen BSD und MIT ähnlich ist. Eine Online-Demonstration der Möglichkeiten ist verfügbar, basierend auf einer WebAssembly-Build, sowie ein Docker-Image für einen schnellen Start.

Als Ziel der Entwicklung wird die vollständige Kompatibilität mit PostgreSQL 18.3 erwähnt, sowie Experimente zur Veränderung der internen Struktur und zur Erstellung einer Version von PostgreSQL, die von architektonischen Einschränkungen befreit ist, die aus historischen Gründen nicht überwunden werden können. Das Projekt hat erfolgreich eine Reihe von über 46.000 Regressionstests von PostgreSQL bestanden, ist jedoch derzeit inkompatibel mit PostgreSQL-Plugins, bietet die gewünschten Performance-Optimierungen nicht und implementiert die prozeduralen Sprachen PL/Python, PL/Perl und PL/Tcl nicht vollständig.

Pläne für die Zukunft:

  • Übergang zu einer multithreaded internen Architektur.
  • Implementierung von Connection Pooling.
  • Optimierung für Arbeitslasten, die aktiv JSON verwenden.
  • Möglichkeit, Kopien und Verzweigungen von DB-Elementen im Copy-on-Write-Modus ohne Datenkopie zu erstellen.
  • Experimente mit einer Architektur, die keinen VACUUM-Vorgang erfordert.
  • Ein System von Einschränkungen für SQL-Abfragen, das übermäßigen Ressourcenverbrauch bei minderwertigen Abfragen blockiert.
  • Schutz vor dem Wechsel des Optimierers auf weniger effektive Ausführungspläne.

Laut dem Autor des Projekts wird derzeit an der nächsten Version von pgrust gearbeitet, in der anstelle eines Pools von Arbeitsprozessen ein multithreaded Modell zur Verarbeitung von Verbindungen implementiert wird, sowie zusätzliche Optimierungen wie das Batch-Processing von Zeilen in Tabellen und das Vorabrufen von Daten. Bei Tests mit dem Tool percona-tpcc konnte die neue Version von pgrust bei der Verarbeitung von Transaktionen 50 % schneller als das Standard-P PostgreSQL sein und bei der Verarbeitung von analytischen Anfragen sogar 300-mal.

Bei der Übersetzung in Rust wurde ein hybrider Ansatz verwendet, bei dem der Code von PostgreSQL zunächst mit Hilfe des Transformators c2rust verarbeitet wurde, der eine unsichere Rust-Darstellung generiert, die ihrer Struktur nach dem ursprünglichen C-Code ähnlich ist. Nach der Verarbeitung in c2rust wurden etwa 1000 Crate-Pakete erstellt, die parallel idiomatisch in Rust durch das KI-Modell Claude und das Werkzeug Conductor zur Aufgabenverteilung zwischen gleichzeitig laufenden Subagenten übersetzt wurden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4