피드로 돌아가기
Extended RUM in DocumentDB extension for PostgreSQL: Efficient ESR (Equality, Sort, Range) Queries
Dev.toDev.to
Database

Extended RUM 도입으로 ESR 쿼리 성능 O(total)에서 O(result)로 최적화

Extended RUM in DocumentDB extension for PostgreSQL: Efficient ESR (Equality, Sort, Range) Queries

Franck Pachot2026년 6월 7일10advanced

Context

기존 RUM Index 기반의 DocumentDB는 정렬 쿼리 수행 시 Bitmap Index Scan 이후 별도의 Sort 단계가 강제되는 구조적 한계 존재. 이로 인해 데이터 규모가 클수록 정렬 비용이 급증하며 MongoDB의 Compound Index와 같은 효율적인 Ordered Scan 구현이 불가능했음.

Technical Solution

  • Composite Pathspec 및 명시적 Sort Direction 도입을 통한 인덱스 구조 고도화
  • 모든 필드를 포괄하는 단일 Operator Class(bson_extended_rum_composite_path_ops) 설계
  • orderStack 기반의 B-tree walk를 수행하는 RumOrderedScan 구현으로 rumgetbitmap() 과정 생략
  • 튜플을 하나씩 반환하는 useSimpleScan 구조 채택을 통한 진정한 LIMIT Pushdown 실현
  • RumAllowOrderByRawKeys GUC 설정을 통한 Ordered Operator Scan 경로 활성화

1. Cursor-based Pagination 구현 시 인덱스 스캔 후 추가 Sort가 발생하는지 Execution Plan 확인

2. ESR(Equality, Sort, Range) 규칙에 따른 복합 인덱스 순서 최적화 적용

3. LIMIT 절이 Index Order와 일치하여 Index Scan 단계에서 즉시 종료되는지 검증

원문 읽기