샤딩(Sharding) 이란?

서버를 여러 개 두고 데이터를 여러 부분(Chunk)으로 나누어 분산하여 저장해놓고, 해당 데이터가 필요할 때마다 I/O를 분산 처리하여 I/O 효율을 높이는 방식을 말한다.

 

샤딩의 개념

 

* 복제(Replication)와는 엄연히 목적이 다르다. 복제는 단순히 데이터를 복사하여 여러 서버에 두어, HA(High Availability, 고가용성)를 위한 솔루션에 해당하고, 샤딩(Sharding)은 한 데이터를 여러 서버로 잘게 나누어 저장하고 처리함으로써 Horizontal Scaling(수평 확장) 을 쉽게 하는 데에 목적이 있다.

 

** Horizontal Scaling(수평 확장) : 데이터 셋을 여러 서버로 나누고, 각 서버 인스턴스마다 DB 로드를 분산하여 처리하도록 하는 스케일링 방식. 과도하게 쓰면 아키텍처의 복잡성을 증가시키기 때문에 무조건적으로 좋은 방법은 아니다.

 

*** Vertical Scaling(수직 확장) : 단일 서버의 하드웨어 기능(CPU, RAM, 스토리지 용량 등의 하드웨어 스펙)을 향상시키는 전통적인 방법. 기술적 한계와 비용 제약이 필연적으로 생긴다.


MongoDB 에서의 샤딩을 위한 서버 아키텍처 - Sharded Cluster

Sharded Cluster 아키텍처 다이어그램 / 출처: tmjb.tistory.com/39

MongoDB에서 샤딩을 구현하려면 총 3종류의 서버가 반드시 필요하다. 이들에 대해 우선적으로 알아보자!

 

Config Servers

- Sharded Cluster의 메타 데이터, Configuration 등을 저장하는 서버.

- 클러스터 전체 구조를 구성하는 데에 있어 핵심 정보를 담고 있기 때문에, 대부분 Replica Set으로 두 개 이상의 노드를 두는 것을 권장한다.

 

 

Mongos (Router)

- 다이어그램에 표현되어 있듯이 Router, 즉, 중개자 역할을 한다. 어플리케이션 서버와 Shard Cluster 간의 인터페이스를 제공하며, 쿼리 라우터의 역할도 수행한다. (MongoDB는 특정 Shard에 접속하여 직접적으로 DB에 엑세스할 수 없다.)

- Config Server의 정보를 기반으로 Data Chunk의 위치를 찾아가는 역할을 수행하며, 이때 Config Server의 메타 데이터에 대한 캐싱도 수행한다.

- Sharded Cluster에서 최소한 1개 이상의 Mongos 서버 존재해야 한다.

 

Shard

- 실제적으로 데이터가 저장되는 저장소의 역할을 한다.

- 분산 처리가 샤딩의 목적이므로, Sharded Cluster에서 최소한 2개 이상의 Shard 서버가 존재해야 한다. 또한 각 샤드마다 Replica Set으로 구현하는 것도 가능하다.


Linux (CentOS 7) 에서 MongoDB Sharding Cluster를 구축하려면 아래 링크로 들어가보자!

https://co-no.tistory.com/128


참조

https://tmjb.tistory.com/39

 

[MongoDB] 몽고DB 샤딩(Sharding) 구성하기!

다수의 RDB (mysql, postgresql, oracle)에서 샤딩구성이 가능합니다. 뭐..ಠ_ಠ 관계형 데이터베이스에서 이러한 기능은 많은 분들이 익히 알고계시리라 생각됩니다. (ง •̀_•́)ง mongodb 에서도 확장

tmjb.tistory.com

https://www.mongodb.com/docs/manual/reference/configuration-options/

 

Configuration File Options — MongoDB Manual

Docs Home → MongoDB ManualThe following page describes the configuration options available in MongoDB 5.0. For configuration file options for other versions of MongoDB, see the appropriate version of the MongoDB Manual.You can configure mongod and mongos

www.mongodb.com

https://www.saichoiblog.com/window-mongodb-shard-reflicaset/

 

[Windows]몽고디비 샤딩과 리플리카셋 구성하는 방법Saichoiblog

1. 폴더 생성 2. Config-Server 설정하기 3. Shard-Server 설정 4. Mongos-Server 설정

www.saichoiblog.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기