
PgDog는 PostgreSQL을 위한 오픈 소스 커넥션 풀러, 로드 밸런서 및 샤딩 프록시입니다. Postgres와 호환되며, 빠르고 안전하며, 데이터베이스 엔지니어 커뮤니티가 공개적으로 개발하고 있습니다.
Loading comments…
성과
프로젝트 정보
제품 키워드
PgDog는 PostgreSQL을 위한 오픈 소스 커넥션 풀러, 로드 밸런서, 샤딩 프록시입니다. 여러 데이터베이스 인프라 도구를 대체하는 단일 실행 파일로, 애플리케이션 코드를 변경하지 않고도 Postgres를 수평 확장할 수 있게 해줍니다. 데이터베이스 엔지니어 커뮤니티가 공개적으로 개발한 PgDog는 수천 개의 연결 풀링부터 샤딩된 데이터베이스 간 쿼리 분산까지 모든 것을 처리합니다.
PgDog는 세션 상태, 어드바이저리 락, LISTEN/NOTIFY를 손상시키지 않으면서 100,000개 이상의 클라이언트 간에 소규모 Postgres 연결 풀을 공유합니다. 멀티스레드 및 비동기 방식으로, 쿼리 길이나 연결 제한 없이 스레드당 초당 50,000개 이상의 트랜잭션을 처리합니다.
로드 밸런서는 복제본 간 읽기를 분산하고, 복제 지연 및 하드웨어 오류를 감지하며, 장애 조치 중에 자동으로 새 프라이머리로 쓰기 트래픽을 이동시킵니다. 내장된 Postgres SQL 파서는 클라이언트 측 변경 없이 읽기/쓰기 분할을 가능하게 합니다.
PgDog는 쿼리에서 직접 샤딩 키를 추출하여 올바른 샤드로 라우팅합니다. 샤딩 키가 없는 쿼리는 모든 데이터베이스에서 병렬로 실행되며, GROUP BY, COUNT, AVG, ORDER BY, MIN, MAX 및 COPY 작업을 기본 지원합니다.
크로스 샤드 트랜잭션은 네이티브 Postgres 준비 트랜잭션과 2단계 커밋을 사용하여 샤드 간 원자적 쓰기를 보장합니다. 복제된 테이블은 빠른 샤드 로컬 조인을 가능하게 하고, 정수 기본 키는 프록시에서 자동으로 생성됩니다. DDL은 모든 샤드에 자동으로 적용되므로 Alembic 및 ActiveRecord와 같은 마이그레이션 도구를 수정 없이 사용할 수 있습니다.
"PgDog는 속도를 위해 일관성을 희생하지 않습니다. 대규모에서도 ACID 준수를 유지합니다."
대부분의 샤딩 솔루션은 성능과 데이터 무결성 사이에서 선택을 강요합니다. PgDog는 Postgres 자체의 2단계 커밋을 사용하여 트랜잭션이 여러 샤드에 걸쳐 있더라도 완전한 ACID 보장을 유지합니다. 즉, 단일 Postgres 인스턴스에서 기대하는 것과 동일한 트랜잭션 의미 체계를 유지하면서 수평 확장할 수 있습니다.
프로덕션에서 Postgres를 실행 중이고 더 많은 연결을 처리하거나, 읽기 트래픽을 분산하거나, 애플리케이션을 다시 작성하지 않고 데이터베이스를 샤딩해야 하는 경우입니다. PgDog는 별도의 커넥션 풀러, 로드 밸런서, 샤딩 미들웨어를 대체하는 단일 오픈 소스 프록시를 원하면서도 기존 Postgres 도구 및 클라이언트 드라이버와의 호환성을 유지하려는 경우 특히 유용합니다.
제작자
kettle_dev
Loading comments…
고려해볼 만한 다른 도구