MongoDB Online Archive 조회 전략 재설계
백엔드
MongoDB Online Archive 조회 전략 재설계
두줄요약
MongoDB Online Archive 도입 과정에서 저장 비용뿐 아니라 조회 비용과 탐색 전략까지 함께 재설계했습니다. OFFSET 기반 조회를 Cursor 기반 순차 조회로 바꿔 비용과 메모리 사용량을 줄였습니다.
문제 상황
- 서비스 운영 기간 증가로 MongoDB 저장 용량이 약 1.2TB까지 커지며 저장 비용 부담이 확대됨
- 생성 후 365일 경과 데이터를 Online Archive로 이관하는 정책을 도입하면서, 조회 비용과 데이터 탐색 전략까지 함께 재검토 필요
- 특정 dataId 기준 대용량 조회 API가 존재해, 아카이브 환경에서의 조회 성능과 Data Scanned 비용 영향이 핵심 이슈로 부상
구조와 흐름
- Archive 기준은
time365일 경과, Partition은dataId → time으로 설계해 주요 조회 패턴과 정합성 확보 - Archive 대상 식별용 인덱스는
{ time: 1, dataId: 1 }, 통합 조회용 인덱스는{ dataId: 1, time: 1 }로 분리 구성 - 기존
OFFSET기반 반복 조회는 누적 탐색으로 Data Scanned 증가 가능성이 있어 재검토 대상이 됨
해결 방법
- Spring Data MongoDB의 Stream과 cursorBatchSize를 활용한 Cursor 기반 순차 조회로 전환
- 대량 데이터를 일정 크기 단위로 소비해 메모리 사용량을 제어하고, 반복 탐색을 줄여 조회 비용 최적화
- Archive 정책, 파티션, 인덱스, 조회 방식까지 함께 맞추는 방향으로 재설계
적용해볼 점
- 저장 전략 변경 시 조회 전략과 인덱스 설계를 함께 점검할 필요
- 대용량 데이터에서는 OFFSET보다 Cursor 기반 순차 조회가 더 적합할 수 있음
