복제(Replication)
- 데이터의 동일한 복사본을 여러 서버상에서 보관하는 방법
- 하둡의 Namenode와 Datanode처럼 MongoDB는 Primary 서버와 Secondary 서버가 존재
- Primary 서버에 장애가 발생하면, Secondary 서버는 자신들 중에서 새로운 Primary 서버를 선출
- 복제 셋(Replica Set)을 사용하는 상태에서 서버가 다운되면, 복제 셋에 있는 다른 서버를 통해 데이터에 접근
샤딩(Sharding)
- 다수의 서버에 데이터를 분할하는 과정 (분산 저장)
ex) 4개의 서버에 복제와 샤딩으로 데이터를 구성한다면, 1000개의 데이터는 250개씩 분할되어 각 서버에 저장되고, 각 서버는 250개씩 데이터의 복제본을 또 가지고 있을 것
복제와 샤딩의 구성요소
- MongoS = 라우트 서버로 클라이언트의 명령을 받는 프로세스
(데이터를 입력받으면, 샤딩된 서버들에게 데이터를 분할하여 전송 및 저장)
- Shard = 분산된 데이터가 저장되는 서버의 공간
- Chunk = 복제된 데이터가 저장된 샤드의 부분 집합
- Config Server = 분할되어 어떤 데이터가 어디 서버에 저장되어 있는지 인덱싱을 관리하는 서버
(샤딩되는 데이터에 대한 메타데이터 관리)
- 장애 발생시 복제셋 내에서 Primary와 Secondary 선출권을 유지하기 위해선 config와 각각의 shard 내에서 노드 최소 3개 이상이 필요
(2개의 복제셋에서는 Primary에 장애가 발생하면, Secondary에서 Primary를 선출하기 위한 투표를 진행하기에는 개수가 부족하여 고립된 노드가 발생하여 오류가 발생하기 때문)
- 결국 최소 필요한 노드 개수는 MongoS 1개, config 3개, shard1 = 3개, shard2 = 3개로 10개가 필요함 (데이터 분할을 위해서는 최소 2개의 shard 필요)
'빅데이터 부트캠프 > MongoDB' 카테고리의 다른 글
빅데이터 부트캠프 50일차 (0) | 2022.09.15 |
---|---|
빅데이터 부트캠프 47일차 (0) | 2022.09.08 |
빅데이터 부트캠프 46일차 (MongoDB) (0) | 2022.09.07 |
빅데이터 부트캠프 46일차 (NoSQL) (1) | 2022.09.07 |
댓글