Article
WAL-RUS: ClickHouse schreibt Postgres-Backups in Rust neu
ClickHouse Cloud hat WAL-RUS vorgestellt, eine Open-Source-Rust-Implementierung für PostgreSQL-Backups und WAL-Archivierung. Das Tool wurde entwickelt, um ein spezifisches Problem zu lösen: Speichervorhersagbarkeit in ressourcenbeschränkten Umgebungen.
Das Problem mit WAL-G
WAL-G ist in Go geschrieben – einer Sprache mit Garbage Collection. Während Go zuverlässige Infrastruktur-Software erleichtert, macht der Garbage Collector die Speichernutzung schwer vorhersehbar, besonders für langlaufende Services wie WAL-Archivierung.
Das Problem ist nicht nur der resident memory, sondern auch virtual memory. Go’s Runtime reserviert oft deutlich mehr virtuellen Speicher als aktiv genutzt wird. Der “Sägezahn”-Effekt führt zu schwankenden Speicherprofilen, die Kapazitätsplanung erschweren.
WAL-RUS: Die Lösung
WAL-RUS bietet vier entscheidende Vorteile:
- Vorhersagbare Ressourcennutzung: Rust ermöglicht direkte Kontrolle über Speicherallokation und Nebenläufigkeit mit begrenzten Worker-Pools
- Daemon-Architektur: Persistente Object-Storage-Verbindungen statt Prozesse pro WAL-Datei
- Streaming-Optimierung: Minimale Pufferung und Datenkopien im Pipeline
- WAL-G-Kompatibilität: Gleiche Konfigurationsvariablen, wechselseitige Lesbarkeit von Archiven
Benchmarks
In Tests erreichte WAL-G fast 2,8 GB virtuellen Speicher, während WAL-RUS unter 1 GB blieb – eine Reduktion von über 70%. WAL-RUS zeigte zudem ein stabiles Speicherprofil während des gesamten Testlaufs.
Der Durchsatz war vergleichbar mit WAL-G, und die CPU-Auslastung lag bei allen drei getesteten Tools (WAL-RUS, WAL-G, pgBackRest) auf ähnlichem Niveau, primär für LZ4-Kompression.
Fazit
WAL-RUS adressiert ein praktisches Problem: zuverlässige PostgreSQL-Backups mit kleinerem, vorhersagbarem Ressourcen-Footprint. Die WAL-G-Kompatibilität macht die Migration für bestehende Deployments unkompliziert. ClickHouse plant, WAL-RUS als Standard-Backup-Mechanismus für ihr Managed-Postgres-Angebot einzusetzen.
Quelle: ClickHouse Blog