복붙노트

[MONGODB] 몽고에서 샤딩 및 복제의 차이점은 무엇입니까?

MONGODB

몽고에서 샤딩 및 복제의 차이점은 무엇입니까?

복제는 내가 샤딩 실제로 달성하려고하는 것의 장점을 잃었하지 않는 한, 샤딩보다 훨씬 간단하게 될 것으로 보인다. 둘 다 수평 확장을 제공하지 않습니다?

해결법

  1. ==============================

    1.MongoDB를 스케일링의 맥락에서 :

    MongoDB를 스케일링의 맥락에서 :

    추가 구성 및 라우팅 프로세스가 이러한 측면을 관리하기 위해 추가 - MongoDB를 지금 데이터 요청 파편 사이를 분산 관리해야하기 때문에 분산됩니다 환경은 복잡성을 추가 않습니다.

    각각의 파편이 복제 세트에 의해 지원되는 분산됩니다 클러스터 생성 및 복제는 일반적 샤딩 결합된다.

    보기의 클라이언트 응용 프로그램의 관점에서 당신은 또한 일부 복제 / 샤딩의 상호 작용과 관련 제어, 특히있다 :

  2. ==============================

    2.복제 데이터는 백업 멤버에 동기화 및 기본 경우 그 중 하나가 그 자리를 차지할 수 실패, 주로 기존의 마스터 / 슬레이브 설정입니다. 그것은 합리적으로 간단한 도구입니다. 당신이 복제 세트 구성원을 추가하여 읽어 확장 할 수 있지만, 그것은 주로, 중복에 대한 의미입니다. 즉 복잡 조금,하지만 일부 응용 프로그램에 대해 매우 잘 작동합니다.

    복제 데이터는 백업 멤버에 동기화 및 기본 경우 그 중 하나가 그 자리를 차지할 수 실패, 주로 기존의 마스터 / 슬레이브 설정입니다. 그것은 합리적으로 간단한 도구입니다. 당신이 복제 세트 구성원을 추가하여 읽어 확장 할 수 있지만, 그것은 주로, 중복에 대한 의미입니다. 즉 복잡 조금,하지만 일부 응용 프로그램에 대해 매우 잘 작동합니다.

    샤딩은 일반적으로 복제 위에 앉아있다. MongoDB의에서 "파편"는 "라우터"그들의 앞에이라고 뭔가 단지 복제 집합입니다. 귀하의 응용 프로그램은 라우터, 문제 쿼리에 연결, 그것은에게 물건을 전달하는 복제 세트 (파편) 결정합니다. 당신이 (데이터가 어디에 저장되는 이러한 킵 트랙)를 처리 할 수있는 라우터와 설정 서버가 있기 때문에 훨씬 더 복잡한 하나의 복제 세트 이상입니다.

    당신은 수평으로 몽고를 확장하려는 경우, 당신은 샤딩 것입니다. 10gen 라우터 / 설정 서버 설정 자동 샤딩 전화를 좋아한다. 앱이 잘으로 쓰기에있는 DB를 결정하는이 곳은 샤딩의 더 빈민가 양식을 할 수도 있습니다.

  3. ==============================

    3.하드 디스크에 좋은 음악 컬렉션을 고려, 당신은 다른 폴더에 출시 연도를 기준으로 논리적 순서에 음악을 저장합니다. 당신은 드라이브가 실패하면 컬렉션이 손실 될 수 있음을 우려하고있다. 당신 그래서 새 디스크를 얻을 가끔 같은 폴더 구조를 유지하는 전체 컬렉션을 복사합니다.

    하드 디스크에 좋은 음악 컬렉션을 고려, 당신은 다른 폴더에 출시 연도를 기준으로 논리적 순서에 음악을 저장합니다. 당신은 드라이브가 실패하면 컬렉션이 손실 될 수 있음을 우려하고있다. 당신 그래서 새 디스크를 얻을 가끔 같은 폴더 구조를 유지하는 전체 컬렉션을 복사합니다.

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

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

  4. ==============================

    4.샤딩은 여러 서버 사이에 대규모 컬렉션까지 분할하는 기술입니다. 우리가 샤딩 때, 우리는 여러 mongod 서버를 배포합니다. 전면 라우터이다 mongos있다. 응용 프로그램이 라우터에 이야기. 이 라우터는 다양한 서버의 mongods 회담. 응용 프로그램과 mongos는 일반적으로 공동 위치한 동일한 서버에 있습니다. 우리는 동일한 시스템에서 실행되는 여러 mongos 서비스를 할 수 있습니다. 또한 대신 각 서버에 하나의 mongod의 여러 mongods (함께라는 복제 세트)의 집합을 유지하는 것이 좋습니다. 복제본 세트는 그들 중 하나가 다운되면 그래서, 우리가 어떤 데이터가 손실되지 않습니다 여러 인스턴스에서 동기화 된 데이터를 유지합니다. 논리적으로, 각 복제 세트는 파편으로 볼 수있다. 그것은 응용 프로그램에 투명한, 파편으로가는 길 MongoDB를의 선택한다면 우리가 샤드 키를 선택합니다.

    샤딩은 여러 서버 사이에 대규모 컬렉션까지 분할하는 기술입니다. 우리가 샤딩 때, 우리는 여러 mongod 서버를 배포합니다. 전면 라우터이다 mongos있다. 응용 프로그램이 라우터에 이야기. 이 라우터는 다양한 서버의 mongods 회담. 응용 프로그램과 mongos는 일반적으로 공동 위치한 동일한 서버에 있습니다. 우리는 동일한 시스템에서 실행되는 여러 mongos 서비스를 할 수 있습니다. 또한 대신 각 서버에 하나의 mongod의 여러 mongods (함께라는 복제 세트)의 집합을 유지하는 것이 좋습니다. 복제본 세트는 그들 중 하나가 다운되면 그래서, 우리가 어떤 데이터가 손실되지 않습니다 여러 인스턴스에서 동기화 된 데이터를 유지합니다. 논리적으로, 각 복제 세트는 파편으로 볼 수있다. 그것은 응용 프로그램에 투명한, 파편으로가는 길 MongoDB를의 선택한다면 우리가 샤드 키를 선택합니다.

    학생 수집을 위해 우리는 샤드 키로 stdt_id거나이 복합 열쇠가 될 수있다, 가정합니다. 그리고 mongos 서버, 그것은 범위 기반 시스템입니다. 그래서 우리는 샤드 키로 전송하는 stdt_id에 따라, 그것은 바로 mongod 인스턴스에 요청을 보내드립니다.

    그래서, 우리는 정말 개발자로서 알아야합니까?

  5. ==============================

    5.당신은, 당신은 작가 / 업데이트 작업의 맥락에서 생각하는 샤딩 또는 복제에 대한있는 거 생각을 필요로 할 때마다. 당신은 규모에 필요하지 않은 경우가 매우 간단, 당신을 위해 좋은 선택이기 때문에, 다음 복제를 기록합니다.

    당신은, 당신은 작가 / 업데이트 작업의 맥락에서 생각하는 샤딩 또는 복제에 대한있는 거 생각을 필요로 할 때마다. 당신은 규모에 필요하지 않은 경우가 매우 간단, 당신을 위해 좋은 선택이기 때문에, 다음 복제를 기록합니다.

    당신은 대부분의 업데이트를 워크로드 다른 한편, 만약 / 다음 어떤 시점에서 당신이 쓰기 병목 현상을 칠 것이다 기록합니다. 쓰기 요청이 몽고 블록을 제공하는 경우 다른 쓰기가 요청합니다. 첫 번째 요청까지 그 쓰기 요청 블록이 수행됩니다. 이 쓰기를 확장하려면 다음을 병렬화 원하는 경우에 당신은 샤딩을 구현해야합니다.

  6. from https://stackoverflow.com/questions/11571273/in-mongo-what-is-the-difference-between-sharding-and-replication by cc-by-sa and MIT license