Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

Mongo.setReadPref()

이 페이지의 내용

  • 정의
  • 호환성
  • 행동
  • 예시
Mongo.setReadPref(mode, tagSet, hedgeOptions)

연결 객체 에서 메서드를 호출하여 setReadPref() 클라이언트 가 모든 쿼리를 복제본 세트 의 멤버로 라우팅하는 방법을 제어합니다.Mongo [1]

참고

해당 읽기 설정을 사용하려면 해당 연결을 사용하여 문서를 조회하기 전에 연결 객체에서 Mongo.setReadPref()를 호출해야 합니다.

[1] 특정 쿼리(1개 또는 여러 개)에 대해 읽기 설정을 적용하려면 반복하기 전에 커서에 cursor.readPref()를 적용하면 됩니다. 자세한 내용은 cursor.readPref()를 참조하세요.
Parameter
유형
설명
문자열

다음 읽기 설정 (read preference) 모드 중 하나: primary, primaryPreferred, secondary, secondaryPreferred 또는 nearest

문서 배열

선택 사항입니다. 지정된 태그가 있는 멤버에 대한 읽기 대상을 지정하는 데 사용되는 태그 세트입니다. 읽기 설정 모드 primary를 사용하는 경우 tagSet는 사용할 수 없습니다.

자세한 내용은 읽기 설정 (read preference) 태그 세트 목록을 참조하세요.

문서

선택 사항입니다. 헤지된 읽기(hedged read) 사용 활성화 여부를 지정하는 문서:

{ enabled: <boolean> }

enabled 필드의 기본값은 true입니다. 즉, 빈 문서 { } 을 지정하는 것은 { enabled: true } 를 지정하는 것과 같습니다.

헤지된 읽기 (hedged read)는 샤딩된 클러스터에 사용할 수 있습니다. 헤지된 읽기 (hedged read)를 사용하려면 반드시 mongos에 헤지된 읽기 (hedged read)(기본값)용 enabled support가 있어야 하며 비primary 읽기 설정 (read preference)은 반드시 헤지된 읽기 (hedged read) 사용을 활성화해야 합니다.

읽기 설정 (read preference) nearest 은 기본적으로 샤딩된 cluster에서 헤지된 읽기(hedged read)를 사용하도록 설정합니다. 즉, 기본적으로 { enabled: true } 이 있습니다.

Mongo.setReadPref()는 읽기 설정에 대한 읽기 설정 maxStalenessSeconds 옵션을 지원하지 않습니다.

이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

Mongo.setReadPref() 의 동작은 다음과 같습니다.

mongosh 2.0부터 db.runCommand()는 연결 문자열을 통해 또는 Mongo.setReadPref() 메서드를 사용하여 추가된 모든 전역 읽기 설정을 무시합니다. 원하는 읽기 설정을 지정하려면 db.runCommand()를 호출할 때 options 인수를 사용합니다.

다음 작업에서는 읽기 설정 모드를 설정하여 읽기 대상을 세컨더리 노드로 지정합니다. 이는 암시적으로 세컨더리에서 읽기를 허용합니다.

db.getMongo().setReadPref('secondary')

그러나 mongosh를 사용하여 프라이머리에 연결된 상태에서 호출하는 경우 위 명령은 쿼리를 세컨더리로 라우팅하지 않습니다.

특정 태그가 있는 세컨더리를 대상으로 하려면 modetagSet 배열을 모두 포함합니다.

db.getMongo().setReadPref(
"secondary",
[
{ "datacenter": "B" }, // First, try matching by the datacenter tag
{ "region": "West"}, // If not found, then try matching by the region tag
{ } // If not found, then use the empty document to match all eligible members
]
)

세컨더리 선택 프로세스에서 MongoDB는 datacenter: "B" 태그가 있는 세컨더리 멤버를 먼저 찾으려고 합니다.

  • 발견되면 MongoDB는 적격 세컨더리를 datacenter: "B" 태그가 있는 세컨더리로 제한하고 나머지 태그를 무시합니다.

  • 아무것도 발견되지 않으면 MongoDB는 "region": "West" 태그를 사용하여 세컨더리 멤버를 찾으려고 시도합니다.

    • 발견되면 MongoDB는 적격 세컨더리를 "region": "West" 태그가 있는 세컨더리로 제한합니다.

    • 아무것도 발견되지 않으면 MongoDB는 적격 세컨더리를 사용합니다.

자세한 내용 은 태그 일치 순서를 참조하세요.

다음도 참조하세요.

샤딩된 클러스터의 경우 프라이머리가 아닌 읽기 설정(read preference)에 대해 헤지된 읽기(hedged read)를 활성화할 수 있습니다. 헤지된 읽기를 사용하려면 mongos에 헤지된 읽기에 대한 enabled support(기본값)가 있어야 하며primary 이외의 읽기 기본 설정에서 헤지된 읽기 사용을 활성화해야 합니다.

헤지된 읽기를 사용하여 샤딩된 클러스터의 세컨더리를 대상으로 하려면 다음 예와 같이 모드hedgeOptions를 모두 포함해야 합니다.

  • 태그 세트 없이

    db.getMongo().setReadPref(
    "secondary", // mode
    null, // tag set
    { enabled: true } // hedge options
    )
  • 태그 세트 포함

    db.getMongo().setReadPref(
    "secondary", // mode
    [ { "datacenter": "B" }, { } ], // tag set
    { enabled: true } // hedge options
    )

돌아가기

Mongo.setCausalConsistency

이 페이지의 내용