목록 보기
MongoDB Atlas Search 정렬이슈 해결기
백엔드

MongoDB Atlas Search 정렬이슈 해결기

인프런
인프런
2022년 11월 16일

두줄요약

Atlas Search의 `$search` 후 `$sort` 지연 원인을 mongot·mongod 분리 구조로 분석했습니다. storedSource와 점수 기반 연산을 비교하고 고급 정렬 구현 방식을 적용했습니다.

문제 상황

  • RDB like 연산과 동의어별 반복 조회로 인한 검색 슬로우 쿼리
  • Atlas Search의 $search 뒤 $sort 사용 시 전체 매칭 문서 조회·정렬로 4~5초 응답 지연

원인 분석

  • mongot의 전문 검색과 mongod의 문서 조회·정렬로 분리된 처리 구조
  • 많은 검색 결과 ID에 대한 mongod 조회 및 정렬 비용 증가

해결 방법

  • storedSource와 returnStoredSource로 정렬 필드를 검색 인덱스에서 반환
  • near와 score function으로 mongot 내부 점수 기반 정렬 수행
  • compound의 filter·must·should 조합으로 검색 필터와 정렬 점수 분리

트레이드오프

  • storedSource의 빠른 조회 성능과 인덱스 크기·인덱싱 비용 증가
  • near의 origin·pivot 설정 제약 및 2차 정렬 한계
  • score function과 constant 점수를 활용한 수업 질문 우선·최신순 고급 정렬

다음 읽기

#MongoDB 주제를 이어서 읽기

Code With Me를 활용한 페어 프로그래밍

Code With Me 기반 동시 개발형 페어 프로그래밍 경험을 공유했습니다. 실시간 협업의 이점과 도구의 제약 사항을 함께 정리했습니다.

인프런
인프런
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...