문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ /

맞춤형 커서

이 페이지의 내용

  • 사용 사례
  • 시작하기
  • 행동

기본적으로 MongoDB는 클라이언트가 커서의 모든 결과를 소진하면 자동으로 커서를 닫습니다. 그러나 고정 사이즈컬렉션 의 경우 클라이언트가 초기 커서의 결과를 모두 사용한 후에도 계속 열려 있는 테일 커서( tailable cursor) 를 사용할 수 있습니다. 테일 커서(tailable cursor)는 개념적으로 -f 옵션('팔로우' 모드)이 있는 tail Unix 명령과 동일합니다. 클라이언트가 고정 사이즈 컬렉션에 추가 문서를 삽입한 후 테일 커서(tailable cursor)는 계속해서 문서를 검색합니다.

인덱스가 실용적이지 않은 경우 쓰기 볼륨이 큰 고정 사이즈 컬렉션에 테일 커서를 사용하세요. 예를 들어, MongoDB 복제는 테일 커서를 사용하여 프라이머리의 oplog를 추적합니다.

참고

쿼리가 인덱스 필드에 있는 경우 테일 커서 대신 일반 커서를 사용합니다. 쿼리에서 반환된 인덱싱된 필드의 마지막 값을 추적합니다. 새로 추가된 문서를 조회하려면 쿼리 조건에 있는 인덱싱된 필드의 마지막 값을 사용하여 컬렉션을 다시 쿼리합니다. 예를 들면 다음과 같습니다.

db.<collection>.find( { indexedField: { $gt: <lastvalue> } } )

mongosh 에서 테일 커서(tailable cursor)를 만들려면 cursor.tailable() 을 참조하세요.

드라이버용 tailable cursor 메서드는 드라이버 설명서를 참조하세요.

테일 커서와 관련된 다음 동작을 고려하세요.

  • 테일 커서는 인덱스를 사용하지 않습니다. 문서를 기본 순서로 반환합니다.

  • 테일 커서는 인덱스를 사용하지 않기 때문에 쿼리를 처음 스캔하는 데 비용이 많이 들 수 있습니다. 처음에 커서를 많이 소모한 후에는 새로 추가된 문서를 후속 조회하는 데에는 비용이 적게 듭니다.

  • 현재 위치의 데이터를 새 데이터로 덮어쓰면 테일 커서가 유효하지 않게 될 수 있습니다. 예를 들어, 데이터 삽입 속도가 커서 반복 속도보다 빠른 경우 이런 일이 발생할 수 있습니다.

← 쿼리 계획

이 페이지의 내용