샤딩된 클러스터의 운영 제한 사항
이 페이지의 내용
샤딩 운영 제한
샤드 환경에서 사용할 수 없는 작업
$where
는 $where
함수에서 db
객체에 대한 참조를 허용하지 않습니다. 비 샤드형 컬렉션에서는 이런 일이 흔하지 않습니다.
geoSearch
명령은 샤딩된 환경에서는 지원되지 않습니다.
MongoDB 5.0 이전까지는 $lookup
단계의 from
파라미터에 샤드된 컬렉션을 지정할 수 없습니다.
샤드된 컬렉션의 단일 문서 수정 작업
multi: false
또는 justOne
옵션을 지정하는 분할된 컬렉션에 대해 updateOne()
및 deleteOne()
작업 사용 방법:
하나의 샤드만 대상으로 하는 경우 쿼리 사양에서 부분 샤드 키를 사용할 수 있습니다.
쿼리 사양에서 샤드 키 또는
_id
필드를 제공할 수 있습니다.
findOneAndUpdate()
를 샤드 컬렉션과 함께 사용하려면 쿼리 필터에 샤드 키에 대한 동일성 조건이 포함되어 키와 값을 이러한 형식 중 하나로 비교해야 합니다.
{ key: value } { key: { $eq: value } }
샤드된 컬렉션의 고유 인덱스
고유 인덱스에 전체 샤드 키가 인덱스의 접두사로 포함된 경우를 제외하고, MongoDB는 샤드 간 고유 인덱스를 지원하지 않습니다. 이러한 상황에서 MongoDB는 단일 필드가 아닌 전체 키에 고유성을 적용합니다.
기존 컬렉션 데이터 크기 샤딩
기존 컬렉션은 크기가 특정 제한을 초과하지 않는 경우에만 샤딩할 수 있습니다. 이러한 제한은 모든 샤드 키 값의 평균 크기와 구성된 청크 크기를 기반으로 추정할 수 있습니다.
중요
이러한 제한은 초기 샤딩 작업에만 적용됩니다. 샤딩을 성공적으로 활성화한 후에는 샤드 컬렉션을 원하는 크기로 늘릴 수 있습니다.
MongoDB는 컬렉션의 문서를 배포하여 생성 시 각 청크가 절반이 되도록 합니다. 다음 공식을 사용하여 이론적 최대 컬렉션 크기를 계산합니다.
maxSplits = 16777216 (bytes) / <average size of shard key values in bytes> maxCollectionSize (MB) = maxSplits * (chunkSize / 2)
참고
최대 BSON 문서 크기는 16MB 또는 16777216
바이트입니다.
모든 전환은 기본2 배율을 사용해야 합니다. 1024 킬로바이트 = 1 메가바이트.
maxCollectionSize
이 대상 컬렉션보다 작거나 거의 같은 경우 청크 크기를 늘려 초기 샤딩이 성공할 수 있도록 합니다. 계산 결과가 대상 컬렉션 크기에 너무 '가까운'지 확실하지 않은 경우 청크 크기를 늘리는 것이 좋습니다.
초기 샤딩에 성공한 후에는 필요에 따라 청크 크기를 줄일 수 있습니다. 나중에 청크 크기를 줄이는 경우 모든 청크가 새 크기로 분할되는 데 시간이 걸릴 수 있습니다. 청크 크기 수정에 대한 지침 은 샤드 클러스터에서 청크 크기 수정을 참조하세요.
이 표는 위에서 설명한 공식을 사용하여 대략적인 최대 컬렉션 크기를 보여줍니다.
샤드 키 값의 평균 크기 | 512 바이트 | 256 바이트 | 128 바이트 | 64 바이트 |
---|---|---|---|---|
최대 분할 수 | 32,768 | 65,536 | 131,072 | 262,144 |
최대 컬렉션 크기(64 MB 청크 크기) | 1 TB | 2 TB | 4 TB | 8 TB |
최대 컬렉션 크기(128 MB 청크 크기) | 2 TB | 4 TB | 8 TB | 16 TB |
최대 컬렉션 크기(256 MB 청크 크기) | 4 TB | 8 TB | 16 TB | 32 TB |