Postgres의 2026년 미래를 Rust로 재구성한 데이터베이스
브라우저에서 바로 실행되는 서버를 열어 분석 쿼리의 속도를 체감해 보세요. pgrust는 Postgres의 C 코드를 Rust로 다시 작성해, 현대적인 메모리 관리와 병렬 처리 구조를 적용한 데이터베이스입니다. 기존 Postgres 클라이언트와 SQL 문법을 그대로 지원하므로, 기존 애플리케이션을 수정하지 않고도 새로운 엔진의 성능을 테스트해 볼 수 있습니다.
v0.4-beta: Gravity 엔진과 열 저장소
최근 발표된 v0.4-beta 버전에서는 새로운 벡터화 JIT 컴파일러인 Gravity 엔진이 도입되었습니다. 이 엔진은 분석 쿼리를 ClickHouse보다 최대 3배 빠르게 처리하며, DML과 트리거, PL/pgSQL까지 Postgres의 의미론을 그대로 따릅니다. 또한 pgrcolumnar라는 열 기반 저장소가 성숙되어, 압축과 삭제 벡터를 지원하고 트랜잭션 롤백이 가능합니다. 메모리 관리도 개선되어, 시스템 메모리가 부족할 때 운영체제가 서버를 종료하는 대신 메모리를 가장 많이 차지하는 쿼리를 취소하도록 설계되었습니다.
Postgres 장애의 주범을 겨냥한 설계
pgrust는 Postgres 장애의 주요 원인인 메모리 부족과 무거운 쿼리 문제를 해결하기 위해 두 가지 핵심 기능을 제공합니다. 자동 메모리 매니저는 버퍼 풀, 열 캐시, 실행 중인 쿼리를 하나의 예산으로 관리하여 OOM Killer에 의한 서버 다운을 방지합니다. 쿼리 스케줄러는 실행 시간이 긴 쿼리의 우선순위를 낮추어, 가벼운 쿼리가 무거운 쿼리에 막혀 지연되는 현상을 줄입니다. 이러한 구조는 Postgres의 프로세스 기반 모델 대신 스레드 기반 동시성 모델을 사용하여 구현되었습니다.
설치와 실행 방법
가장 쉬운 방법은 pgrust.com에서 WebAssembly로 컴파일된 서버를 브라우저에서 실행하는 것입니다. 로컬에서 실행하려면 v0.4-beta 릴리스 타르볼을 다운로드하여 압축 해제하면 됩니다. 이 패키지는 bin/postgres, bin/initdb, bin/psql을 포함하므로 기존 PostgreSQL 설치 없이 독립적으로 동작합니다. Linux는 glibc 2.34 이상, macOS는 11 이상을 요구하며, Docker 이미지 malisper/pgrust를 사용하면 기존 Postgres 컨테이너와 동일한 환경 변수와 볼륨 설정으로 대체 가능합니다. macOS에서 브라우저로 다운로드한 경우 Gatekeeper 차단이 발생할 수 있으므로, curl로 다운로드하거나 xattr 명령으로 격리 플래그를 제거해야 합니다.
신뢰성과 한계
pgrust는 아직 베타 버전이며, 프로덕션 환경에서의 사용을 권장하지 않습니다. 팀은 테스트와 안정성을 최우선 과제로 삼고 있으며, Postgres의 사용자 facing 함수 3,400개 중 1,397개를 Kani로 형식 검증하고, Antithesis와 함께 시뮬레이션 테스트를 진행 중입니다. PostgreSQL 확장 프로그램은 안정된 ABI가 없어 기본적으로 동작하지 않지만, pgvector, pg_cron 등 주요 확장들은 내장되어 있습니다. 데이터 손실이 허용되지 않는 환경에서는 여전히 기존 Postgres를 소스로 사용해야 하며, v0.3에서 만든 열 테이블은 v0.4-beta에서 사용할 수 없어 덤프와 복원이 필요합니다.