MongoDB Atlas Search 정렬, 어떻게 성능을 개선했을까?
by DD
3년 전
조회수 10
MongoDB Atlas Search에서 정렬 성능 저하 문제를 겪음
storedSource와 near operator를 활용하여 성능 개선
score function을 통해 고급 정렬 구현 및 문제 해결
Atlas Search 아키텍처와 정렬 문제
Atlas Search는 mongot과 mongod 두 프로세스로 구성되어 전문 검색을 수행한다. $search와 $sort를 함께 사용하면 mongot가 검색 후 mongod가 정렬을 수행하여 성능 저하가 발생한다. 따라서, 데이터 필터링과 정렬 과정의 분리가 주요 원인이다.
storedSource vs near operator: 성능 비교
storedSource는 인덱스에 정렬 필드를 저장하여 mongod의 추가 조회를 방지, 가장 빠른 성능을 제공한다. near operator는 mongot에서 정렬을 수행하지만, 2차 정렬 구현에 어려움이 있다. score function은 고급 정렬을 가능하게 하지만, 성능은 storedSource보다 떨어진다.
score function을 활용한 고급 정렬
score function을 사용하면 가중치 부여 및 다양한 조건을 만족하는 정렬을 구현할 수 있다. compound operator의 should를 활용하여 특정 조건에 부합하는 항목에 가중치를 부여한다. 따라서, 강의 게시글을 우선 노출하는 등 유연한 정렬 전략을 수립할 수 있다.