Search Results for 'Sharding'

1 POSTS

  1. 2011.07.12 [번역]MongoDB 샤딩(Sharding)이란? 1

[번역]MongoDB 샤딩(Sharding)이란?

Posted 2011. 7. 12. 02:05
내용을 이해하기 위해 번역을 시도해본다. by UncleJoe

원문 : www.mongodb.org

MongoDB는 여러노드에 걸쳐 수평적 확장을 가능하게 하는 자동화된 샤딩(또는 파티셔닝)을 지원한다. 단일 데이터베이스 서버 자원을 과도하게 사용하는 애플리케이션의 경우, 기존의 프로그램 변경이 거의 없이도 MongoDB는 샤딩 클러스터로 변환이 가능하며, 자동으로 복구, 노드밸런싱까지 자동으로 관리한다.

MongoDB's Auto-Sharding

Sharding in a Nutshell

샤딩이란 순차적 데이터보존방식을 통해 여러대 서버가 갖고 있는 데이터의 일 부분을 말합니다. 예를 들자면, 거주자들의 주에 의해 사용자 집단을 샤딩하는 것을 생각해 보십시오.

Machine 1 Machine 2 Machine 3
Alabama → Arizona Colorado → Florida Arkansas → California
Indiana → Kansas Idaho → Illinois Georgia → Hawaii
Maryland → Michigan Kentucky → Maine Minnesota → Missouri
Montana → Montana Nebraska → New Jersey Ohio → Pennsylvania
New Mexico → North Dakota Rhode Island → South Dakota Tennessee → Utah
  Vermont → West Virgina Wisconsin → Wyoming

각각의 서버들은 거주지의 주(州)에 따라 여러개의 데이터 영역을 저장합니다. MongoDB는 이들 데이터 영역을 모든 서버에 걸쳐 균등하게 나누게 됩니다.
데이터영역을 나누는 이러한 매커니즘은 우리가 저장하려는 데이터의 임계점에 다다랐을때 그 안에서 샤딩의 장점을 극대화 할수 있도록 작동됩니다.
우리가 만든 응용프로그램은  mongos프로세스를 통해 샤딩클러스터시스템에 연결되며, 각각 적절한 shards에게 작동됩니다. 이런식으로 샤딩된 MongoDB클러스터는 응용프로그램입장에서보면 마치 논리적인 단일 서버로 보여집니다. 만약 우리의 USERS라는 컬렉션(RDBMS의 Table개념)에 엄청난 양의 데이터가 입력되도록 요청받았다면, 각각의 데이터들은 3개의 서버에 분산되어  입력될것입니다.  마찬가지로 많이 분산되어 있기 대문에 많은 쿼리요청들이 들어오더라도 효과적으로 작동하게 됩니다. 그리고 문서들은 순차적 데이터 보존방식에 의해 구성되었기 때문에, 거주자의 주를 지정하는 어떠한 작업들도 해당 주를 포함하는 해당 노드로 라우팅됩니다.
샤딩은 매우 컬렉션(테이블) 단위로 수행됩니다. 작은 컬렉션들은 샤딩될 필요가 없습니다. 예를 들어 우리가 트위터와 같은 서비스를 구축한다고 했을때, 트윗츠 컬렉션들은 다음의 가장 큰 컬렉션에 비해 몇배의 명령을 수행할 것입니다. 이러한 tweets 컬렉션과 같이 처리하는 명령어의 수 사이즈가 샤딩을 결정하는 최 우선순위가 됩니다. 보다 작은 컬렉션들은 단일서버에만 존재하게 됩니다. 샤딩되지 않은 컬렉션들은 하나의 샤드로 존재하게 됩니다.

Balancing
밸런싱은 어느 특정 shard node가 나머지 노드에 비해 비정상적으로 부하가 증가할 때 필요합니다. 이러한 상황에서 데이터는 여러 샤드들에게 부하게 맞게 다시 재 분배되어야 합니다.

Failover(장애조치/복구)
논리적인 shard가 항상 온라인상에 있어야만 하는 시스템의 요구사항 때문에 Failover는 매우 중요합니다. 실제로 이것은 각 shard들이 Replica set으로 구성되어진 하나이상의 서버에 포함되어 있음을 의미합니다. A replica set is a set of n servers, typically two or three, each of which contains a replica of the entire data set for the given shard.
n개 서버들주 하나는 항상 primary가 되어야 합니다. 만약 primary가 다운되면 남은 replica들중 하나가 새로운 마스터로 선출됩니다.

Scaling Model
MongoDB의 오토샤딩 스케일링 모델은 야후의  PNUTS와 구글의 BigTable과 많은 부분 유사한점을 공유합니다. 독자들중 이미 배포된 데이터 베이스들중 순차적 보존방식을 사용하는 데이터베이스 에 대한 상세한 토론에 관심있다면 PNUTS와 BigTable 백서를 보는것이 크게 도움이 될것입니다.

설계 개요
MongoDB 샤드클러스터는 두개 또는 그 이상의 샤드들, 하나이상의 config server, 그리고 애플리케이션서버와 연결하는 여러개의 라우팅이 필요한 mongos프로세스로 구성됩니다.






Shards
계속...











'DBMS > NoSQL' 카테고리의 다른 글

Jedis를 이용한 Redis 따라가기  (0) 2012.02.28
MongoDB Naming Rule  (0) 2011.11.30
MongoDB GUI Tool for Mac osx : MongoHub  (0) 2011.11.23
MongoDB 컴포넌트 목록  (0) 2011.10.03
ubuntu 에 mongodb설치해보자.  (0) 2011.07.10