PgDog
Ein Tool zur horizontalen PostgreSQL-Skalierung, das Verbindungspooling, Lastausgleich und verteiltes Sharding in einer ausführbaren Datei bündelt.
Über PgDog
PgDog ist ein Tool für die horizontale Skalierung von PostgreSQL, das Verbindungspooling, Lastausgleich und Funktionen verteilter Datenbanken in einer ausführbaren Datei bündelt. Als Verbindungspool kann es mit wenigen Postgres-Verbindungen mehr als 100.000 Clients bedienen, ohne Postgres-Funktionen zu beeinträchtigen; laut Anbieter kann ein einzelner Thread mehr als 50.000 Transaktionen pro Sekunde verarbeiten. Als Load Balancer verteilt es Leseabfragen auf Replikate, erkennt Replikationsverzögerungen und Primärwechsel, und die Anwendung benötigt nur einen Einstiegspunkt. Im verteilten Modus extrahiert PgDog den Shard-Schlüssel aus Abfragen und routet sie an den richtigen Shard; Abfragen ohne Shard-Schlüssel werden parallel auf allen Datenbanken ausgeführt. Shardübergreifende Transaktionen schreiben per Zwei-Phasen-Commit atomar und rollen bei Fehlern automatisch zurück; laut Anbieter bleibt die ACID-Konformität auch bei großem Maßstab erhalten.
Am besten geeignet
Beste Einsatzszenarien
Bei 100.000 Clientverbindungen mit wenigen Datenbankverbindungen stabil arbeiten
Leseverkehr auf mehrere schreibgeschützte Replikate verteilen und Replikationsverzögerungen sowie Primärwechsel erkennen
Abfragen anhand des Shard-Schlüssels an den passenden Shard routen und Abfragen ohne Shard-Schlüssel parallel ausführen
Shardübergreifende Transaktionen ausführen und bei Fehlern automatisch zurückrollen, um Atomizität sicherzustellen
Funktionen
Verbindungspooling
Eine kleine Anzahl von Postgres-Verbindungen auf 100.000+ Clients verteilen, ohne Postgres-Funktionen zu beeinträchtigen.
Lese-Lastverteilung
Leseabfragen auf Replikate verteilen, Replikationsverzögerungen, Hardwarefehler und Primärwechsel erkennen; alle Abfragen benötigen nur einen Endpunkt.
Intelligentes Sharding
Den Shard-Schlüssel direkt aus der Abfrage ermitteln und an den richtigen Shard senden; Abfragen ohne Shard-Schlüssel werden parallel auf allen Datenbanken ausgeführt.
Shardübergreifende Transaktionen
Native vorbereitete Postgres-Transaktionen und Zwei-Phasen-Commit verwenden, atomar in alle Shards schreiben und bei Fehlern automatisch zurückrollen.
Vorteile
- Der Anbieter gibt an, dass ein einzelner Thread mehr als 50.000 Transaktionen pro Sekunde verarbeiten kann und eine asynchrone Multi-Thread-Architektur verwendet
- Mit wenigen Verbindungen mehr als 100.000 Clients bedienen, ohne Postgres-Funktionen zu beeinträchtigen
- Alle Abfragen benötigen nur einen Endpunkt; Replikationsverzögerungen, Hardwarefehler und Primärwechsel werden automatisch erkannt
- Shardübergreifende Transaktionen verwenden Zwei-Phasen-Commit; jeder Fehler löst einen automatischen Rollback aus