사전 정의된 복제본 세트 태그를 사용한 쿼리입니다.
이 페이지의 내용
참고
이 기능 은 M0
무료 클러스터 및 Flex 클러스터에서는 사용할 수 없습니다. 사용할 수 없는 기능에 학습 보려면 Atlas M(무료0 클러스터), M2 및 M5 제한을 참조하세요.
Atlas 클러스터는 클러스터의 다양한 멤버 유형에 대해 사전 정의된 복제본 세트 태그로 구성됩니다. 이러한 사전 정의된 복제본 세트 태그를 활용하여 특정 애플리케이션에서 특정 노드 유형, 리전 및 가용영역으로 쿼리를 보낼 수 있습니다. 이러한 사전 정의된 복제본 세트 태그를 사용하면 복제본 세트에 대한 읽기 설정 을 사용자 지정하여 클러스터 성능 및 안정성을 개선할 수 있습니다.
참고
이러한 사전 정의된 복제본 세트 태그는 사용자가 제공하고 관리하는 리소스 태그와 다릅니다. Atlas에서 제공하는 이러한 복제본 세트 태그는 변경할 수 없습니다.
연결 문자열에 사전 정의된 복제본 세트 태그를 사용하고 특정 노드로 쿼리를 전송하려면 다음 연결 문자열 옵션을 사용합니다:
readPreference
readPreferenceTags
readConcernLevel
예시는 사용 사례 및 예시를 참조하세요.
사전 정의된 복제본 세트 태그 설명
다음 표에서는 Atlas에서 제공하는 사전 정의된 복제본 세트 태그에 대해 설명합니다.
사전 정의된 태그 이름 | 설명 | 예시 |
---|---|---|
가용 영역 | AWS 가용영역 ID, Google Cloud의 정규화된(fully-qualified) 영역 이름 또는 Azure 영역 번호입니다. Azure는 일부 리전의 하위 집합에서만 가용영역을 지원합니다. Atlas는 가용영역을 지원하는 리전에 대해서만 Azure에 대해 사전 정의된 가용영역 태그를 제공합니다. 자세히 알아보려면 Microsoft Azure를 참조하세요. 각 클라우드 공급자의 가능한 |
|
노드 유형 |
| |
제공자 | 노드가 프로비저닝되는 클라우드 공급자입니다. 가능한 값은 다음과 같습니다.
|
|
리전 |
| |
워크로드 유형 | 비분석(선출 가능 또는 읽기 전용) 노드 간에 워크로드를 균등하게 분산하기 위한 사전 정의된 복제본 세트 태그입니다. 가능한 값은 다음과 같습니다.
|
|
디스크 상태 |
|
디스크 상태
다음 표에서는 사전 정의된 복제본 세트 태그에 가능한 diskState
값을 설명합니다.
디스크 상태 | 설명 |
---|---|
| 웜 노드만 타겟팅합니다. 지연 시간이 증가하거나 예측할 수 없는 지연 시간 없이 쿼리를 실행할 수 있습니다. |
이 복제본 세트 태그의 예는 세컨더리 디스크 워밍(warming) 영향 줄이기를 참조하세요.
노드 유형
다음 표에서는 사전 정의된 복제본 세트 태그에 가능한 nodeType
값을 설명합니다.
노드 유형 | 설명 |
---|---|
| 프라이머리 노드로 선출될 수 있는 노드에서 읽습니다. |
| 읽기 전용 노드에서 읽습니다. |
| 읽기 전용 분석 노드에서 읽습니다. |
클러스터의 선출 가능, 읽기 전용 및 분석 노드를 구성하는 방법을 알아보려면 고가용성 및 워크로드 격리 구성을 참조하세요.
팁
다음도 참조하세요.
이러한 사전 정의된 복제본 세트 태그가 Atlas용 BI Connector의 읽기 설정에 어떻게 대응하는지에 대한 자세한 내용은 클러스터 만들기 페이지의 BI Connector 클러스터 옵션 섹션을 참조하세요.
사용 사례 및 예시
사전 정의된 복제 세트 태그를 활용하는 것이 유용할 수 있는 다음 시나리오를 고려하고 해당 샘플 연결 문자열을 참조하세요.
참고
분석 노드를 사용하여 워크로드 격리하기
애플리케이션이 ETL이나 보고와 같이 복잡하거나 장기간 실행되는 작업을 수행하는 경우, 분석 노드에만 연결하여 애플리케이션의 쿼리를 나머지 운영 워크로드에서 분리할 수 있습니다.
다음 연결 문자열을 고려하세요:
mongodb+srv://<db_username>:<db_password>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=nodeType:ANALYTICS&readConcernLevel=local
연결 문자열 옵션은 다음과 같은 순서로 표시됩니다:
readPreference=secondary
readPreferenceTags=nodeType:ANALYTICS
readConcernLevel=local
secondary
의 readPreference 옵션과 { nodeType : ANALYTICS }
의 readPreferenceTag 옵션은 분석 노드에 대한 애플리케이션 연결을 제한합니다.
분석 노드에서 일반 애플리케이션 세컨더리 읽기 격리
분석 노드의 워크로드에서 일반 애플리케이션 읽기를 격리할 수 있습니다.
다음 연결 문자열을 고려하세요:
mongodb+srv://<db_username>:<db_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://<db_username>:<db_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=
옵션을 사용하면 제공자나 리전에 관계없이 애플리케이션을 사용 가능한 모든 노드에 연결할 수 있습니다.
이러한 옵션은 지연 시간을 줄이고 성능을 향상시키기 위해 애플리케이션이 지리적으로 가장 가까운 리전에 연결되도록 하는 데 도움이 됩니다.
참고
가용영역에 따라 읽기를 추가로 타깃팅할 수 있습니다.
세컨더리 디스크 워밍(Warming) 영향 감소
Atlas는 클러스터에 노드를 추가하거나 교체할 때 기본적으로 디스크 사전 워밍을 수행합니다. 디스크 예열 과정에서 새로 생성된 스토리지 볼륨은 일정 기간 동안 IOPS를 많이 사용하게 됩니다. 이로 인해 이 노드에 대한 읽기 작업 속도가 느려집니다. 따라서 디스크 사전 워밍업 프로세스 중에 Atlas는 기본적으로 사전 워밍업 노드를 숨겨서 읽기 작업에 참여하지 못하도록 합니다.
새로 추가하거나 교체한 노드가 즉시 활성화되어 표시되도록 하려면 다음 예와 같이 연결 문자열을 사용하여 빠른 디스크 사전 워밍을 비활성화하고 워밍 노드에 대한 읽기 작업을 방지할 수 있습니다.
mongodb+srv://<db_username>:<db_password>@foo-q8x1v.mycluster.com/test?readPreference=secondary&readPreferenceTags=diskState:READY&readConcernLevel=local
연결 문자열 옵션은 다음과 같은 순서로 표시됩니다:
readPreference=secondary
readPreferenceTags=diskState:READY
readConcernLevel=local
secondary
의 readPreference 옵션과 { diskState : READY }
의 readPreferenceTag 옵션은 Atlas에게 웜 노드만 대상으로 지정하도록 지시합니다.
가용영역 검색
Atlas는 기본적으로 가용영역에 대해 사전 정의된 복제본 세트 태그를 제공합니다. 이러한 태그에는 Amazon Web Services 가용영역 ID, 영역의 GCP 정규화된 이름 또는 Azure 영역 번호가 포함됩니다. rs.conf()
shell 메서드를 사용하거나 클러스터 노드의 마지막 핑을 확인하여 노드의 가용영역을 확인할 수 있습니다.
예시
... "tags": { "availabilityZone": "use2-az2", ...
내장된 사용자 지정 쓰기 고려(write concern)
Atlas는 멀티 리전 클러스터에 대한 기본 사용자 지정 쓰기 고려 (write concern)를 제공합니다. 쓰기 고려는 MongoDB가 클러스터에 요청한 쓰기 작업의 승인 수준을 설명합니다.
Atlas의 기본 사용자 지정 쓰기 고려(write concern)는 작업이 성공할 수 있도록 지정된 수의 리전으로 작업을 전파해 데이터 일관성을 개선하는 데 도움이 됩니다.
사용자 지정 쓰기 고려 (write concern)를 사용하려면 작업의 쓰기 고려 문서에 쓰기 고려를 지정하세요.
Atlas는 멀티 리전 클러스터에 대해 다음 사용자 지정 쓰기 고려를 제공합니다.
쓰기 고려 | 태그 | 설명 |
---|---|---|
|
| 쓰기 작업은 클러스터에 있는 최소 두 곳 이상의 리전에서 승인해야 합니다. |
|
| 쓰기 작업은 클러스터에 있는 최소 세 곳 이상의 리전에서 승인해야 합니다. |
|
| 쓰기 작업은 고유한 클라우드 공급자가 있는 클러스터 내 두 곳 이상의 리전에서 승인해야 합니다. |
예시
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" } } )