문서 메뉴
문서 홈
/
MongoDB Atlas
/ /

사전 정의된 복제본 세트 태그를 사용한 쿼리입니다.

이 페이지의 내용

  • 사전 정의된 복제본 세트 태그 설명
  • 디스크 상태
  • 노드 유형
  • 사용 사례 및 예제
  • 분석 노드를 사용하여 워크로드 격리하기
  • 지리적으로 분산된 애플리케이션을 위한 로컬 읽기 타깃팅
  • 세컨더리 디스크 워밍(Warming) 영향 감소
  • 가용 영역 검색
  • 내장된 사용자 지정 쓰기 고려(write concern)

참고

이 기능은 M0 무료 클러스터, M2M5 클러스터에서는 사용할 수 없습니다. 사용할 수 없는 기능에 대해 자세히 알아보려면 Atlas M0(무료 클러스터), M2 및 M5 제한을 참조하세요.

Atlas 클러스터는 클러스터의 다양한 멤버 유형에 대해 사전 정의된 복제본 세트 태그로 구성됩니다. 이러한 사전 정의된 복제본 세트 태그를 활용하여 특정 애플리케이션에서 특정 노드 유형, 리전 및 가용영역으로 쿼리를 보낼 수 있습니다. 이러한 사전 정의된 복제본 세트 태그를 사용하면 복제본 세트에 대한 읽기 설정 을 사용자 지정하여 클러스터 성능 및 안정성을 개선할 수 있습니다.

참고

이러한 사전 정의된 복제본 세트 태그는 사용자가 제공하고 관리하는 리소스 태그와 다릅니다. Atlas에서 제공하는 이러한 복제본 세트 태그는 변경할 수 없습니다.

연결 문자열에 사전 정의된 복제본 세트 태그를 사용하고 특정 노드로 쿼리를 전송하려면 다음 연결 문자열 옵션을 사용합니다:

  • readPreference

  • readPreferenceTags

  • readConcernLevel

예제는 사용 사례 및 예제 를 참조하세요. 이러한 연결 문자열 옵션은 mongosh 에는 사용할 수 없습니다. 대신 cursor.readPref()Mongo.setReadPref() 를 사용합니다.

다음 표에서는 Atlas에서 제공하는 사전 정의된 복제본 세트 태그에 대해 설명합니다.

사전 정의된 태그 이름
설명
예제
가용 영역

AWS 가용 영역 ID, Google Cloud의 정규화된(fully-qualified) 영역 이름 또는 Azure 영역 번호입니다.

Azure는 일부 리전의 하위 집합에서만 가용 영역을 지원합니다. Atlas는 가용 영역을 지원하는 리전에 대해서만 Azure에 대해 사전 정의된 가용 영역 태그를 제공합니다. 자세히 알아보려면 Microsoft Azure를 참조하세요.

각 클라우드 제공자의 가능한 availabilityZone 값에 대한 자세한 내용은 클라우드 제공자의 설명서를 참조하세요.

  • AWS: {"availabilityZone" : "use1-az1"}

  • Google Cloud {"availabilityZone" : "us-east1-b"}

  • Azure: {"availabilityZone" : "1"}

노드 유형

노드 유형입니다.

가능한 값은 다음과 같습니다.

  • ELECTABLE

  • READ_ONLY

  • ANALYTICS

자세한 내용은 노드 유형을 참조하세요.

{"nodeType" : "ANALYTICS"}
공급자

노드가 프로비저닝되는 클라우드 제공자입니다.

가능한 값은 다음과 같습니다.

  • AWS

  • GCP

  • AZURE

{"provider" : "AWS"}
부위

노드가 위치한 클라우드 리전입니다.

가능한 region 값의 전체 목록은 클라우드 제공자의 참조 페이지를 확인하세요.

{"region" : "US_EAST_2"}
워크로드 유형

비분석(선출 가능 또는 읽기 전용) 노드 간에 워크로드를 균등하게 분산하기 위한 사전 정의된 복제본 세트 태그입니다.

가능한 값은 다음과 같습니다.

  • OPERATIONAL

{"workloadType" : "OPERATIONAL"}
디스크 상태

디스크 상태입니다.

가능한 값은 다음과 같습니다. READY

자세한 내용은 디스크 상태를 참조하세요.

{"diskState" : "READY"}

다음 표에서는 사전 정의된 복제본 세트 태그에 가능한 diskState 값을 설명합니다.

디스크 상태
설명
READY

웜 노드만 타겟팅합니다.

지연 시간이 증가하거나 예측할 수 없는 지연 시간 없이 쿼리를 실행할 수 있습니다.

이 복제본 세트 태그의 예는 세컨더리 디스크 워밍(warming) 영향 줄이기를 참조하세요.

다음 표에서는 사전 정의된 복제본 세트 태그에 가능한 nodeType 값을 설명합니다.

