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: 원문 보기