Об этом проекте
PgDog — это прокси-сервер PostgreSQL с открытым исходным кодом, написанный на Rust, предназначенный для масштабирования PostgreSQL-инфраструктуры за счёт пулинга соединений, балансировки нагрузки между репликами и горизонтального шардирования баз данных. Он работает как приложения-прокси (уровень 7 модели OSI), понимающий протокол PostgreSQL, что позволяет интеллектуально маршрутизировать запросы на основе намерений read/write, ключей шардирования или контекста схемы.
Ключевые возможности:
- Пуллинг транзакций и сессий с расширенными механизмами восстановления, включая автоматический откат брошенных транзакций.
- Балансировка нагрузки между мастером и репликами с использованием стратегий round-robin, случайного выбора или наименьшей активности, с проверкой состояния в реальном времени и поддержкой failover.
- Шардирование через партицирующие функции (HASH, LIST, RANGE) или маршрутизацию на уровне схем, поддержка кросс-шардовых запросов с сбором результатов в памяти.
- Генерация уникальных ID без последовательностей, обновление ключей шардирования, многострочные вставки и двухфазная фиксация для атомарных кросс-шардовых записей.
- Возможность перешардирования с использованием логической репликации, обеспечивающая перераспределение данных без простоя.
- Гибкая аутентификация: по паролю, через AWS RDS IAM, Azure Workload Identity и HashiCorp Vault (динамические/статические роли).
- Мониторинг через OpenMetrics, OTEL или административную базу данных в стиле PgBouncer.
Варианты развертывания включают Docker Compose, Helm-чарты для Kubernetes (включая EKS) и Terraform-модули для AWS ECS. Конфигурация выполняется через TOML-файлы (pgdog.toml для баз данных и настроек, users.toml для учётных данных). Инструмент оптимизирован для работы на стандартном оборудовании и включает встроенные средства синхронизации схем и данных при перешардировании.
Документация и поддержка сообщества доступны на официальном сайте и в Discord. Возможности enterprise-версии описаны отдельно.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.