11-19 08:26
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[MongoDB] Sharding / Introduction 본문

Data Science/MongoDB

[MongoDB] Sharding / Introduction

cinema4dr12 2014. 4. 13. 16:12

by Geol Choi | 


샤딩(Sharding)이란?

  • 데이터의 스케일 아웃(Scale Out)을 하는 방법으로 여러 대의 머쉰을 통해 데이터를 분산하는 것을 의미한다.
  • 즉, 데이터를 여러 그룹으로 쪼개어 이 그룹들을 각기 다른 머쉰에 저장하는 처리 방법이다.
  • 파티셔닝(Partitioning)이라고도 한다.
  • 늘어나는 데이터와 이에 대한 처리를 위해 더욱 강력하고 보다 큰 저장공간을 제공하는 다른 머쉰으로 교체하는 대신 여러 대의 머쉰을 추가하는 것이다.


MongoDB의 자동 샤딩

대부분의 데이터베이스 소프트웨어는 수동 샤딩 도구를 제공한다. 수동 샤딩의 경우 클러스터의 노드를 추가하거나 삭제 시 또는 데이터 분산 및 처리량 분산 등의 경우 관리에 어려움이 있을 수 있다.

MongoDB는 사용자의 이러한 부담을 줄여주기 위해 자동 샤딩 기능을 제공한다.

MongoDB에서의 샤딩에 기본 개념은 컬렉션을 더 작은 조각(Chunk)의 그룹으로 분해하고, 분해된 각 데이터 조각들에 대한 저장 및 처리는 각각의 샤드가 담당하게 된다. 역으로, 각 샤드에 분산된 데이터를 모두 모으면 전체 데이터 세트가 된다.

MongoDB를 이용하는 어플리케이션의 입장에서 어느 샤드에 어느 데이터가 저장되어 있는지 알 필요가 없다. 이 부분은 오직 MongoDB만이 알고 있으며, MongoDB의 mongos가 담당하고 있다. (이는 마치, 우리가 라디오를 켜기 위해 전자회로의 원리를 알 필요가 없는 것과 같다. 라디오를 켜기 위해 단지 우리는 라디오의 전원 버튼만 누를 줄 알면 된다!)

mongos는 샤드들에 대한 라우팅 역할을 하며 어떤 데이터가 어느 샤드에 있는지 알고 있으며 요청된 작업을 적절한 샤드에 연결시켜 준다.

다음 그림은 비-샤드(Non-shard) 개념과 샤드 개념을 설명하기 위한 그림이다.

      

             [그림 1.] 비-샤드 방식에서의 Mongod와 Client 어플리케이션 간 관계.


             [그림 2.] 샤드 방식에서의 Mongod와 Client 어플리케이션 간 관계.


샤딩을 해야하는 경우

  1. 현재 머쉰의 저장 공간이 모자라는 경우
  2. 단일 머쉰의 mongod를 활용할 때보다 데이터를 빠르게 처리해야 하는 경우
  3. 데이터 처리 성능을 향상하기 위해 인메모리 데이터를 늘려야 하는 경우

비-샤딩에서 필요할 경우 샤딩으로 전환할 수 있다.

Comments