PgDog
PgDog: Skalowalne rozwiązanie dla PostgreSQL – Connection Pooler, Load Balancer i Sharding
PgDog to zaawansowany proxy dla PostgreSQL, oferujący connection pooling, load balancing i sharding. Pozwala na obsługę milionów zapytań i terabajtów danych bez zmian w aplikacji.
2026-07-16
--K
PgDog Informacje o produkcie
PgDog: Kompletne Rozwiązanie do Horyzontalnego Skalowania PostgreSQL
W dzisiejszym świecie baz danych, zarządzanie rosnącym ruchem i ogromnymi zbiorami danych wymaga narzędzi, które są nie tylko wydajne, ale i elastyczne. PgDog to nowoczesne rozwiązanie typu open source, które pozwala na horyzontalne skalowanie bazy danych PostgreSQL. Jako zaawansowane narzędzie proxy, PgDog łączy w sobie funkcjonalność connection poolera, load balancera oraz silnika do shardingu (rozpraszania danych), umożliwiając programistom i administratorom skalowanie infrastruktury Postgres bez konieczności modyfikowania kodu aplikacji.
Projekt PgDog zyskał zaufanie inwestorów, pozyskując 5,5 miliona dolarów w rundzie finansowania seed, co pozwoliło na dalszy rozwój tej innowacyjnej technologii. Obecnie PgDog z powodzeniem obsługuje w środowiskach produkcyjnych ponad 20 TB danych oraz natężenie ruchu przekraczające 2 miliony zapytań na sekundę.
Czym jest PgDog?
PgDog to pojedynczy plik wykonywalny (executable), który można wdrożyć w dowolnym środowisku. Działa on jako pośrednik (proxy) między Twoją aplikacją a klastrem baz danych PostgreSQL. Jego głównym zadaniem jest eliminacja wąskich gardeł związanych z liczbą połączeń oraz umożliwienie rozproszenia danych na wiele serwerów w celu zwiększenia wydajności.
PgDog jest rozwiązaniem typu drop-in proxy, co oznacza, że jego wdrożenie nie wymaga zmian w aplikacji. Współpracuje z popularnymi bibliotekami i sterownikami takimi jak asyncpg, pgx, libpq czy ruby-pg. Dzięki temu możesz cieszyć się zaletami rozproszonej bazy danych, korzystając z dotychczasowych narzędzi.
Kluczowe Funkcje PgDog
PgDog to unikalne połączenie trzech potężnych narzędzi w jednej architekturze, co czyni go kompleksowym rozwiązaniem dla nowoczesnych systemów.
01. Connection Pooler (Zarządzanie połączeniami)
PgDog oferuje zaawansowany tryb transakcyjny, który pozwala na współdzielenie zaledwie kilku połączeń PostgreSQL między ponad 100 000 klientów. Co ważne, dzieje się to bez naruszania natywnych funkcji Postgresa.
- Zarządzanie stanem sesji: PgDog obsługuje polecenia
SET, blokady doradcze (advisory locks) oraz mechanizmyLISTEN/NOTIFYbez konieczności tzw. connection pinningu. - Wydajność asynchroniczna: Narzędzie jest wielowątkowe i w pełni asynchroniczne, co pozwala na obsługę ponad 50 000 transakcji na sekundę na każdy wątek, bez limitów długości zapytań.
- Kompatybilność z Prepared Statements: PgDog w pełni obsługuje zapytania preparowane we wszystkich sterownikach klienckich, nie generując przy tym żadnych dodatkowych narzutów wydajnościowych.
02. Load Balancer (Równoważenie obciążenia)
Można o nim myśleć jak o ALB (Application Load Balancer) dla Twojej bazy danych. PgDog inteligentnie zarządza ruchem, aby optymalnie wykorzystać dostępne repliki.
- Health Checks: System monitoruje stan replik i automatycznie blokuje te, które są nieaktualne (mają opóźnienia) lub uszkodzone.
- Wykrywanie Failover: W przypadku awarii głównego węzła (primary), PgDog automatycznie przekierowuje ruch zapisu do nowego węzła głównego bez konieczności zmiany konfiguracji po stronie aplikacji.
- Rozdzielanie odczytu i zapisu (Read/Write split): Dzięki wewnętrznemu parserowi SQL, PgDog automatycznie kieruje zapytania
SELECTdo replik, a pozostałe operacje do węzła głównego.
03. Rozproszona baza danych (Sharding)
PgDog pozwala na sharding PostgreSQL bez zmian w aplikacji. System samodzielnie identyfikuje klucz shardingu bezpośrednio z zapytań SQL i kieruje je do odpowiedniego fragmentu bazy danych.
- Szybkie operacje OLTP: Możesz używać shardingowanych baz danych tak samo jak standardowego Postgresa, korzystając z horyzontalnie skalowalnego koordynatora.
- Wydajne operacje OLAP: Funkcje takie jak
GROUP BY,COUNT(),AVG(),ORDER BY,MIN(),MAX()orazCOPYsą obsługiwane natywnie w architekturze scatter/gather. - Elastyczność: Możliwość shardingu po dowolnej kolumnie, co zapewnia pełną kontrolę nad dystrybucją danych.
Zaawansowane możliwości i spójność danych
Pomimo rozproszonej architektury, PgDog nie rezygnuje z wydajności na rzecz spójności. System utrzymuje pełną zgodność z zasadami ACID nawet przy dużej skali.
- Transakcje między-shardowe: PgDog umożliwia atomowy zapis danych do wszystkich shardów jednocześnie. Każdy błąd wyzwala automatyczny rollback przy użyciu natywnych transakcji preparowanych Postgresa (two-phase commit).
- Tabele replikowane: Nie każda tabela musi być shardingowana. Możesz przechowywać te same dane na wszystkich shardach, co pozwala na szybkie złączenia (joins) lokalne dla danego shardu.
- Automatyczne klucze główne: Wsparcie dla dużych liczb całkowitych jako kluczy głównych (big integer primary keys), generowanych automatycznie w proxy.
- Mutacja klucza shardingu: Możliwość przenoszenia wierszy między shardami za pomocą zwykłych instrukcji
UPDATE. - Spójny schemat (DDL): Zmiany w schemacie bazy danych (DDL) są automatycznie propagowane na wszystkie shardy. Narzędzia takie jak Alembic czy ActiveRecord działają bez dodatkowej konfiguracji.
Jak zainstalować PgDog (Instrukcja obsługi)
Instalacja PgDog jest szybka i prosta dzięki wsparciu dla Helm i Docker. Poniżej przedstawiamy kroki instalacji w środowisku Kubernetes:
-
Dodaj repozytorium Helm:
helm repo add pgdogdev https://helm.pgdog.dev -
Zainstaluj PgDog:
helm install pgdog pgdogdev/pgdog
Możesz również skorzystać z obrazów Docker lub bezpośrednio z pliku wykonywalnego, konfigurując go za pomocą pliku pgdog.toml.
Przypadki użycia (Use Cases)
PgDog sprawdza się w najbardziej wymagających scenariuszach:
- Skalowanie połączeń w aplikacjach chmurowych: Firmy takie jak Ramp wykorzystują PgDog do znacznego zwiększenia skalowalności połączeń, co pozwoliło im wyeliminować wąskie gardła systemu obecne w rozwiązaniach typu RDS Proxy.
- Złożony sharding danych przestrzennych: Earth Genome wdrożyło PgDog, aby przenieść skomplikowaną logikę shardingu geoprzestrzennego z warstwy aplikacji do konfiguracji proxy, co przyspieszyło zapytania przy obsłudze 4 miliardów wierszy.
- Systemy o wysokiej dostępności: Tripstack zanotował 100% czasu bezawaryjnego działania (uptime) od momentu wdrożenia PgDog, obsługując większą ilość danych niż kiedykolwiek wcześniej.
- Wielkie klastry kontenerowe: Firmy takie jak Modal, uruchamiające tysiące podów, polegają na PgDog w celu efektywnego skalowania infrastruktury bazodanowej.
FAQ – Najczęściej zadawane pytania
Czy PgDog wymaga zmian w kodzie mojej aplikacji? Nie, PgDog to proxy typu drop-in. Twoja aplikacja łączy się z PgDog tak, jakby łączyła się bezpośrednio z bazą PostgreSQL.
Czy PgDog wspiera transakcje ACID? Tak, PgDog zachowuje pełną zgodność z ACID, w tym obsługuje transakcje między-shardowe przy użyciu mechanizmu dwufazowego zatwierdzania (two-phase commit).
Jakie operacje analityczne są wspierane w trybie sharding?
PgDog wspiera większość standardowych operacji SQL, takich jak GROUP BY, COUNT(), ORDER BY, AVG(), MIN(), MAX() oraz COPY w sposób rozproszony.
Czy mogę używać PgDog z Dockerem? Tak, PgDog może być uruchomiony jako kontener Docker lub wdrożony w klastrze Kubernetes za pomocą Helm.
Czy PgDog obsługuje automatyczny failover? Tak, PgDog potrafi wykryć awarię głównego węzła i automatycznie przekierować ruch do nowej repliki głównej bez ręcznej interwencji w pliki konfiguracyjne.








