Das Projekt pgrust wurde veröffentlicht, das eine PostgreSQL-Datenbank-Management-System neu in Rust unter Verwendung des c2rust-Translators und eines KI-Assistenten implementiert. Es wird angegeben, dass das Projekt noch nicht für den Einsatz in Produktionsprojekten bereit ist, aber bereits erfolgreich alle Regressionstests von PostgreSQL besteht, mit dem Datenformat von PostgreSQL 18.3 kompatibel ist und das Datenverzeichnis von PostgreSQL 18.3 nutzen kann. Der Code des Projekts steht unter der Lizenz AGPLv3, im Gegensatz zur originalen PostgreSQL, die unter der permissiven PostgreSQL-Lizenz vertrieben wird, die den Lizenzen von BSD und MIT ähnelt. Eine Online-Demonstration der Möglichkeiten ist verfügbar, die auf einer WebAssembly-Build basiert, sowie ein Docker-Image für einen schnellen Einsatz.
Das Ziel der Entwicklung ist, vollständige Kompatibilität mit PostgreSQL 18.3 zu erreichen und Experimente zur Veränderung der internen Struktur durchzuführen, um eine Version von PostgreSQL zu erstellen, die frei von architektonischen Einschränkungen ist, die aus historischen Gründen nicht beseitigt werden können. Das Projekt durchläuft erfolgreich einen Satz von über 46.000 Regressionstests von PostgreSQL, ist jedoch derzeit nicht mit PostgreSQL-Erweiterungen kompatibel, bietet nicht die gewünschten Leistungsoptimierungen und implementiert die prozeduralen Sprachen PL/Python, PL/Perl und PL/Tcl nicht vollständig.
Zukunftspläne:
- Umstellung auf eine mehrfädige interne Architektur.
- Implementierung von Connection Pooling.
- Optimierung für Arbeitsprozesse, die intensiv JSON nutzen.
- Möglichkeit, Kopien und Abzweigungen von Datenbankelementen im Copy-on-Write-Modus zu erstellen, ohne Daten zu kopieren.
- Experimente mit einer Architektur, die keine VACUUM-Operation erfordert.
- Ein SQL-Abfragebeschränkungssystem, das übermäßigen Ressourcenverbrauch bei der Ausführung von minderwertigen Abfragen blockiert.
- Schutz vor der Umschaltung des Optimierers auf weniger effiziente Ausführungspläne.
Laut dem Projektleiter wird derzeit an der nächsten Version von pgrust gearbeitet, die anstelle eines Pool-Workflows ein multithreaded Verbindungsmodell implementiert. Darüber hinaus werden zusätzliche Optimierungen eingesetzt, wie das Batch-Processing von Zeilen in Tabellen und das vorzeitige Laden von Daten. Bei Tests mit dem Percona-TPCC-Tool hat sich die neue Version von pgrust als 50 % schneller erwiesen als das Standard-PostgreSQL bei der Verarbeitung von Transaktionen, und bei der Ausführung von Analyseabfragen sogar 300-mal schneller.
Beim Transfer nach Rust wurde ein hybrider Ansatz gewählt, bei dem der PostgreSQL-Code zunächst mit dem Translator c2rust bearbeitet wurde, der eine unsafe-Darstellung von Rust generiert, die in ihrer Struktur dem ursprünglichen Code in C ähnelt. Nach der Bearbeitung in c2rust wurden etwa 1000 Crate-Pakete erstellt, die parallel in idiomatisches Rust mit Hilfe des KI-Modells Claude und des Conductor-Tools übersetzt wurden, um die Aufgaben zwischen gleichzeitig laufenden Subagenten zu verteilen.
Quelle: opennet.ru
