PgDog
PostgreSQL를 위한 초고속 트랜잭션 풀링 및 샤딩 관리자
About
- Rust + Tokio로 작성된 PostgreSQL 트랜잭션 풀링 + 샤딩 + 로드밸런싱 도구, 수백 개의 데이터베이스와 수십만 개의 연결을 효율적으로 관리
- PgBouncer처럼 동작하면서도, 쿼리 분석과 복제까지 지원하는 PostgreSQL 전문 애플리케이션 계층(OSI L7) 프록시
- Kubernetes 및 Docker로 쉽게 배포 가능하며, 클러스터 구성, 로드밸런싱, 복제, 다중 샤드 관리까지 단일 구성으로 처리 가능
- 자체적인 논리적 복제 관리 기능과 함께, 기존 PostgreSQL 클러스터를 중단 없이 샤딩 확장할 수 있음
주요 기능
- 로드 밸런싱
- OSI Layer 7에서 PostgreSQL 쿼리 기반으로 트래픽 분산
- SELECT는 복제본으로, INSERT/UPDATE 등은 기본 노드로 자동 라우팅
- 전략: round robin, random, least active connections 등 지원
- 장애 발생 시 실시간 헬스체크 및 자동 Failover
- PgBouncer와 유사하게, 세션/트랜잭션 단위 풀링 지원
- 수십만 클라이언트를 몇 개의 PostgreSQL 연결로 처리 가능
- SQL 분석을 통해 shard key를 추출하고, 해당 샤드에 쿼리 자동 전달
- 교차 샤드 쿼리는 결과를 메모리에서 조합해 사용자에게 단일 응답 제공
- COPY 명령도 샤드 단위로 분할 처리
- 논리적 복제 지원: 무중단 상태에서 기존 DB를 샤딩 확장 가능
- PgBouncer 스타일의 .toml 설정 사용, 재시작 없이 설정 변경 가능
- 사용자별 인증, 데이터베이스별 연결, 샤드 정보까지 설정 가능
- 표준 PgBouncer 관리 포트 + OpenMetrics 지원
- Datadog 연동 예시 및 대시보드 포함
See also
Favorite site
- Github - pgdogdev/pgdog
- PgDog - PostgreSQL를 위한 초고속 트랜잭션 풀링 및 샤딩 관리자 | GeekNews
- PgDog - 별도 확장없이 Postgres를 샤딩할수 있는 도구 | GeekNews
- Protobuf를 제거하고 Rust↔C 직접 바인딩으로 성능 5배 개선 | GeekNews (Protobuf)
- [원문] Replacing Protobuf with Rust to go 5 times faster | PgDog
- PostgreSQL 확장 프록시인 PgDog가 SQL 파싱 성능을 높이기 위해 Protobuf 직렬화 대신 Rust 직접 바인딩을 도입
- 기존 Protobuf 기반 구조를 C–Rust 직접 변환(bindgen + Claude 생성 래퍼) 으로 교체해 파싱 5.45배, 디파싱 9.64배 속도 향상
- 성능 병목은 pg_query_parse_protobuf 함수에서 발견되었으며, 캐싱 시도 후에도 근본적 개선을 위해 구조 변경 수행
- Claude LLM을 활용해 6,000줄의 Rust–C 변환 코드를 자동 생성하고, parse, deparse, fingerprint, scan 등 주요 함수에 적용
- 이 최적화로 PgDog의 CPU 사용량과 지연시간이 감소, PostgreSQL 수평 확장 프록시로서의 효율성이 크게 향상됨