PgDog está financiado y llegará pronto a una base de datos cerca de ti

Qué hace PgDog

  • Actúa como un proxy de PostgreSQL que proporciona:
    • Agrupación de conexiones
    • Balanceo de carga de lecturas
    • Sharding / enrutamiento de consultas entre múltiples instancias de Postgres
  • Se sitúa delante de servidores Postgres sin modificar; no es una extensión ni un motor de almacenamiento personalizado.
  • Busca ofrecer una experiencia al estilo Aurora/Vitess, pero puramente en la capa de proxy.

Rendimiento y arquitectura

  • Escrito en Rust por seguridad y velocidad, pero las principales ganancias provienen de:
    • Desplazar el coste de las conexiones fuera de los procesos de Postgres
    • Distribuir las lecturas entre réplicas
    • Distribuir las escrituras mediante sharding para evitar cuellos de botella de WAL / vacuum en un solo nodo.
  • Los números de producción mencionados incluyen ~2M QPS; el uso de memoria está determinado en gran medida por AST de consultas almacenados en caché.
  • Dos enfoques para conjuntos de resultados grandes que pueden provocar OOM en el proxy: fallar y añadir RAM vs paginar a disco; ambos se reconocen como compromisos.

Modelo de sharding y limitaciones

  • Modelo actual: shard_number = hash(key) % num_shards; los críticos señalan que esto hace que el resharing sea costoso frente a esquemas de shards virtuales o basados en rangos.
  • Las transacciones entre shards se admiten mediante 2PC, pero:
    • Son costosas y frágiles ante fallos.
    • Se recomiendan solo para tablas de “metadatos” de bajo throughput.
  • Las lecturas pueden ser eventualmente consistentes; el ACID fuerte entre shards no es “más rápido que una sola máquina.”
  • Existe cierto enrutamiento automático de shards, pero no está bien documentado; a menudo hay que dirigir explícitamente a los shards.

Despliegue y configuración

  • Configuración basada en archivos TOML; varios usuarios informan fricción en entornos Kubernetes altamente dinámicos y multiinquilino.
  • Los paliativos incluyen controladores/operators personalizados que regeneran la configuración y desencadenan recargas coordinadas.
  • La edición Enterprise (de pago) añadirá:
    • Un control plane para la gestión de múltiples nodos / despliegue que “simplemente funciona”.
    • Funciones de QoS para bloquear consultas malas.
    • Soporte respaldado por SLA.
  • Se promete que la funcionalidad principal de sharding y escalado seguirá siendo open source; la infraestructura/UX en torno a ello es comercial.

Alta disponibilidad y actualizaciones

  • PgDog proporciona balanceo de carga con comprobaciones de salud y enrutamiento de failover, pero:
    • No promueve réplicas; espera herramientas externas de HA (Patroni, RDS, etc.).
  • No resuelve directamente las grandes actualizaciones de versión de Postgres; la discusión apunta a la replicación lógica y a cambios de pooler como la norma actual.

Comparaciones con otros sistemas

  • vs PgBouncer/Pgpool-II: más funciones (sharding, pooling más inteligente, manejo de LISTEN/NOTIFY, ajustes por conexión), pero más complejidad.
  • vs Citus: Citus tiene un motor OLAP/consulta más rico; PgDog se centra en OLTP, concurrencia basada en proxy y escalado independiente del coordinador.
  • vs Mongo/Dynamo/Cockroach/Yugabyte:
    • El hilo señala que Postgres, en esencia, sigue siendo de un solo escritor por fila.
    • Algunos sostienen que los sistemas KV/NoSQL escalan las escrituras de forma más natural; otros prefieren Postgres + sharding por su ecosistema.

Recepción y preocupaciones

  • Muchos usuarios informan experiencias positivas en producción y migraciones más fluidas frente a PgBouncer.
  • Otros cuestionan:
    • La QA y el riesgo operativo de un equipo central pequeño.
    • La postura de seguridad de la cadena de suministro (tranquilizados por las prácticas de revisión de los mantenedores).
    • Afirmaciones de marketing como “no usarías nada más”, vistas por algunos como exageradas.
  • El tono general: entusiasmo por opciones más serias para escalar Postgres, atenuado por el realismo sobre la complejidad del sharding y el hecho de que la HA/las actualizaciones siguen requiriendo un diseño cuidadoso.