노드 유형
설명
ELECTABLE
프라이머리 노드로 선출될 수 있는 노드에서 읽습니다. ELECTABLE 노드는 클러스터 생성 UI에서 Electable nodes for high availability에 해당합니다.
READ_ONLY
읽기 전용 노드에서 읽습니다. READ_ONLY 노드는 클러스터 생성 UI에서 Read-only nodes for optimal local reads에 해당합니다.
ANALYTICS
읽기 전용 분석 노드에서 읽습니다. ANALYTICS 노드는 클러스터 생성 UI에서 Analytics nodes for workload isolation 에 해당합니다.

클러스터의 선출 가능, 읽기 전용 및 분석 노드를 구성하는 방법을 알아보려면 고가용성 및 워크로드 격리 구성을 참조하세요.

다음도 참조하세요.

이러한 사전 정의된 복제본 세트 태그가 Atlas용 BI Connector 읽기 설정에 해당하는 방법에 대한 자세한 내용은 클러스터 만들기 페이지의 BI Connector 클러스터 옵션 섹션을 참조하세요 .

사전 정의된 복제 세트 태그를 활용하는 것이 유용할 수 있는 다음 시나리오를 고려하고 해당 샘플 연결 문자열을 참조하세요.

참고

다음 예제 연결 문자열은 각각 readConcernLevel=local 연결 문자열 옵션을 사용합니다. 로컬 읽기 고려를 지정하면 샤드 클러스터의 세컨더리 읽기 가 고아 문서 를 반환하지 않습니다. 샤딩되지 않은 복제본 세트에 연결할 때는 이 옵션을 지정할 필요가 없습니다.

애플리케이션이 ETL이나 보고와 같이 복잡하거나 장기간 실행되는 작업을 수행하는 경우, 분석 노드에만 연결하여 애플리케이션의 쿼리를 나머지 운영 워크로드에서 분리할 수 있습니다.

다음 연결 문자열을 고려하세요:

mongodb+srv://<USERNAME>:<PASSWORD>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=nodeType:ANALYTICS&readConcernLevel=local

연결 문자열 옵션은 다음과 같은 순서로 표시됩니다:

  • readPreference=secondary

  • readPreferenceTags=nodeType:ANALYTICS

  • readConcernLevel=local

secondaryreadPreference 옵션과 { nodeType : ANALYTICS }readPreferenceTag 옵션은 분석 노드에 대한 애플리케이션 연결을 제한합니다.

분석 노드의 워크로드에서 일반 애플리케이션 읽기를 격리할 수 있습니다.

다음 연결 문자열을 고려하세요:

mongodb+srv://<USERNAME>:<PASSWORD>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=workloadType:OPERATIONAL&readConcernLevel=local

연결 문자열 옵션은 다음과 같은 순서로 표시됩니다:

  • readPreference=secondary

  • readPreferenceTags=workloadType:OPERATIONAL

  • readConcernLevel=local

옵션을 지정하면 애플리케이션이 분석 노드에서 읽을 수 없습니다. 애플리케이션은 operational 또는 비분석 노드에서 읽어야 합니다.

사전 정의된 복제본 세트 태그를 사용하여 전 세계에 분산된 애플리케이션을 위해 특정 리전에 대한 로컬 읽기 대상을 지정합니다. 이러한 사전 정의된 복제본 세트 태그가 도입되기 전에는 전 세계에 분산된 애플리케이션의 로컬 읽기는 가장 가까운 읽기 설정을 올바르게 계산하는 데 의존했습니다. 사전 정의된 복제본 세트 태그를 사용하면 nearest 의 읽기 설정 모드와 함께 적절한 지리적 태그를 지정하면 보다 일관된 동작을 제공할 수 있습니다.

다음 연결 문자열은 AWS US_EAST_1 리전에 대한 연결의 우선 순위를 지정하고, 다음으로 US_EAST_2 리전의 연결을 지정합니다:

mongodb+srv://<USERNAME>:<PASSWORD>@foo-q8x1v.mycluster.com/test?readPreference=nearest&readPreferenceTags=provider:AWS,region:US_EAST_1&readPreferenceTags=provider:AWS,region:US_EAST_2&readPreferenceTags=&readConcernLevel=local

연결 문자열 옵션은 다음과 같은 순서로 표시됩니다:

  • readPreference=nearest

  • readPreferenceTags=provider:AWS,region:US_EAST_1

  • readPreferenceTags=provider:AWS,region:US_EAST_2

  • readPreferenceTags=

  • readConcernLevel=local

Atlas는 사용자가 지정한 순서대로 각 읽기 설정(read preference) 태그를 고려합니다. Atlas는 노드를 태그와 일치시킨 후 해당 태그와 일치하는 모든 적격 노드를 찾습니다. 그러면 Atlas는 다음 readPreferenceTags를 무시합니다.

