PgDog
PgDog: Мощное решение для горизонтального масштабирования PostgreSQL, пулер соединений и шардинг
PgDog — это инновационный инструмент для масштабирования PostgreSQL, объединяющий функции пулера соединений, балансировщика нагрузки и распределенной базы данных. Он позволяет обрабатывать более 2 миллионов запросов в секунду и управлять терабайтами данных, обеспечивая ACID-соответствие и простоту внедрения без изменения кода приложения. Узнайте, как PgDog помогает компаниям уровня Enterprise достигать 100% аптайма и эффективного шардинга.
2026-07-16
--K
PgDog Информация о продукте
PgDog: Ультимативное решение для горизонтального масштабирования PostgreSQL
В современном мире высоконагруженных приложений база данных часто становится «узким горлышком». Когда стандартных возможностей вертикального масштабирования перестает хватать, на помощь приходит PgDog. Это современный, многопоточный и асинхронный инструмент, предназначенный для того, чтобы масштабировать вашу инфраструктуру PostgreSQL в «n» раз. Будучи одновременно пулером соединений, балансировщиком нагрузки и полноценной распределенной базой данных, PgDog представляет собой единый исполняемый файл, который можно развернуть в любой среде.
Проект уже доказал свою эффективность в реальных условиях эксплуатации, обеспечивая обработку более 2 миллионов запросов в секунду и управление базами данных объемом более 20 ТБ. Недавно команда разработчиков привлекла $5,5 млн посевных инвестиций, что подтверждает огромный потенциал технологии в экосистеме Postgres.
Что такое PgDog?
PgDog — это высокопроизводительный прокси-сервер для PostgreSQL, работающий по принципу «drop-in». Это означает, что для его внедрения не требуется вносить изменения в код вашего приложения. Он выступает в роли интеллектуальной прослойки между вашим приложением (использующим драйверы вроде asyncpg, pgx, libpq или ruby-pg) и кластером баз данных.
Основные функции PgDog включают в себя:
- Connection Pooler (Пулер соединений): Эффективное управление тысячами клиентских сессий.
- Load Balancer (Балансировщик нагрузки): Распределение запросов на чтение и запись.
- Distributed Database (Шардинг): Горизонтальное распределение данных по нескольким узлам.
Основные возможности (Features)
PgDog объединяет в себе три критически важных инструмента, обеспечивая беспрецедентную гибкость и производительность.
1. Продвинутый пулер соединений
PgDog предлагает «настоящий транзакционный режим» (Real transaction mode), который позволяет разделять ограниченное количество соединений Postgres между 100 000+ клиентами. При этом сохраняется поддержка таких важных функций, как:
- Состояние сессии: Корректная работа команд
SET, консультативных блокировок (advisory locks) и механизмаLISTEN/NOTIFYбез привязки соединения (connection pinning). - Производительность: Обработка более 50 000 транзакций в секунду на один поток без ограничений на длину запроса.
- Prepared statements: Полная совместимость со всеми клиентскими драйверами с нулевыми накладными расходами.
2. Балансировщик нагрузки уровня базы данных
PgDog работает как Application Load Balancer (ALB), но специально для ваших баз данных. Он предоставляет единую точку входа (endpoint) для всех запросов и берет на себя следующие задачи:
- Health checks: Автоматическое исключение устаревших или вышедших из строя реплик из пула обслуживания.
- Обнаружение Failover: Перенаправление трафика на запись на новый Primary-узел без необходимости изменения конфигурации приложения.
- Разделение Read/Write: Автоматическая маршрутизация запросов
SELECTна реплики, а остальных — на основной узел с использованием встроенного SQL-парсера.
3. Распределенная база данных и шардинг
PgDog позволяет шардировать Postgres без изменения бизнес-логики. Прокси извлекает ключ шардирования напрямую из SQL-запросов и направляет их в нужный шард. Запросы без ключа выполняются параллельно на всех узлах.
- Быстрый OLTP: Масштабируемый координатор для работы с шардированными данными как с обычной базой.
- Поддержка OLAP: Встроенная поддержка
GROUP BY,COUNT(),AVG(),ORDER BY,MIN(),MAX()иCOPYв режиме scatter/gather. - Гибкое распределение: Возможность шардирования по любым колонкам и типам данных.
Распределенность, согласованность и реляционность
PgDog не жертвует скоростью ради согласованности. Он строго придерживается принципов ACID даже в распределенной среде:
- Cross-shard транзакции: Атомарная запись данных во все шарды с использованием механизма двухфазной фиксации (2PC).
- Реплицируемые таблицы: Возможность хранить копии справочных данных на всех шардах для выполнения быстрых локальных соединений (joins).
- Целочисленные первичные ключи: Поддержка монотонных 64-битных ключей, генерируемых прокси-сервером, что избавляет от необходимости переходить на UUID.
- Мутация ключей шардирования: Перемещение строк между шардами с помощью обычных команд
UPDATE.
Как использовать PgDog (How to Use)
PgDog спроектирован для максимально быстрого развертывания. Вы можете использовать Docker или Helm для установки в Kubernetes.
Установка через Helm
Для развертывания в кластере Kubernetes выполните следующие команды:
helm repo add pgdogdev https://helm.pgdog.dev
helm install pgdog pgdogdev/pgdog
Пример конфигурации шардинга
Конфигурация осуществляется через простой файл pgdog.toml. Ниже приведен пример настройки шардов и таблицы:
[[databases]]
name = "prod"
host = "10.0.0.1"
shard = 0
[[databases]]
name = "prod"
host = "10.0.0.2"
shard = 1
[[sharded_tables]]
database = "prod"
column = "tenant_id"
Сценарии использования (Use Case)
PgDog идеально подходит для компаний, сталкивающихся с ростом объемов данных и количества подключений:
- Масштабируемые SaaS-платформы: Используйте
tenant_idкак ключ шардирования для изоляции данных клиентов и горизонтального роста. - Микросервисная архитектура: Обеспечьте тысячи подов надежным пулом соединений, как это делает компания Modal.
- Геопространственные данные: Перенос сложной логики шардинга из приложения в конфиг прокси, как в кейсе Earth Genome (4 миллиарда строк).
- Замена RDS Proxy: Повышение масштабируемости соединений и устранение узких мест инфраструктуры AWS, что успешно реализовано в компании Ramp.
Отзывы экспертов
«Мы используем тысячи подов и не смогли бы так сильно масштабироваться без PgDog. Команда очень отзывчива на протяжении всего пути». — Sam R., Modal
«PgDog позволил нам перенести сложную логику геопространственного шардинга в простой конфиг, ускорив запросы. У нас почти 4 миллиарда строк в продакшене, и мы не видели ни одной проблемы». — Hutch Ingold, CTO Earth Genome
Часто задаваемые вопросы (FAQ)
В: Нужно ли менять код приложения для перехода на PgDog? О: Нет, PgDog является прозрачным прокси-сервером. Ваше приложение продолжает работать с ним как с обычным сервером PostgreSQL.
В: Поддерживает ли PgDog транзакции между разными шардами? О: Да, PgDog поддерживает атомарные cross-shard транзакции с использованием встроенного механизма двухфазной фиксации.
В: Насколько высока производительность PgDog? О: PgDog — это многопоточное асинхронное решение, способное обрабатывать более 50 000 транзакций в секунду на каждый поток и миллионы запросов в продакшн-средах.
В: Как PgDog обрабатывает сбои узлов? О: Встроенный балансировщик нагрузки проводит проверки состояния (health checks) и может автоматически переключать трафик на запись на новый Primary-узел при обнаружении failover.








