샤딩된 클러스터의 청크 분할
기본적으로 MongoDB는 청크를 데이터 마이그레이션 시에만 잠재적으로 분할합니다. 그러나 클러스터에 많은 양의 데이터가 있고 청크가 매우 적은 경우, 기존 데이터를 사용하여 클러스터를 배포한 후와 같은 경우에 청크를 수동으로 분할할 수 있습니다.
청크를 수동으로 분할하려면 middle
또는 find
필드와 함께 split
명령을 사용합니다. mongosh
는 헬퍼 메서드 sh.splitFind()
및 sh.splitAt()
을 제공합니다.
splitFind()
는 이 쿼리와 일치하는 첫 번째 반환 문서가 포함된 청크를 동일한 크기의 청크 두 개로 분할합니다. 샤드 컬렉션의 전체 네임스페이스(예: '<database>.<collection>
')를 splitFind()
로 지정해야 합니다. splitFind()
의 쿼리는 샤드 키를 사용할 필요가 없지만, 대부분의 경우에 샤드 키를 사용하는 것이 합리적입니다.
예시
다음 명령은 records
데이터베이스의 people
컬렉션에 있는 zipcode
필드에 대한 63109
값을 포함하는 청크를 분할합니다.
sh.splitFind( "records.people", { "zipcode": "63109" } )
splitAt()
을 사용하여 청크를 둘로 분할하고, 쿼리된 문서를 새 청크의 하한으로 사용합니다:
예시
다음 명령은 records
데이터베이스의 people
컬렉션에 있는 zipcode
필드에 대한 63109
값이 포함된 청크를 분할합니다.
sh.splitAt( "records.people", { "zipcode": "63109" } )
참고
splitAt()
: 청크를 반드시 동일한 크기의 두 개 청크로 분할하지는 않습니다. 분할은 해당 문서가 청크의 어디에 있는지에 관계없이 쿼리와 일치하는 문서 위치에서 발생합니다.