Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

샤드 키 인덱스

샤드 컬렉션에는 샤드 키 지원하는 인덱스 필요합니다. 인덱스 는 샤드 키 의 인덱스 이거나샤드 키 인덱스 의 접두사인 복합 인덱스 일 수 있습니다.

인덱스가 샤드 키를 지원하는 유일한 숨겨지지 않은 인덱스인 경우, 인덱스를 제거하거나 숨길 수 없습니다.

MongoDB 7.0.3, 6.0.12, 5.0.22부터는 해시 샤드 키에 대한 인덱스를 제거할 수 있습니다. 자세한 내용은 해시 샤드 키 인덱스 제거를 참조하세요.

MongoDB 범위 지정 샤드 키 인덱스 에 고유성 제약 조건을 시행하다 할 수 있습니다. 샤드 키 에 고유 인덱스 를 사용하면 샤드 키 의 개별 구성 요소가 아닌 전체 키 조합에 고유성 을 시행합니다.

범위가 지정된 샤딩된 컬렉션의 경우 다음 인덱스만 고유할 수 있습니다.

  • 인덱스가 될 수 있습니다.

  • 샤드 키가 접두사복합 인덱스

  • _id 기본값 인덱스; 그러나 _id 인덱스 필드 _id 샤드 키 아닌 경우에만 샤드 당 고유성 제약 조건을 적용합니다.

중요

_id 필드가 샤드 키가 아닐 경우 샤딩된 클러스터는 클러스터 전역의 _id 필드에 고유성 제약 조건을 적용하지 않습니다.

_id 필드 샤드 키 아닌 경우 고유성 제약 조건은 문서 저장하는 샤드 에만 적용됩니다. 즉, 두 개 이상의 문서가 서로 다른 샤드에 있는 경우 동일한 _id 값을 가질 수 있습니다.

예시 를 들어, 두 개의 샤드 A와 B에 걸쳐 있는 샤드 키 {x: 1} 이 있는 샤딩된 컬렉션 생각해 보겠습니다. _id 키는 샤드 키 아니므로 컬렉션 샤드 A에 _id1 을 가진 문서 가질 수 있습니다. 샤드 B에 _id 값이 1 인 다른 문서 있습니다.

_id 필드 샤드 키 아닌 경우, MongoDB 애플리케이션이 _id 필드 채우기 위해 고유 식별자를 사용하여 샤드 전체에서 _id 값의 고유성을 보장할 것으로 예시 합니다.

고유한 인덱스 제약 조건은 다음을 의미합니다.

  • 샤딩할 컬렉션 의 경우, 컬렉션 여러 개의 고유 인덱스가 있는 경우 샤드 키 모든 고유 인덱스의 접두사가 아닌 이상 컬렉션 샤드 할 수 없습니다.

  • 이미 샤딩된 컬렉션 의 경우, 샤드 키 접두사로 포함되어 있지 않으면 다른 필드에 고유 인덱스를 생성할 수 없습니다.

  • 고유 인덱스는 인덱스 필드가 누락된 문서에 대해 null 값을 저장합니다. 즉, 누락된 색인 필드는 null 색인 키 값의 다른 인스턴스로 처리됩니다. 자세한 내용은 고유 단일 필드 인덱스의 문서 필드 누락을 참조하세요.

샤드 키 값에 고유성을 적용하려면 unique 매개변수를 truesh.shardCollection() 메서드에 전달합니다.

  • 컬렉션이 비어 있으면 sh.shardCollection()은 해당 인덱스가 아직 존재하지 않는 경우 샤드 키에 고유 인덱스를 생성합니다.

  • Collection이 비어 있지 않은 경우 sh.shardCollection()를 사용하기 전에 인덱스를 먼저 만들어야 합니다.

샤드 키가 접두사인 고유한 복합 인덱스를 가질 수 있지만 unique 매개변수를 사용하는 경우 컬렉션은 샤드 키에 있는 고유한 인덱스를 보유해야 합니다.

해시 인덱스에는 고유한 제약 조건을 지정할 수 없습니다.

샤드 키 가 아닌 필드 에서 고유성을 유지하려면 임의 필드에 대한 고유 제약 조건을 참조하세요.

돌아가기

샤드 키

이 페이지의 내용