문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

updateZoneKeyRange

이 페이지의 내용

  • 정의
  • 행동
  • 보안
  • 예제
updateZoneKeyRange

버전 3.4에 새로 추가되었습니다.

updateZoneKeyRange 관리 명령은 샤드 키 값 범위와 구역 간의 연결을 만들거나 제거할 수 있습니다.

MongoDB 4 부터 시작.0.2, updateZoneKeyRange 데이터베이스 명령과 해당 헬퍼 sh.updateZoneKeyRange()sh.addTagRange() 를 비샤드형 컬렉션 또는 존재하지 않는 컬렉션에서 실행할 수 있습니다.

mongosh 에서 이 명령은 sh.updateZoneKeyRange() 헬퍼 메서드를 통해서도 실행할 수 있습니다.

헬퍼 메서드는 mongosh 사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 않을 수 있습니다. 편의가 필요하지 않거나 추가 반환 필드가 필요한 경우 database 명령을 사용합니다.

updateZoneKeyRange를 실행하려면 db.runCommand( { <command> } ) 메서드를 사용합니다.

관리 데이터베이스에서 addShardToZone 을(를) 실행해야 합니다.

updateZoneKeyRange 명령의 구문은 다음과 같습니다.

{
updateZoneKeyRange: <string>,
min: <document>,
max: <document>,
zone: <string> | <null>
}

이 명령은 다음 필드를 사용합니다.

매개변수
유형
설명
updateZoneKeyRange
문자열

범위와 연결할 collection의 네임스페이스입니다.

명령이 성공하려면 collection을 샤딩해야 합니다.

min
문서

샤드 키 값 범위의 포괄적 하한입니다.

샤드 키의 각 필드를 <fieldname> : <value> 형식으로 지정합니다. 값은 샤드 키와 동일한 BSON 유형이어야 합니다.

참고

해시 샤딩을 사용하려면 필드 값이 NumberLong 유형이어야 합니다.

max
문서

샤드 키 값 범위의 배타적 상한입니다.

샤드 키의 각 필드를 <fieldname> : <value> 형식으로 지정합니다. 값은 샤드 키와 동일한 BSON 유형이어야 합니다.

참고

해시 샤딩을 사용하려면 필드 값이 NumberLong 유형이어야 합니다.

zone
문자열

minmax 으로 묶인 범위와 연결할 구역의 이름입니다.

값이 기존 구역과 일치하지 않으면 명령이 실패합니다.

min 의 하한과 max 의 상한이 있는 범위와 updateZoneKeyRange collection 간의 연결을 제거하려면 null 을 지정합니다. minmax 값은 대상 범위와 정확히 일치해야 합니다.

updateZoneKeyRange 에 전달된 최소 및 최대 경계와 일치하는 구역 범위가 없는 경우 아무것도 제거되지 않습니다.

updateZoneKeyRange 인스턴스에 연결된 경우에만 를 실행합니다.mongos

mongosh 는 두 가지 헬퍼 메서드를 제공합니다.

  • sh.updateZoneKeyRange() 구역에 샤드 키 값 범위를 추가합니다.

  • sh.removeRangeFromZone() 를 사용하여 구역에서 특정 범위의 샤드 키 값을 제거할 수 있습니다.

샤드 컬렉션의 기존 범위와 하한선 및 상한선이 겹치는 샤드 키 값 범위는 생성할 수 없습니다. 예를 들어 기존 범위가 1 ~ 10 인 경우 새 범위가 기존 범위와 겹치므로 5 ~ 20 의 새 범위를 만들 수 없습니다.

구역은 여러 범위의 데이터와 연결될 수 있지만 범위는 최대 단일 구역과 연결될 수 있습니다.

범위와 구역 간의 연결을 제거할 때 updateZoneKeyRange 는 구역을 제거하지 않습니다. removeShardFromZone 명령을 사용하여 구역과 샤드 간의 연결을 제거합니다.

샤드 클러스터의 구역에 대한 자세한 내용은 구역 매뉴얼 페이지를 참조하세요.

비어 있거나 존재하지 않는 컬렉션에 대해 구역 샤딩 을 수행하려는 경우,4.0.2 이후 컬렉션을 샤딩 하기전에 를 사용하여 구역 updateZoneKeyRange 및 구역 범위를 생성하세요. 버전 4 부터.0.3, 비어 있거나 존재하지 않는 컬렉션에 구역 및 구역 범위를 만들면 MongoDB가 컬렉션을 샤딩할 때 초기 청크 생성 및 배포 프로세스를 최적화할 수 있습니다. 이 최적화된 프로세스는 샤딩 후 구역을 생성하는 것보다 적은 밸런서 오버헤드로 구역 샤딩을 더 빠르게 설정할 수 있도록 지원합니다.밸런서 는 최적화된 초기 청크 생성 및 배포 후 모든 청크 관리를 수행합니다.

