(MongoDB) 샤딩(Sharding)

* 샤딩의 목적


  1. 데이터의 분산저장
  2. 빠른 성능
  3. 데이터의 백업과 복구 전략의 일환

1. 초당 발생하는 빅데이터를 디스크에 저장할 때 발생하는 Write Scaling문제는 애플리케이션의 성능 저하문제를 유발시키며, 샤딩 시스템 전체의 성능 저하 현상을 유발

2.  분산처리는 여러개의 프로세스가 여러개의 CPU를 통해 동시 작업을 수행했을 때 가장 이상적이라 볼 수 있다.

3. 만약, 하나의 서버에 데이터를 저장, 관리했을 때 서버의 장애문제가 발생한다면 유실되어지는 데이터의 양은 상상 초월일 것이다. 
이러한 위험 요소로부터 안전하게 데이터를 저장, 관리하기 위한 목적으로 샤딩 시스템을 활용한다면 보다 효과적인 시스템 운영이 가능할 것이다.


1) 샤딩 구축을 위한 적정 시스템 환경


  • 데이터의 적절한 분산처리를 통한 효율성 향상이 가장 큰 목적이므로 3대 이상의 샤드 서버로 구축 권장
  • 싱글 노드를 운영할 때 요구되는 메모리 영역보다 최소 20~30프로 이상의 추가 메모리 영역이 요구된다(MongoS와 OpLog그리고 Balancer 프로세스가 사용하게 될 추가 메모리에 대한 고려 등)
  • 샤드 시스템 구축할 때 요구되는 Config 서버는 최소 3대 이상 활성화 할 것을 권장한다. Config서버는 샤드 시스템 구축과 관련된 메타데이터를 저장 관리하며 빅 데이터의 빠른 검색을 위한 인덱스 정보를 저장, 관리하고 있기 떄문에 샤드 서버와는 별도의 서버에 구축하는 것이 원칙 (최소 1대 이상의 Config 서버가 요구되며 장애 발생으로 인해 정상 작동되지 않는 경우를 위해 추가 Config서버가 필요하다. Config서버는 샤드서버보다 저 사양의 시스템으로 구축가능)


<MongoS 프로세스>


주요특징

  • 빅데이터를 샤드 서버로 분배해주는 프로세스
  • 하나 이상의 프로세스가 활성화 된다.
  • Application Server에서 실행 가능하다
  • CONFIG 서버로 부터 Meta-Data를 캐시한다

댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