Lanzamiento de Stateless Postgres Query Router 1.0.0
El equipo de SPQR se complace en lanzar la primera versión lista para producción de SPQR (Stateless Postgres Query Router).
SPQR es un router de consultas para el escalado horizontal de PostgreSQL vía sharding. Se ha diseñado para que resulte tan ligero como un pool de conexiones, reduciendo al mínimo necesario la información del esquema de datos.
Principales características
- Sharding. Siempre que sea posible, el router determina un shard a partir de la primera sentencia de una transacción y mantiene al cliente vinculado a ese shard hasta que la transacción finalice. No obstante, es posible especificar explícitamente un shard o una clave de sharding en una solicitud de comentarios.
- Pool de transacciones y sesiones. Igual que en su pool de conexiones favorito (Odyssey o PgBouncer).
- Enrutadores múltiples para tolerancia a fallos. El router almacena las reglas de sharding únicamente a efectos de caché. La información sobre toda la instalación se almacena dentro del servicio QDB, por lo que el número de routers que se ejecutan simultáneamente es ilimitado.
- Rebalanceo de shards. La migración de datos entre shards tiene como objetivo equilibrar proporcionalmente la carga de trabajo entre los mismos. La idea principal es minimizar cualquier impacto de bloqueo durante estas migraciones, lo cual se consigue reduciendo el tamaño de los rangos de datos transferidos..
- Múltiples servidores y failover. En la configuración del router, es posible especificar varios servidores para un shard. De este modo, el router distribuirá las consultas de sólo lectura entre las réplicas. Además del enrutamiento automático, también existe la posibilidad de definir explícitamente el destino de una consulta específica utilizando el parámetro target-session-attr dentro de la misma.
- Sobrecarga mínima en la ejecución de consultas. Consulten las pruebas comparativas aquí y aquí.
Estado del proyecto
El conjunto de características básicas de SPQR se utiliza en producción. Sin embargo, el rebalanceo automático de shards todavía no está listo para la producción. Además, aunque SPQR admite algunas consultas entre shards, estas presentan instantáneas inconsistentes y no están bloqueadas por 2PC lo que impide una auténtica atomicidad entre shards.
Actualmente, el proyecto es mantenido por Yandex Cloud. Sin embargo, estamos buscando nuevos arquitectos y colaboradores para ampliar nuestros puntos de vista técnicos. Como siempre, se agradece cualquier comentario.
Enlaces
SPQR es desarrollado y distribuido por https://github.com/pg-sharding/spqr.
Las versiones publicadas se encuentran en la página de versiones.