2012-07-11 4 views
3

MongoDB를 처음 사용하고 샤딩에 대한 기본적인 지식을 가지고 있습니다. 그러나 직접 데이터 분할을 제어 할 수 있는지 궁금합니다. 예를 들어, 기록의 일부가 특정 샤드에 저장됩니까? 이것은 레일 앱과 함께 사용됩니다.MongoDB에서 데이터 셔링 제어

답변

5

당신은 자동 밸런싱을 중지 균형을 해제 할 수 있습니다

sh.setBalancerState(false) 

당신은 당신이 당신을 분할하는 키의 범위를 알고있는 경우에 할 수도 presplit 원하는 서버가 PreSplitting example을 볼 수있는 데이터가 다양하다. 샤드의 관리는 레일스 애플리케이션을 통하지 않고 자바 스크립트 셸을 통해 수행됩니다.

무료로 MMS과 같은 모니터링을 사용하면 샤드가 더 많은로드 (뜨거워 짐)를 얻지 못하여 기본적으로 자동 균형 조정이 이루어지는 것이므로주의해야합니다.

3

조각 결정은 복잡한 결정이며 많은 생각을해야합니다.

샤딩에 대해 알아야 할 것이 많습니다. 그 중 많은 부분이 분명하지 않습니다. 나는 다음 링크에서 정보를 검토하는 게 좋을 것 : 파편 클러스터의 맥락에서

을, 청크는 샤드 키의 연속 범위 특정 샤드에 지정된 값. 기본적으로 chunks은 64 메가 바이트입니다 (위에서 수정 한 경우 제외). 설정된 청크 크기를 초과하여 커지면 mongos는 청크를 두 개의 청크로 나눕니다. MongoDB 덩어리는 논리적이고 그 안에있는 데이터는 물리적으로 함께 있지 않습니다.

그러나 분산기가 청크를 움직이는 것으로 언급했지만 manually을 사용할 수 있습니다. balancer은 각 샤드의 청크 수 사이에 큰 차이 (최소 8 개)가있는 경우 청크 마이그레이션을 다시 요구하고 결정하도록 결정할 것입니다. 청크의 실제 이동은 "From"및 "To"Shard간에 조정되며이 작업이 끝나면 "From"샤드에서 원래 청크가 제거되고 구성 서버에 알려줍니다.

아주 많은 사람들이 사전 분할을했기 때문에 마이그레이션에 도움이됩니다. 자세한 내용은 here을 참조하십시오.

두 개의 조각 사이에 분할 된 문서를 보려면 첫 번째 조각에 여러 개의 청크를 채우기에 충분한 문서를 삽입해야합니다. 기본 청크 크기를 변경하지 않은 경우 데이터를 두 번째 청크로 마이그레이션하려면 최소 512MB의 데이터를 삽입해야합니다. 이것을 테스트하는 것이 좋습니다. 청크 크기를 1MB로 설정하고 10MB의 데이터를 삽입하여이 작업을 수행 할 수 있습니다. Here은이를 테스트하는 방법의 예입니다.

-2

mongo DB가 자동으로 수행하는 경우 사용자가 직접 데이터를 분할하려는 이유 mongos가 모든 CRUD 작업에 대한 호출을 데이터가있는 위치로 라우팅하도록 레일스 응용 프로그램 계층을 mongos 인스턴스로 업그레이드 할 수 있습니다. 상주합니다. 이는 구성 서버를 사용하여 수행됩니다.

관련 문제