PgDog - PostgreSQL를 위한 초고속 트랜잭션 풀링 및 샤딩 관리자

3 days ago 6

  • 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 연동 예시 및 대시보드 포함

Read Entire Article