초기 청크 배포를 위한 구역 및 구역 범위를 정의하는 예 는 비어 있거나 존재하지 않는 collection에 대한 구역 및 구역 범위 사전 정의를 참조하세요.

MongoDB는 복합 해시 인덱스에서 collection 샤딩을 지원합니다. MongoDB는 복합 해시 샤드 키에서 비어 있거나 존재하지 않는 collection을 샤딩할 때 최적화된 초기 청크 생성 및 배포를 수행할 수 있습니다.

복합 해시 샤드 키의 초기 청크 배포를 위한 구역 및 구역 범위를 정의하는 더 완전한 예시 는 비어 있거나 존재하지 않는 컬렉션에 대한 구역 및 구역 범위 사전 정의를 참조하세요.

updateZoneKeyRange 성공적으로 실행한 후 다음 밸런서 라운드에서 청크 마이그레이션이 있을 수 있습니다.

구역에 범위를 추가한 후에는 먼저 밸런서 를 실행해야 구역에 포함되는 범위의 청크를 해당 구역 내부의 샤드로 마이그레이션할 수 있습니다. 밸런싱이 완료될 때까지 샤드 클러스터에 대해 구성된 구역을 고려할 때 일부 청크가 잘못된 샤드에 있을 수 있습니다.

범위와 구역 간의 연결을 제거하면 제약 조건이 제거되어 청크가 해당 구역 내부의 샤드 범위에 포함되도록 유지됩니다. 다음 밸런서 라운드에서 밸런서는 이전에 해당 구역에 포함된 청크를 마이그레이션할 수 있습니다.

샤드 cluster에서 마이그레이션이 작동하는 방식에 대한 자세한 내용은 샤드 cluster 밸런서 설명서를 참조하세요.

구역 범위는 항상 하한 경계를 포함하고 상한 경계를 제외합니다.

컬렉션을 삭제하면 관련된 영역/태그 범위가 삭제됩니다.

이전 버전에서는 MongoDB가 삭제된 컬렉션에 대한 태그 연결을 제거하지 않았으며, 나중에 같은 이름으로 새 컬렉션을 만들면 이전 태그 연결이 새 컬렉션에 적용됩니다.

authentication 으로 실행되는 샤드 클러스터의 경우 다음 중 하나를 사용하여 인증해야 합니다.

  • config 데이터베이스의 다양한 컬렉션에 대해 지정된 작업이 포함된 권한을 가진 사용자입니다.

    또는,

  • cluster 리소스에 대한 가 enableSharding 포함된 권한을 가진 사용자(버전 4.2.2, 4.0.14, 3.6.16부터 사용 가능).

clusterAdmin 또는 clusterManager 기본 제공 역할에는 updateZoneKeyRange 발급에 적합한 권한이 있습니다. 자세한 내용은 역할 기반 액세스 제어 에 대한 설명서 페이지를 참조하세요.

샤드 키가 { a : 1 } 인 샤드 컬렉션 exampledb.collection 이 주어지면 다음 작업은 alpha 구역에 하한이 1 이고 상한이 10 인 범위를 생성합니다.

admin = db.getSiblingDB("admin")
admin.runCommand(
{
updateZoneKeyRange : "exampledb.collection",
min : { a : 1 },
max : { a : 10 },
zone : "alpha"
}
)

다음 작업은 nullzone 필드에 전달하여 이전에 생성된 범위를 제거합니다.

admin = db.getSiblingDB("admin")
admin.runCommand(
{
updateZoneKeyRange : "exampledb.collection",
min : { a : 1 },
max : { a : 10 },
zone : null
}
)

minmax 는 대상 범위의 경계와 정확히 일치해야 합니다. 다음 작업은 이전에 생성된 범위를 제거하려고 시도하지만 { a : 0 }min 바운드로 지정합니다.

admin = db.getSiblingDB("admin")
admin.runCommand(
{
updateZoneKeyRange : "exampledb.collection",
min : { a : 0 },
max : { a : 10 },
zone : null
}
)

{ a : 0 }{ a : 10 } 범위는 기존 범위를 포함하지만 정확히 일치하지 않으므로 updateZoneKeyRange 는 아무것도 제거하지 않습니다.

샤드 키가 { a : 1, b : 1 } 인 샤드된 컬렉션 exampledb.collection 이 주어지면 다음 작업은 { a: 1, b : 1 } 의 하한과 { a : 10, b : 10} 의 상한을 포함하는 범위를 생성하고 이를 alpha 구역과 연결합니다.

admin = db.getSiblingDB("admin")
admin.runCommand(
{
updateZoneKeyRange : "exampledb.collection",
min : { a : 1, b : 1 },
max : { a : 10, b : 10 },
zone : "alpha"
}
)
← unsetSharding

이 페이지의 내용