ProgramingTip

Mongo에서 샤딩과 복제의 차이점은 무엇입니까?

bestdevel 2020. 12. 6. 21:52
반응형

Mongo에서 샤딩과 복제의 차이점은 무엇입니까?


샤딩이 실제로 달성하려는 이점을 놓치지 않는 한 복제는 샤딩보다 훨씬 간단 해 보입니다. 둘 다 수평 확장을 제공하지 않습니까?


MongoDB 확장의 맥락에서 :

  • 복제 는 데이터의 추가 사본을 생성하고 다른 노드로 자동 장애 조치를 허용합니다. 복제는 강력한 경우 최신이 아닌 데이터를 읽을 수있는 경우 읽기의 수평 확장에 도움이 될 수 있습니다.

  • 샤딩을 사용하면 샤드 키를 사용하여 여러 서버에 데이터를 분할하여 데이터 쓰기를 수평 적으로 확장 할 수 있습니다. 좋은 샤드 키 선택하는 것이 중요합니다. 예를 들어, 샤드 키를 잘못 선택하면 단일 샤드에만 기록되는 "핫스팟"이 데이터 수 있습니다.

분할 된 환경은 MongoDB가 이제 분할 된 데이터 및 요청 분산을 관리해야하기 때문에 합니다. 추가 구성 및 라우팅 프로세스가 추가됩니다.

복제와 샤딩은 일반적으로 결합되어 각 샤드가 보고서 세트에서 지원되는 샤딩 된 클러스터 를 생성합니다 .

클라이언트 애플리케이션 관점에서 특히 복제 / 샤딩 상호 작용과 관련하여 몇 가지 제어 권한이 있습니다.


복제는 대부분의 경우 마스터 / 슬레이브 설정이며 데이터는 백업 멤버에 동기화되고 기본이 실패하면 하나가 할 수 있습니다. 합리적으로 간단한 도구입니다. 멤버십을 추가하여 읽기를 확장 할 수 있습니다. 약간 복잡하지만 일부 앱에서는 매우 잘 작동합니다.

샤딩은 일반적으로 복제 위에 위치합니다. MongoDB의 "샤드"는 "라우터"라는 것이 존재하는 복제 세트입니다. 애플리케이션은 라우터에 연결하고 쿼리를 실행하며 어떤 세트 세트 (샤드)를 많은지 결정합니다. 처리 할 라우터 및 구성 서버가 있기 때문에 많은 세트보다 훨씬 더 복잡합니다 (이는 데이터가 어디에 저장 추적).

Mongo를 수평으로 확장 분할합니다. 10gen은 라우터 / 구성 서버 설정 자동 샤딩을 호출하는 것을 좋아합니다. 앱이 어떤 DB에 쓸 것인지 결정하는 더 많은 게토 형태의 샤딩을 수행 할 수 있습니다.


하드 디스크에 훌륭한 음악 컬렉션이 안심하면 음악을 출시 연도에 따라 순서로 다른 폴더에 저장됩니다. 드라이브에 장애가 발생하면 컬렉션이 감소 될 염려가 있습니다. 따라서 전체 컬렉션을 유지하면서 전체 컬렉션을 복사합니다.

샤딩 >> 다른 폴더에 음악 파일 보관

복제 >> 컬렉션을 다른 드라이브에 동기화


샤딩

샤딩은 여러 서버간에 관리 컬렉션을 분할하는 기술입니다. 분할 할 때 여러 mongod서버를 배포 합니다. 그리고 앞에는 mongos라우터가 있습니다. 응용 프로그램은이 라우터와 통신합니다. 이 라우터는 다양한 서버 인 mongods. 응용 프로그램과 mongos는 일반적으로 같은 서버에 함께 배치됩니다. mongos동일한 시스템에서 여러 서비스를 사용할 수 있습니다 . 또한 각 서버에 단일 세트를 유지하는 대신 여러 세트 mongod(함께 복제 세트 라고 함 ) 를 유지하는 것이 좋습니다 mongod. 보고 세트는 여러 인스턴스에서 데이터를 동기화 상태로 유지하는 인스턴스 중 하나가 다운 되더라도 데이터가 없습니다. 어디에서나 각 세트는 샤드 로 볼 수 있습니다.. 애플리케이션에 투명하며, MongoDB샤드를 선택 하는 방법 샤드 키를 선택하는 것 입니다.

MongoDB 샤딩

student수집을 위해 우리가 stdt_id샤드 키로 가지고 복합 키일 수 있는 가정 합니다. 그리고 mongos서버는 범위 기반 시스템입니다. 따라서 stdt_id우리가 샤드 키로 보내는 것을 -based으로 올바른 mongod인스턴스로 요청 고객을 보냅니다 .

개발자로서 진정으로 알아야 할 것은 무엇입니까?

  • insert 샤드 키를 포함해야하는 경우 다중 분할 샤드 키를 포함해야합니다.
  • 컬렉션 자체에 샤드 키가 무엇인지 이해해야합니다.
  • 을 위해 update,, remove경우 find- mongos파편 키를 제공하지-컬렉션을 포함하는 모든 다른 파편 요청을 방송해야 할 것입니다.
  • 에 대한 update-전체 샤드 키를 지정하지 브로드 캐스트 할 수 있도록 다중해야 업데이트합니다.

샤딩 또는 복제에 대해 생각할 때마다 작성자 / 업데이트 작업의 맥락에서 생각해야합니다. 쓰기를 확장 할 필요가있어 복제가 훨씬 더 간단하기 쉽습니다.

반면에 대부분 업데이트 / 쓰기 작업을 수행하면 어느 시점에서 쓰기 병목 현상이 발생합니다. 쓰기 요청이 오면 Mongo는 다른 쓰기 요청을 차단합니다. 첫 번째 요청이 완료 될 때까지 차단됩니다. 이 쓰기를 확장하고 비용을 지불해야합니다.

참고 URL : https://stackoverflow.com/questions/11571273/in-mongo-what-is-the-difference-between-sharding-and-replication

반응형