12-18 14:29
Notice
Recent Posts
Recent Comments
관리 메뉴

Scientific Computing & Data Science

[MongoDB] Replication / Usage of Slaves / Read Scaling 본문

Data Science/MongoDB

[MongoDB] Replication / Usage of Slaves / Read Scaling

cinema4dr12 2014. 3. 29. 16:35

by Geol Choi | 

MongoDB의 슬레이브 노드의 역할을 정리하면 다음과 같다:

  • 데이터 유실 또는 마스터 노드의 다운타임에서의 패일오버 메커니즘 기능 수행
  • 백업을 위한 소스
  • 읽기 스케일아웃
  • 데이터 처리 수행


이 중 "읽기 스케일아웃"은 데이터를 읽을 때 PRIMARY(마스터)에 집중되는 부담을 SECONDARY(슬레이브)에 분산하는 것이 목적이다. 이 때 주의할 것은, MongoDB에서 데이터 복제는 비동기(Asynchronous)로 진행된다는 것이다.

쓰기에 대한 연산 부담의 분산은 향후 자동샤딩(Autosharding) 부분에서 집중적으로 다루도록 하겠다.

읽기 스케일아웃 방법은 다음과 같다.

우선 Replica Set이 설정되어 있다고 가정한다. Replica Set을 설정하는 방법은 Replication / Replica Set Part 2.를 참고하기 바란다.

PRIMARY 노드의 mongo 쉘에서 "test" db에 다음과 같이 도큐먼트가 입력되어 있다고 하면:

rs0:PRIMARY> db.tmp.find().pretty()
{
	"_id" : ObjectId("5336c12e07a320abf7b320e3"),
	"username" : "gchoi",
	"pwd" : 1234
}

rs.slaveOk() 메써드를 통해 SECONDARY 노드에서 읽기를 허용한다:

rs0:SECONDARY> rs.slaveOk()
rs0:SECONDARY> use test
switched to db test
rs0:SECONDARY> db.tmp.find().pretty()
{
	"_id" : ObjectId("5336c12e07a320abf7b320e3"),
	"username" : "gchoi",
	"pwd" : 1234
}

위와 같이 SECONDARY 노드에서도 읽기가 가능해졌다.

Comments