MongoDB-샤딩

샤딩은 여러 시스템에 걸쳐 데이터 레코드를 저장하는 프로세스이며 데이터 증가 요구를 충족하기위한 MongoDB의 접근 방식입니다. 데이터 크기가 증가함에 따라 단일 시스템으로는 데이터를 저장하거나 허용 가능한 읽기 및 쓰기 처리량을 제공하기에 충분하지 않을 수 있습니다. 샤딩은 수평 확장 문제를 해결합니다. 샤딩을 사용하면 데이터 증가와 읽기 및 쓰기 작업 요구를 지원하기 위해 더 많은 시스템을 추가 할 수 있습니다.

왜 샤딩인가?

  • 복제시 모든 쓰기는 마스터 노드로 이동합니다.

  • 지연 시간에 민감한 쿼리는 여전히 마스터로 이동합니다.

  • 단일 복제본 세트는 12 개의 노드로 제한됩니다.

  • 활성 데이터 세트가 크면 메모리가 충분히 클 수 없습니다.

  • 로컬 디스크가 충분히 크지 않습니다.

  • 수직 확장은 너무 비쌉니다.

MongoDB의 샤딩

다음 다이어그램은 샤딩 된 클러스터를 사용하는 MongoDB의 샤딩을 보여줍니다.

다음 다이어그램에는 세 가지 주요 구성 요소가 있습니다.

  • Shards− 샤드는 데이터를 저장하는 데 사용됩니다. 고 가용성 및 데이터 일관성을 제공합니다. 프로덕션 환경에서 각 샤드는 별도의 복제본 세트입니다.

  • Config Servers− 구성 서버는 클러스터의 메타 데이터를 저장합니다. 이 데이터에는 샤드에 대한 클러스터 데이터 세트의 매핑이 포함됩니다. 쿼리 라우터는이 메타 데이터를 사용하여 작업을 특정 샤드로 타겟팅합니다. 프로덕션 환경에서 분할 된 클러스터에는 정확히 3 개의 구성 서버가 있습니다.

  • Query Routers− 쿼리 라우터는 기본적으로 mongo 인스턴스이며 클라이언트 애플리케이션과의 인터페이스 및 적절한 샤드에 대한 직접 작업입니다. 쿼리 라우터는 작업을 처리하고 샤드 대상으로 지정한 다음 결과를 클라이언트에 반환합니다. 분할 된 클러스터에는 클라이언트 요청로드를 분할하기 위해 둘 이상의 쿼리 라우터가 포함될 수 있습니다. 클라이언트는 하나의 쿼리 라우터에 요청을 보냅니다. 일반적으로 분할 된 클러스터에는 많은 쿼리 라우터가 있습니다.