Multigres - Postgres의 수평 확장을 위한 오픈소스
1 hour ago
1
- MySQL을 여러 서버로 확장하는 Vitess의 접근을 Postgres에 적용해, 샤딩과 연결 풀링, 복제와 장애 전환을 함께 관리하려는 프로젝트
- 별도의 호환 데이터베이스로 바꾸는 대신 실제 Postgres 앞에 쿼리 라우팅과 운영 계층을 두는 구조
- 애플리케이션은 표준 Postgres 프로토콜로 Multigateway에 접속하며, 게이트웨이가 쿼리를 전달하고 읽기 요청을 복제본으로 분산할 수 있음
- 각 Postgres 인스턴스의 Multipooler가 연결을 재사용하고 세션과 트랜잭션 상태를 관리해, 많은 클라이언트가 접속해도 데이터베이스 연결 수를 줄임
- Multiorch가 복제 상태와 장애를 감시하고 새 프라이머리를 선출하며, 백업과 복원, 클러스터 초기화도 조율
- Kubernetes Operator로 여러 가용 영역의 클러스터를 YAML에 선언해 배포하고, 복제본 추가와 설정 변경을 관리할 수 있음
- 샤딩 설계는 관련 테이블과 행을 같은 샤드에 모아 조인과 트랜잭션이 가능한 한 한곳에서 처리되도록 하는 방식
- 온라인 데이터 재분배, 테이블 이동, 버전 이전과 샤드 간 트랜잭션 등은 개발 계획에 포함돼 있으며, 완성된 기능 목록과 구분할 필요가 있음
- Postgres 자체와 확장 기능의 테스트를 이용해 호환성을 검증하지만, 일부 동작 차이와 미지원 기능이 있어 완전한 대체재는 아님
- Go 기반이며 소스 빌드 후 multigres cluster init과 multigres cluster start로 로컬 실행 가능. 현재 로컬 실행에는 PostgreSQL 17.x, pgBackRest 2.57 이상과 etcd가 필요함
- 2025년 6월 프로젝트를 발표하고 2026년 6월 첫 알파 버전을 공개했으며, 연결 풀링, 자동 장애 전환, 백업/복원과 Kubernetes 배포 기능을 제공
- 현재 공개 릴리스에는 샤딩이 포함되지 않았으며, 실험과 테스트용 알파 단계로 프로덕션 사용은 권장하지 않음
- Apache-2.0 라이선스
-
Homepage
-
Tech blog
- Multigres - Postgres의 수평 확장을 위한 오픈소스