4 ms·
indeed, wal-g actually started as a port of wal-e which was Python: https://www.citusdata.com/blog/2017/08/18/introducing-wal-g-faster-restores-for-postgres htt
by __s 3mo ago
indeed, wal-g actually started as a port of wal-e which was Python: https://www.citusdata.com/blog/2017/08/18/introducing-wal-g-faster-restores-for-postgres https://www.citusdata.com/blog/2017/08/18/introducing-wal-g-...
wal-g was a much larger improvement over wal-e. we're optimizing the margins here
- sgt 3mo agoI'd like to use the one getting the most community support. So too soon to wait for Rust vs Go. Although on paper, Rust is better.
- __s 3mo agotbf it took 4 years since PG15 support was added for me to fix remote BASE_BACKUP support & wal-g base backups being inconsistent on PG15+ (parameter typo had pg_backup_stop return before wal archived far enough for consistency) https://github.com/wal-g/wal-g/pull/2262 https://github.com/wal-g/wal-g/pull/2262 but yes, this is young project, so fair take
- saisrirampur 3mo ago++ We’re big Go fans, most of PeerDB is written in Go: https://github.com/PeerDB-io/peerdb https://github.com/PeerDB-io/peerdb The importance of optimizing (resource) margins and having predictable memory usage increases significantly in the DBaaS/Postgres world, where your process coexists and competes with other critical workloads. Also, WAL-RUS isn’t rocket science. Postgres already exposes a bunch native constructs for WAL archival, making development fairly straightforward even in Rust. TL;DR: when to choose Rust or Go really depends on the workload and what you are going after.
- keynha 3mo agoThat coexistence is also why the GC-free rewrite helps more than the speed numbers suggest. An archiver is allocation-light until it hits a compression burst, then the Go heap can spike toward 2x live right when Postgres wants that memory. GOMEMLIMIT caps the spike but pays in GC CPU during exactly those bursts, so on a small instance, you are trading OOM risk for throughput. Rust removes that dial.