PgDog
Un outil de montée en charge horizontale PostgreSQL qui réunit pool de connexions, équilibrage de charge et partitionnement distribué dans un seul exécutable.
À propos de PgDog
PgDog est un outil de montée en charge horizontale pour PostgreSQL qui regroupe le pool de connexions, l’équilibrage de charge et les capacités de base de données distribuée dans un seul exécutable. En tant que pool de connexions, il permet à un petit nombre de connexions Postgres de servir plus de 100 000 clients sans altérer les fonctionnalités de Postgres ; selon l’éditeur, un seul thread peut traiter plus de 50 000 transactions par seconde. En tant qu’équilibreur de charge, il répartit les requêtes de lecture entre les réplicas, détecte le retard de réplication et le basculement du serveur primaire, et l’application n’a besoin que d’un seul point d’entrée. En mode distribué, PgDog extrait la clé de partition des requêtes et les route vers la partition correcte ; les requêtes sans clé de partition s’exécutent en parallèle sur toutes les bases de données. Les transactions entre partitions effectuent des écritures atomiques avec la validation en deux phases et déclenchent un rollback automatique en cas d’erreur ; selon l’éditeur, la conformité ACID est maintenue à grande échelle.
Idéal pour
Meilleurs cas d'utilisation
Prendre en charge de manière stable 100 000 connexions clientes avec un petit nombre de connexions à la base de données
Répartir le trafic de lecture entre plusieurs réplicas en lecture seule et détecter le retard de réplication ainsi que le basculement du serveur primaire
Router les requêtes vers la partition correspondante selon la clé de partition et exécuter en parallèle celles qui n’en ont pas
Exécuter des transactions entre partitions et effectuer automatiquement un rollback en cas d’erreur pour garantir l’atomicité
Fonctionnalités
Pool de connexions
Partager un petit nombre de connexions Postgres entre 100 000+ clients, sans altérer les fonctionnalités de Postgres.
Équilibrage de charge des lectures
Répartir les requêtes de lecture entre les réplicas, détecter le retard de réplication, les pannes matérielles et le basculement du serveur primaire ; toutes les requêtes passent par un seul point d’accès.
Partitionnement intelligent
Extraire directement la clé de partition de la requête et l’envoyer vers la partition correcte ; les requêtes sans clé de partition s’exécutent en parallèle sur toutes les bases de données.
Transactions entre partitions
Utiliser les transactions préparées natives de Postgres et la validation en deux phases pour écrire atomiquement sur toutes les partitions, avec rollback automatique en cas d’erreur.
Avantages
- L’éditeur indique qu’un seul thread peut traiter plus de 50 000 transactions par seconde et que l’outil utilise une architecture asynchrone multithread
- Quelques connexions suffisent pour servir plus de 100 000 clients, sans altérer les fonctionnalités de Postgres
- Toutes les requêtes passent par un seul point d’accès, avec détection automatique du retard de réplication, des pannes matérielles et du basculement du serveur primaire
- Les transactions entre partitions utilisent la validation en deux phases ; toute erreur déclenche un rollback automatique