Consistent, Scalable Compaction for Real-Time Upserts in Apache Pinot

Author: Krishan Goyal (StarTree) | Source: startree.ai | Published: 2026-02-01


한 줄 요약

StarTree의 SegmentRefreshTask가 bitmap 기반 일관성 제어와 SequenceId 순서 관리를 통해 Apache Pinot의 실시간 upsert 컴팩션을 쿼리 무중단으로 수행하며 스토리지를 2-10배 절감한다.

핵심 주장/내용

  • Pinot의 append-only 컬럼 스토리지에서 upsert는 버전 데이터 누적과 쿼리 시 다중 버전 스캔 비용을 초래
  • SegmentRefreshTask: 높은 obsolete 비율의 세그먼트를 선택 → 유효 문서만 추출 → 머지 → deep storage 업로드 → 원자적 교체
  • 쿼리 일관성: 새 세그먼트가 빈 bitmap으로 즉시 가시화되고, 백그라운드에서 점진적으로 bitmap 업데이트
  • SequenceId 관리: 머지된 세그먼트에 입력 세그먼트의 최대 SequenceId를 부여하여 새로 인제스트된 레코드가 항상 우선
  • RocksDB를 메타데이터 스토어로 사용하여 메모리 요구량 10x 감소

주요 수치 / 사실

  • 10억+ 프라이머리 키 관리 가능
  • 100k/초 인제스트 속도 지원
  • 스토리지 비용 2-10x 절감 (업데이트 빈도에 따라)
  • 100k+ 세그먼트 환경에서 동시 인제스트·리밸런싱·스키마 변경·장애 시나리오 스트레스 테스트 완료

관련 위키


Source: 원문 보기