샤드 컬렉션에는 샤드 키 지원하는 인덱스 필요합니다. 인덱스 는 샤드 키 의 인덱스 이거나샤드 키 인덱스 의 접두사인 복합 인덱스 일 수 있습니다.
컬렉션이 비어 있으면
sh.shardCollection()은 인덱스가 아직 존재하지 않는 경우 샤드 키에 인덱스를 생성합니다.Collection이 비어 있지 않은 경우
sh.shardCollection()를 사용하기 전에 인덱스를 먼저 만들어야 합니다.sh.reshardCollection()를 사용하여 컬렉션 리샤딩하는 경우 새 샤드 키에 인덱스 미리 생성할 필요가 없습니다. 리샤딩 작업은 필요한 인덱스를 자동으로 빌드합니다. 자세한 학습 은 컬렉션 리샤딩 절차를 참조하세요.
인덱스가 샤드 키를 지원하는 유일한 숨겨지지 않은 인덱스인 경우, 인덱스를 제거하거나 숨길 수 없습니다.
MongoDB 7.0.3, 6.0.12, 5.0.22부터는 해시 샤드 키에 대한 인덱스를 제거할 수 있습니다. 자세한 내용은 해시 샤드 키 인덱스 제거를 참조하세요.
Unique Indexes
MongoDB 범위 지정 샤드 키 인덱스 에 고유성 제약 조건을 시행하다 할 수 있습니다. 샤드 키 에 고유 인덱스 를 사용하면 샤드 키 의 개별 구성 요소가 아닌 전체 키 조합에 고유성 을 시행합니다.
범위가 지정된 샤딩된 컬렉션의 경우 다음 인덱스만 고유할 수 있습니다.
중요
_id 필드가 샤드 키가 아닐 경우 샤딩된 클러스터는 클러스터 전역의 _id 필드에 고유성 제약 조건을 적용하지 않습니다.
_id 필드 샤드 키 아닌 경우 고유성 제약 조건은 문서 저장하는 샤드 에만 적용됩니다. 즉, 두 개 이상의 문서가 서로 다른 샤드에 있는 경우 동일한 _id 값을 가질 수 있습니다.
예시 를 들어, 두 개의 샤드 A와 B에 걸쳐 있는 샤드 키 {x:
1} 이 있는 샤딩된 컬렉션 생각해 보겠습니다. _id 키는 샤드 키 아니므로 컬렉션 샤드 A에 _id 값 1 을 가진 문서 가질 수 있습니다. 샤드 B에 _id 값이 1 인 다른 문서 있습니다.
_id 필드 샤드 키 아닌 경우, MongoDB 애플리케이션이 _id 필드 채우기 위해 고유 식별자를 사용하여 샤드 전체에서 _id 값의 고유성을 보장할 것으로 예시 합니다.
고유한 인덱스 제약 조건은 다음을 의미합니다.
샤딩할 컬렉션 의 경우, 컬렉션 여러 개의 고유 인덱스가 있는 경우 샤드 키 모든 고유 인덱스의 접두사가 아닌 이상 컬렉션 샤드 할 수 없습니다.
이미 샤딩된 컬렉션 의 경우, 샤드 키 접두사로 포함되어 있지 않으면 다른 필드에 고유 인덱스를 생성할 수 없습니다.
고유 인덱스는 인덱스 필드가 누락된 문서에 대해 null 값을 저장합니다. 즉, 누락된 색인 필드는
null색인 키 값의 다른 인스턴스로 처리됩니다. 자세한 내용은 고유 단일 필드 인덱스의 문서 필드 누락을 참조하세요.
샤드 키 값에 고유성을 적용하려면 unique 매개변수를 true로 sh.shardCollection() 메서드에 전달합니다.
컬렉션이 비어 있으면
sh.shardCollection()은 해당 인덱스가 아직 존재하지 않는 경우 샤드 키에 고유 인덱스를 생성합니다.Collection이 비어 있지 않은 경우
sh.shardCollection()를 사용하기 전에 인덱스를 먼저 만들어야 합니다.
샤드 키가 접두사인 고유한 복합 인덱스를 가질 수 있지만 unique 매개변수를 사용하는 경우 컬렉션은 샤드 키에 있는 고유한 인덱스를 보유해야 합니다.
해시 인덱스에는 고유한 제약 조건을 지정할 수 없습니다.
샤드 키 가 아닌 필드 에서 고유성을 유지하려면 임의 필드에 대한 고유 제약 조건을 참조하세요.