# postgresml/pgcat

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/postgresml-pgcat).**

3,966 stars · 265 forks · Rust · MIT

## Links

- GitHub: https://github.com/postgresml/pgcat
- awesome-repositories: https://awesome-repositories.com/repository/postgresml-pgcat.md

## Topics

`pooler` `pooling` `postgresql` `rust`

## Description

Pgcat is a PostgreSQL middleware solution providing connection pooling, sharding, load balancing, and failover management. It functions as a proxy that optimizes resource usage and scalability by managing database sessions and distributing queries across multiple instances.

The system distinguishes itself through traffic mirroring, which duplicates live production queries to test databases for validation. It also implements a sharding proxy to distribute data and queries across multiple database instances based on sharding keys.

The project covers high availability through automated failover and server health monitoring. It includes traffic routing to separate read and write operations, transport layer security for encrypted communications, and a virtual administrative database for system management and performance metrics export.

The service is packaged as a Docker container to ensure consistent deployment across different environments.

## Tags

### Data & Databases

- [PostgreSQL Pool Managers](https://awesome-repositories.com/f/data-databases/connection-pools/postgresql-pool-managers.md) — Manages a pool of database connections specifically tailored for the PostgreSQL wire protocol to optimize resource usage.
- [SQL Comment Based Routing](https://awesome-repositories.com/f/data-databases/distributed-sharding-architectures/uid-hash-sharding-strategies/sql-comment-based-routing.md) — Routes queries to specific data partitions using sharding keys extracted from SQL comments or hashing functions.
- [Query Routing](https://awesome-repositories.com/f/data-databases/distributed-sql-databases/query-routing.md) — Directs queries to specific data partitions using automatic key detection, SQL comments, or custom syntax. ([source](https://github.com/postgresml/pgcat#readme))
- [Horizontal Database Scaling](https://awesome-repositories.com/f/data-databases/horizontal-database-scaling.md) — Distributes data across multiple database instances to scale storage and throughput through horizontal expansion. ([source](https://github.com/postgresml/pgcat/blob/main/postrm))
- [PostgreSQL Database Sharding](https://awesome-repositories.com/f/data-databases/postgresql-database-sharding.md) — Splits data across multiple PostgreSQL servers to scale storage and processing by routing queries via sharding keys.
- [PostgreSQL Load Balancers](https://awesome-repositories.com/f/data-databases/postgresql-load-balancers.md) — Provides a protocol-aware proxy to distribute read queries across multiple PostgreSQL backend instances.
- [Traffic Routing](https://awesome-repositories.com/f/data-databases/read-replicas/traffic-routing.md) — Analyzes incoming SQL to automatically direct read-only requests to replicas and write operations to the primary server.
- [Replica Load Balancers](https://awesome-repositories.com/f/data-databases/replica-load-balancers.md) — Distributes incoming queries across a cluster of available replicas to prevent single-instance bottlenecks. ([source](https://github.com/postgresml/pgcat/blob/main/Cargo.toml))
- [Read Load Balancers](https://awesome-repositories.com/f/data-databases/replica-load-balancers/read-load-balancers.md) — Distributes read requests across multiple replicas using random or least-connection algorithms. ([source](https://github.com/postgresml/pgcat#readme))
- [Sharding Proxies](https://awesome-repositories.com/f/data-databases/sharding-proxies.md) — Acts as a routing layer that distributes queries across multiple database instances based on sharding keys.
- [Database Query Mirroring](https://awesome-repositories.com/f/data-databases/database-query-mirroring.md) — Duplicates incoming production queries to test databases to validate new versions or warm up caches.

### Networking & Communication

- [Database Connection Pooling](https://awesome-repositories.com/f/networking-communication/database-connection-pooling.md) — Manages a pool of reusable backend sessions to reduce the overhead of establishing new database connections.

### DevOps & Infrastructure

- [Database Failover Routers](https://awesome-repositories.com/f/devops-infrastructure/database-failover-routers.md) — Redirects traffic to a healthy standby instance when a primary node becomes unavailable to maintain uptime. ([source](https://github.com/postgresml/pgcat/blob/main/postrm))
- [Database High Availability](https://awesome-repositories.com/f/devops-infrastructure/high-availability-clustering/database-high-availability.md) — Coordinates PostgreSQL nodes to ensure continuous service availability through automated failover and health monitoring.
- [Database Failover Management](https://awesome-repositories.com/f/devops-infrastructure/high-availability-infrastructure/database-failover-management.md) — Monitors backend server health and automatically reroutes traffic to standby instances during primary node failure.
- [Health-Based Traffic Rerouting](https://awesome-repositories.com/f/devops-infrastructure/high-availability-services/health-based-traffic-rerouting.md) — Monitors backend server availability via periodic probes and automatically reroutes traffic away from unresponsive nodes.

### System Administration & Monitoring

- [Upstream Health Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/health-monitoring/instance-health-monitors/microservices-health-monitoring/upstream-health-monitoring.md) — Performs periodic health checks on backend servers and temporarily blocks unresponsive nodes to ensure stability. ([source](https://github.com/postgresml/pgcat/blob/main/CONFIG.md))
- [Administrative Command Engines](https://awesome-repositories.com/f/system-administration-monitoring/command-execution-engines/administrative-command-engines.md) — Executes system management tasks and inspects pool status through a dedicated administrative interface. ([source](https://github.com/postgresml/pgcat/blob/main/CONFIG.md))
- [Virtual Administrative Databases](https://awesome-repositories.com/f/system-administration-monitoring/virtual-administrative-databases.md) — Provides a dedicated virtual administrative database for executing system commands and inspecting pool health.

### Security & Cryptography

- [Database Connection Encryption](https://awesome-repositories.com/f/security-cryptography/database-connection-encryption.md) — Encrypts communication between clients, the proxy, and database servers using TLS certificates. ([source](https://github.com/postgresml/pgcat#readme))
- [Database Authentication](https://awesome-repositories.com/f/security-cryptography/remote-access-security/database-authentication.md) — Validates client identities using secure hashing or external query passthrough to manage database access. ([source](https://github.com/postgresml/pgcat#readme))
- [Transport Layer Security](https://awesome-repositories.com/f/security-cryptography/transport-layer-security.md) — Secures data in transit between clients and backend servers using certificates and private keys.
