pg_ducklake: PostgreSQL용 컬럼형 스토리지
Source: Dev.to

Access pg_ducklake at the GitHub repository.
소개
PostgreSQL은 세계에서 가장 진보된 오픈‑소스 관계형 데이터베이스1입니다. AI 통합, JDBC 드라이버부터 ORM, 모니터링, 백업, 복제 등을 위한 강력한 도구까지, 현대 데이터 스택에서 가장 폭넓고 성숙한 생태계를 자랑합니다.
하지만 PostgreSQL은 근본적으로 트랜잭션을 위해 설계된 로우‑스토어이기 때문에 대규모 분석 스캔 및 집계에는 자연스럽지 않습니다.
동시에 스토리지와 컴퓨트를 분리하고 열형 파일 포맷(주로 Parquet)을 사용하는 레이크하우스 접근 방식이 분석 분야의 표준이 되고 있습니다. Delta Lake와 Apache Iceberg 같은 테이블 포맷이 이 모델을 대중화했지만, 메타데이터 오버헤드 때문에 관리가 복잡할 수 있습니다.
DuckLake는 SQL 카탈로그 메타데이터는 유지하면서 데이터를 오픈 Parquet 파일에 저장하는 새로운 참여자입니다. pg_ducklake는 이러한 두 세계의 교차점에 위치하여, PostgreSQL 안에서 네이티브 레이크하우스 경험을 제공하면서 DuckDB 생태계에서도 접근 가능하도록 합니다.
아키텍처
pg_ducklake는 세 가지 구성 요소를 연결하여 통합된 경험을 제공합니다:
- PostgreSQL (인터페이스 & 카탈로그) – 익숙한 PostgreSQL SQL을 사용해 테이블을 관리하고 쿼리하며, 모든 테이블 메타데이터는 PostgreSQL 힙 테이블에 네이티브하게 저장됩니다.
- DuckDB (실행 엔진) – 벡터화된 DuckDB 엔진이 PostgreSQL 백엔드에 직접 내장되어 분석 스캔 및 집계를 효율적으로 처리합니다.
- DuckLake (스토리지 포맷) – 데이터는 S3에 Parquet 파일로 저장되고 메타데이터는 PostgreSQL에 보관됩니다. 이를 통해 외부 DuckDB 클라이언트(CLI, Python 등)도 동일한 테이블에 접근할 수 있습니다.

pg_ducklake가 제공하는 것
목표는 간단합니다: PostgreSQL을 평소처럼 사용하되, 필요할 때 레이크하우스 스타일 테이블을 활용합니다.
- Postgres‑네이티브 인체공학 – DuckLake 테이블은 익숙한 SQL과 도구를 사용해 PostgreSQL에서 관리되며, Postgres 애플리케이션, BI, 분석가 워크플로에 자연스럽게 녹아듭니다. 복제 친화적인 배포(예: Neon 같은 서버리스 Postgres)에서는 읽기 전용 분석을 읽기 복제본을 추가해 확장할 수 있습니다.
- 기본적으로 오픈 테이블 – Parquet 데이터 + PostgreSQL 카탈로그; DuckDB 클라이언트(CLI, Python 등)는 PostgreSQL을 메타데이터 제공자로 사용해 “원시” DuckLake 테이블을 읽을 수 있습니다.
- 분석을 위한 DuckDB 속도 – 벡터화 실행과 열형 스토리지를 결합해 빠른 스캔 및 집계를 제공합니다.
pg_ducklake의 향후 로드맵
pg_ducklake는 현재 활발히 개발 중이며, PostgreSQL 내부에서 프로덕션 급 레이크하우스 경험을 제공하는 것을 목표로 합니다. 로드맵에는 다음과 같은 실용적인 기능이 포함됩니다:
- 스키마 진화
- 타임 트래블
- 파티셔닝 / 레이아웃 제어
- 테이블 유지보수(압축 / 가비지 컬렉션)
- 더 많은 실제 사용자들이 프로젝트를 채택함에 따라 명확한 운영 가이드 제공
실제 워크로드, 기능 요청, 그리고 발견한 거친 부분에 대한 피드백과 기여를 언제든 환영합니다.
pg_ducklake: PostgreSQL에서 네이티브 레이크하우스 테이블 — 오픈 데이터, DuckDB 속도.
Footnotes
Quoted from the PostgreSQL website. ↩