PgDog es un proxy de código abierto para escalar Postgres que incorpora, entre otras funciones, un agrupador de conexiones (connection pooler) distinto a los tradicionales como PgBouncer, RDS Proxy, Pgpool-II o Supavisor. Su premisa es evitar las llamadas “abstracciones con fugas”: al desplegar un pooler clásico, el desarrollador descubre que debe renunciar a determinadas funciones de Postgres o reescribir parte del código de producción para adaptarse.
El artículo detalla tres fricciones habituales. Primero, el control de sesión: los comandos SET, empleados para modificar parámetros como statement_timeout o para políticas de Row Level Security, dejan de ser seguros porque el estado se filtra entre clientes que comparten conexión. PgDog incorpora un parser SQL que detecta esos SET, almacena el estado por cliente y lo reaplica antes de cada consulta, usando pipelining cuando hay varias variables. Segundo, LISTEN/NOTIFY: el mecanismo de publicación/suscripción interno de Postgres, que en transaction mode quedaba inutilizado con otros poolers, aquí se preserva gracias a Tokio broadcast channels y a una conexión dedicada a Postgres para distribuir los mensajes entre procesos.
Tercero, el multihilo: construido sobre Tokio (Rust), un único proceso PgDog reparte clientes entre varios workers asíncronos, lo que evita fragmentar los pools entre procesos y mejora la utilización de conexiones. PgDog lleva más de un año en producción gestionando 2 millones de consultas por segundo, se distribuye bajo licencia libre y puede desplegarse en cualquier entorno.
