MongoDB Atlas Search 정렬 이슈 해결기
·2022.11.16 22:00
핵심 내용
MongoDB Atlas Search에서 $search와 $sort를 함께 사용할 때 발생하는 성능 저하 원인과 해결 방안을 다룬다.
1 / 2
자세히 보기
인프런은 검색 품질 향상을 위해 기존 RDB의 LIKE 연산 대신 Atlas Search를 도입했다. 하지만 최신순, 좋아요순 등 특정 필드 기준의 정렬을 적용할 때 쿼리 속도가 급격히 느려지는 문제가 발생했다.
이 문제의 원인은 **데이터 필터링 프로세스(mongot)**와 **정렬 프로세스(mongod)**가 분리되어 있기 때문이다. $search 결과로 나온 수많은 ID를 mongod가 일일이 조회하여 정렬하는 과정에서 병목이 발생한다.
이를 해결하기 위한 첫 번째 방안은 storedSource와 returnStoredSource 옵션을 사용하는 것이다. 정렬에 필요한 필드를 검색 인덱스에 미리 포함시켜 두면, mongod가 별도의 컬렉션 조회 없이도 즉시 정렬을 수행할 수 있다.
다만, 인덱스 크기가 커질 수 있으므로 필요한 필드만 최소한으로 포함하는 것이 권장된다. 추가적인 데이터가 필요한 경우 $lookup 스테이지를 결합하여 효율적으로 처리할 수 있다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.