MongoDB는 ReplicaSet이라는 data set으로 이루어져있다.
Replica Set은 failover를 위해 중복성과 고가용성을 제공하며 위 그림과 같이 PSS, PSA 형태로 구성되어 있다.
Primary와 Secondary는 각각 데이터 파일을 가지고 있지만 실제 서비싱은 Primary만 한다.
만약 Primary mongod에 문제가 생겨 죽어도 Secondary가 Primary가 되기 때문에 정상적인 서비스가 가능해진다.
PSS: Primary, Secondary, Secondary
PSA: Primary, Secondary, Arbiter
Shard는 또 다른 형태의 Replica Set이다.
일종의 파티션과 동일한 의미를 가지며 데이터를 저장할 때 나누어지는 하나의 조각이다.
Client(Application)는 Mongos(몽고스)를 통해 database 접속하고
mongos는 client가 원하는 데이터로 routing 해준다.
Mongos란, Shard 클러스트 내 쿼리 실행 및 해당 데이터의 위치를 결정하는 라우팅 서비스다.
MongoDB 인스턴스와 동일하게 작동한다.
Replica Set은 MongoDB의 고가용성을 위한 솔루션,
Sharding은 데이터를 분산해 처리할 수 있는 분산처리 솔루션으로 볼 수 있다.
Sharding은 통해 갑작스럽게 증가하는 데이터량을 scaliable하게 대응할 수 있다는 장점이 있지만
동시에 비용도 증가하기 때문에 데이터량의 증가 예측치를 이용하여 적절할 수의 Shard를 결정하는 것이 중요하다.
https://mobicon.tistory.com/138
https://brownbears.tistory.com/4