Remix.run Logo
htrp 6 hours ago

>PgDog is a sharder, connection pooler and load balancer for PostgreSQL. Written in Rust, PgDog is fast, reliable and scales databases horizontally without requiring changes to application code.

Still trying to figure out how this works technically, is the performance gain really just re-write in rust?

levkk 6 hours ago | parent [-]

Not quite. The performance gain is to bring those features to Postgres!

Edit:

Performance gains are from having the ability to load balance reads (horizontal scaling for read queries) and scale out writes (with sharding). Once instance bottleneck in Postgres has many faces:

1. Behind schedule vacuums because of too many dead tuples (too many writes)

2. The WALWriter is single-threaded and IO-bound - Postgres can only do about 200-300MB/sec in writes per instance (real prod numbers on EC2 with NVMes and ZFS, basically best case scenario).

3. Bulkheading: single primary is a single point of failure. With 12 primaries, if one fails, 91% of your customers don't notice.

The list goes on. Rust is just a side effect. We love it because it's fast and correct - the perfect match for a database product.

hylaride 5 hours ago | parent | next [-]

So to oversimplify, is the idea to bring an AWS Aurora-style storage mechanism natively to Postgres?

levkk 4 hours ago | parent [-]

Yes, except it doesn't have any cross-dependencies on the same volume, so the uptime here should be higher.

jeremyjh 3 hours ago | parent [-]

Aurora has a completely different storage backend. PgDog is a front end proxy - each server in the cluster is still using standard Postgres right?

levkk 3 hours ago | parent [-]

Yup!

VeninVidiaVicii 6 hours ago | parent | prev [-]

Oh thanks for clearing that up.

levkk 6 hours ago | parent [-]

Sorry, out walking the dog (not a pun). I'll post more details in a few.