이 예제에서는 애플리케이션이 먼저 AWS US_EAST_1 리전의 노드에 연결을 시도합니다. 해당 리전에서 사용 가능한 노드가 없는 경우 애플리케이션은 AWS US_EAST_2 리전에 있는 노드에 연결을 시도합니다.

마지막(비어 있는) readPreferenceTags= 는 대체 옵션을 제공합니다. 비어 있는 readPreferenceTags= 옵션을 사용하면 제공자나 리전에 관계없이 응용 프로그램을 사용 가능한 모든 노드에 연결할 수 있습니다.

이러한 옵션은 지연 시간을 줄이고 성능을 향상시키기 위해 애플리케이션이 지리적으로 가장 가까운 리전에 연결되도록 하는 데 도움이 됩니다.

참고

가용 영역에 따라 읽기를 추가로 타깃팅할 수 있습니다.

다음도 참조하세요.

다양한 읽기 설정에 대한 추가 정보 및 사용 사례 는 MongoDB 매뉴얼의 읽기 설정 페이지를 참조하세요.

Atlas는 클러스터의 노드를 추가하거나 교체할 때 디스크 사전 예열 을 수행합니다. . 디스크 사전 예열 프로세스 중에 새로 생성된 스토리지 볼륨은 IOPS 를 많이 사용합니다. 이렇게 하면 이 노드에 대한 읽기 작업 속도가 느려집니다. 따라서 디스크 사전 예열 프로세스 중에 Atlas는 기본적으로 사전 예열 노드를 숨겨서 읽기 작업에 참여하지 못하도록 합니다.

새로 추가되거나 교체된 노드가 즉시 활성화되고 표시되도록 하려면 다음 예에서와 같이 연결 문자열을 사용하여 빠른 디스크 사전 워밍을 비활성화 하고 워밍 노드에서 읽기 작업을 방지할 수 있습니다.

mongodb+srv://<USERNAME>:<PASSWORD>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=diskState:READY&readConcernLevel=local

연결 문자열 옵션은 다음과 같은 순서로 표시됩니다:

  • readPreference=secondary

  • readPreferenceTags=diskState:READY

  • readConcernLevel=local

secondaryreadPreference 옵션과 { diskState : READY }readPreferenceTag 옵션은 Atlas에게 웜 노드만 대상으로 지정하도록 지시합니다.

Atlas는 기본적으로 가용영역에 대해 사전 정의된 복제본 세트 태그를 제공합니다. 이러한 태그에는 AWS 가용영역 ID, Google Cloud의 정규화된 영역 이름 또는 Azure 영역 번호가 포함됩니다. rs.conf() 셸 메서드를 사용하거나 클러스터 노드의 마지막 핑을 확인하여 노드의 가용영역을 확인할 수 있습니다.

예제

...
"tags": {
"availabilityZone": "use2-az2",
...

Atlas는 멀티 리전 클러스터에 대한 기본 사용자 지정 쓰기 고려 (write concern)를 제공합니다. 쓰기 고려는 MongoDB가 클러스터에 요청한 쓰기 작업의 승인 수준을 설명합니다.

Atlas의 기본 사용자 지정 쓰기 고려(write concern)는 작업이 성공할 수 있도록 지정된 수의 리전으로 작업을 전파해 데이터 일관성을 개선하는 데 도움이 됩니다.

사용자 지정 쓰기 고려를 사용하려면 작업의 쓰기 고려 문서 에 쓰기 고려를 지정하세요.

Atlas는 멀티 리전 클러스터에 대해 다음 사용자 지정 쓰기 고려를 제공합니다.

쓰기 고려
태그
설명
twoRegions
{ region: 2 }
쓰기 작업은 클러스터에 있는 최소 두 곳 이상의 리전에서 승인해야 합니다.
threeRegions
{ region: 3 }
쓰기 작업은 클러스터에 있는 최소 세 곳 이상의 리전에서 승인해야 합니다.
twoProviders
{ provider: 2 }
쓰기 작업은 고유한 클라우드 제공자가 있는 클러스터 내 두 곳 이상의 리전에서 승인해야 합니다.

예제

us-east-1, us-east-2, us-west-1, 이렇게 세 리전에 걸쳐 있는 멀티 리전 클러스터를 생각해 보세요. Atlas에서 쓰기 작업을 수락하기 전에 클러스터의 세 지역 모두에 쓰기 작업을 전파하고 싶습니다.

다음 작업은 문서를 삽입하며 { w: "threeRegions" } 쓰기 고려(write concern) 객체로 인해 작업을 세 리전 모두에 전파해야 합니다.

db.employees.insertOne(
{ name: "Bob Smith", company: "MongoDB" },
{ writeConcern: { w: "threeRegions" } }
)
← 고가용성 및 워크로드 격리를 구성합니다.