Database/MongoDB

[MongoDB] Sharded Cluster

emhaki 2023. 2. 1. 22:22
728x90
반응형
SMALL

Sharded Cluster

왼쪽의 A-Z는 Replica Set인데 만약 Replica Set에 감당할 수 없을 정도로 많은 데이터들이 유입이 된다면, 오른쪽처럼 Sharded Cluster로 배포하게 된다. 

 

여기서 Sharding은 하나의 큰 데이터를 여러개로 분할하는 과정을 뜻하고, 분할되는 데이터 셋의 모음을 Shard라고 한다. Sharded Cluster는 분산을 위한 솔루션으로 Replica Set으로 데이터의 서브셋이 나뉜다. Sharding은 분산처리 즉, Scale-Out을 위한 솔루션이다.

Sharded Cluster의 장단점

장점 단점
- 용량의 한계를 극복할 수 있다.
- 데이터 규모와 부하가 크더라도 처리량이 좋다.
- 고가용성을 보장한다.
- 하드웨어에 대한 제약을 해결할 수 있다.
- 관리가 비교적 복잡하다.
- Replica Set과 비교해서 쿼리가 느리다.

Compare

Sharding Partitioning
- 하나의 큰 데이터를 여러 서브셋으로 나누어 여러 인스턴스에 저장하는 기술 - 하나의 큰 데이터를 여러 서브셋으로 나누어 하나의 인스턴스의 여러 테이블로 나누어 저장하는 기술 
Replica Set Sharded Cluster
- Replica Set은 각각 멤버가 같은 데이터 셋을 갖는다. - Sharded Cluster는 각각 Shard가 다른 데이터의 서브셋을 갖는다.

Ranged Sharding

일반적인 MongoDB의 인덱스를 생성하고 Shard key의 값을 기준으로 정크의 범위를 할당하는 방식. 연속된 숫자들이 같은 정크와 같은 Shard에 존재를 해서 데이터의 값으로 정확히 어떤 Shard에 존재하는지 알기 때문에 데이터가 존재하는 Shard에만 Query를 요청하는 방식인 Target Query가 가능하다. Target Query를 통해서 효율적이고 빠르게 결과를 Sharded Cluster에서 받을 수 있다. 

Hashed Sharding

Ranged Sharding과 다른점은 Ranged Sharding은 Shard key의 값을 기준으로 분산을 했다면, Hashed Sharding은 Shard Key의 값의 hash값, 즉 HashFunction에서 반환되는 hash값을 이용해서 정크에 할당하는 방식이다. 그렇기 때문에 그림과 같이 매우 균등하게 분산이 잘 된다.

Zone Sharding

Zone Sharding은 보통 Ranged Sharding과 Hashed Sharding과 함께 사용하게 된다. 값에 대해서 Zone을 생성한 다음에 특정 Shard로 데이터를 위치시킬 수 있는 방법이다. 이 방법은 글로벌하게 지역별로 데이터를 분산시켜야 하는 경우 IP를 기준으로 Zone Sharding을 함께 사용할 수 있다. 

Summary

  • Sharded Cluster는 MongoDB의 분산 Solution이다.
  • Collection 단위는 Sharding이 가능하다.
  • Sharding은 Shard Key를 선정해야하고 해당 필드에는 Index가 만들어져 있어야한다.
  • 꼭 Router를 통해 접근한다.
  • Range와 Hashed Sharding 두 가지 방법이 있다.
  • 가능하면 Hashed Sharding을 통해 분산한다.
728x90
반응형

'Database > MongoDB' 카테고리의 다른 글

[MongoDB] SQL vs MQL  (0) 2023.03.28
[MongoDB] Replica Set vs Sharded Cluster  (0) 2023.03.25
[MongoDB] Replica Set  (0) 2023.01.30
[MongoDB] MongoDB 구조  (0) 2023.01.30