AI Briefing

MongoDB Atlas Search 정렬 이슈 해결기

·2022.11.16 22:00

MongoDB Atlas Search에서 $search와 $sort를 함께 사용할 때 발생하는 성능 저하 원인과 해결 방안을 다룬다.

인프런은 검색 품질 향상을 위해 기존 RDB의 LIKE 연산 대신 Atlas Search를 도입했다. 하지만 최신순, 좋아요순 등 특정 필드 기준의 정렬을 적용할 때 쿼리 속도가 급격히 느려지는 문제가 발생했다.

이 문제의 원인은 **데이터 필터링 프로세스(mongot)**와 **정렬 프로세스(mongod)**가 분리되어 있기 때문이다. $search 결과로 나온 수많은 ID를 mongod가 일일이 조회하여 정렬하는 과정에서 병목이 발생한다.

이를 해결하기 위한 첫 번째 방안은 storedSourcereturnStoredSource 옵션을 사용하는 것이다. 정렬에 필요한 필드를 검색 인덱스에 미리 포함시켜 두면, mongod가 별도의 컬렉션 조회 없이도 즉시 정렬을 수행할 수 있다.

다만, 인덱스 크기가 커질 수 있으므로 필요한 필드만 최소한으로 포함하는 것이 권장된다. 추가적인 데이터가 필요한 경우 $lookup 스테이지를 결합하여 효율적으로 처리할 수 있다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.