PostgreSQL 19: 향후 기능 및 커뮤니티 기대 사항
PostgreSQL 19: 향후 기능 및 커뮤니티 기대 사항
PostgreSQL 19는 개발자 편의성을 개선하고 그래프 처리 및 더 효율적인 데이터 이동으로 데이터베이스의 기능을 확장하는 것을 목표로 합니다. 이번 출시 예정 버전은 SQL 쿼리의 상용구 코드를 줄이고 백업 및 복제의 운영 오버헤드를 개선하는 데 중점을 둡니다.
주요 기능 강화
GROUP BY ALL을 통한 쿼리 구문 단순화
PostgreSQL 19는 DuckDB에서 영감을 받은 GROUP BY ALL 기능을 도입합니다. 이 기능은 사용자가 집계되지 않은 모든 컬럼을 명시적으로 나열하지 않고도 그룹화할 수 있게 해줍니다. 이는 쿼리의 장황함을 줄이고 복잡한 보고서에서 컬럼 선택을 수정할 때 발생하는 오류를 최소화합니다.
그래프 데이터베이스 통합
이번 릴리스는 관계형 모델 내에서 그래프와 유사한 쿼리를 가능하게 하는 GRAPH_TABLE 구문을 도입합니다. 이를 통해 사용자는 Neo4j와 유사한 구문을 사용하여 테이블 간의 패턴을 매칭할 수 있지만, 일부 커뮤니티 구성원들은 이 특정 구현의 장황함과 성능에 대해 우려를 표명했습니다.
논리적 복제 및 COPY 개선 사항
COPY 명령과 논리적 복제의 개선을 통해 운영 워크플로우가 향상됩니다. 이러한 변경 사항은 데이터 마이그레이션 및 백업 프로세스 중의 오버헤드를 줄이는 것을 목표로 하며, 대규모 배포를 관리하는 사용자들에게 흔한 고충을 해결합니다.
커뮤니티 기술적 비판 및 누락된 기능
계획된 기능들은 환영받고 있지만, 숙련된 PostgreSQL 사용자들은 현재 로드맵에서 몇 가지 중요한 격차를 확인했습니다:
스토리지 엔진의 한계
점점 더 커지는 데이터셋을 처리하기 위해 네이티브 컬럼형 스토리지(columnar storage)에 대한 강력한 요구가 있습니다. 사용자들은 Citus와 같은 확장 기능이 존재하지만, 네이티브 지원이 아키텍처 복잡성과 의존성 위험을 줄여줄 것이라고 언급했습니다.
"데이터셋이 점점 더 커짐에 따라, PG의 스토리지 한계가 점점 더 중요해지고 있습니다. 다양한 확장 기능이 있다는 것은 알고 있지만... 하지만 그렇게 되면 해당 확장 기능이 미래에도 지원될지 여부에 의존하게 됩니다."
또한, 사용자들은 고용량 데이터를 처리하기에 종종 불충분한 현재의 행 단위 압축을 대체할 네이티브 블록 압축(block compression)을 요청하고 있습니다.
시계열 데이터 및 표준 준수
일부 개발자들은 SQL:2011 표준에 기반한 네이티브 애플리케이션 시간 시계열 데이터(application-time temporal data) 지원의 부재를 강조하고 있습니다. 이는 더 강력한 역사적 데이터 추적을 가능하게 할 것입니다.
운영 및 아키텍처 요청 사항
프로젝트의 현재 궤적에서 몇 가지 기술적 요구 사항이 해결되지 않은 상태로 남아 있습니다:
- In-place Upgrades: 컨테이너화된 (Docker) 환경에서
pg_upgrade의 복잡성을 제거하기 위해 연속적인 메이저 버전 간의 네이티브 인플레이스 업그레이드(in-place upgrades)를 요청하고 있습니다. - Connection Overhead: 동시 연결당 높은 메모리 사용량에 대한 우려가 지속되고 있으며, 이는 더 가볍운 연결 처리 방식이 필요함을 시사합니다.
- Synchronous Materialized Views: 복잡한 데이터 시나리오에서 정확성을 보보장하기 위해 (SQL Server와 유사한) 동기식으로 업데이트되는 "indexed views"에 대한 요구가가 있습니다.
- Pluggable Storage Engines: OLTP, OLAP 또는 append-only 워크로드에 최적화하기 위해 여러 스토리지 엔진(예: RocksDB)을 지원하는 MariaDB 스타일의 아키텍처에 대한 관심이 있습니다.
성능 관련 우려 사항
기능 추가에도 불구하고, 일부 사용자들은 PostgreSQL 플래너의 동작에에 대해 주의를 유지하고 있습니다. 구체적으로, 행 단위 보안(Row-Level Security, RLS)이 플래너로 하여금 행 단위 매칭을 기본값으로 설정하게 만들어, 운영 환경에서 성능을 크게 저하시하시키는 경우가 있다는 보고가 있습니다.