À propos du projet

PgDog est un proxy PostgreSQL open-source écrit en Rust, conçu pour faire évoluer les déploiements PostgreSQL grâce au pooling de connexions, à l'équilibrage de charge entre réplicas et au sharding horizontal des bases de données. Il fonctionne comme un proxy de couche application (OSI niveau 7) qui comprend le protocole PostgreSQL, permettant un routage intelligent des requêtes selon l'intention lecture/écriture, les clés de sharding ou le contexte de schéma. Les fonctionnalités clés incluent : - Pooling de transactions et de sessions avec des mécanismes de récupération avancés, incluant le rollback automatique des transactions abandonnées. - Équilibrage de charge entre nœuds primaires et réplicas utilisant les stratégies round-robin, aléatoire ou least-active, avec des contrôles de santé en temps réel et le support du failover. - Sharding via des fonctions de partition (HASH, LIST, RANGE) ou routage basé sur le schéma, prenant en charge les requêtes inter-shards avec assemblage des résultats en mémoire. - Support de la génération d'identifiants uniques sans séquences, mises à jour de clés de shard, insertions multi-tuples et commit à deux phases pour les écritures atomiques inter-shards. - Capacités de re-sharding utilisant la réplication logique, permettant une redistribution des données sans interruption. - Flexibilité d'authentification : par mot de passe, AWS RDS IAM, Azure Workload Identity et HashiCorp Vault (rôles dynamiques/statiques). - Monitoring via OpenMetrics, OTEL ou base de données d'administration de style PgBouncer. Les options de déploiement incluent Docker Compose, charts Helm pour Kubernetes (y compris EKS) et modules Terraform pour AWS ECS. La configuration utilise des fichiers TOML (`pgdog.toml` pour les bases de données et paramètres, `users.toml` pour les identifiants). L'outil est optimisé pour les performances sur du matériel standard et inclut des outils intégrés pour la synchronisation des schémas et des données lors du re-sharding. La documentation et le support communautaire sont disponibles via le site officiel et Discord. Les fonctionnalités de l'édition entreprise sont documentées séparément.