작성
·
359
0
안녕하세요.
현재 MongoDB 공부 중인 4년차 개발자입니다.
최근 입사한 회사에서 MongoDB 사용을 한다고 하여 해당 강의를 신청하여 듣고 있는데요.
개념적인 부분에 대한 공부에 있어서 Sharding에 대한 개념이 잘 이해가 되지 않아 이렇게 질문드립니다.
아래 그림을 보면 하나의 애플리케이션과 매칭 되는 MongoDB가 있고 여러개의 Shard로 구성하여 Config Server를 통해 연결되는 구조로 되어 있는데요.
위 의 경우 하나의 MongoDB에서 여러 개의 샤드로 분산하여 처리를 하고 있는듯한 이미지로 보입니다.
분산 처리가 결국은 서버의 부하를 줄이고, 퍼포 먼스를 조금 더 높이기 위한 전략이라고 생각을 하고 있는데, 샤딩의 기술을 여러 대의 물리 서버에서만 사용을 하는 것인지 아니면 1대의 서버에서도 가능한 것인지, 만일 1대의 서버에서도 샤딩 개념을 도입할 수 있다면 어떠한 이점이 있는지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요. Sharding은 MongoDB의 확장성을 높이기 위한 방법 중 하나인데, 여러 대의 물리 서버에서 데이터를 분산 처리하는 방법입니다. 이를 통해 데이터베이스의 성능 개선 및 가용성 향상을 도모할 수 있습니다.
1대의 서버에서도 샤딩 개념을 도입할 수 있는데, 이를 Vertical Sharding이라고 합니다. 이 방식은 단일 서버 내에서 데이터를 분리하여 처리하는 방식으로, 특정 쿼리에 대한 처리 속도를 향상시키는 것이 주 목적입니다. 제한된 자원을 최대한 활용하기 위한 전략으로, 여러 대의 서버가 필요하지 않기 때문에 비용 절감 효과도 기대할 수 있습니다.
하지만, Vertical Sharding에서는 서버를 추가하는 것을 통해 확장성을 확보할 수 없다는 단점이 있으며, 샤드를 추가하는 경우보다 데이터의 이동 비용이 비싸기 때문에 중요한 결정 사항으로 다가올 수도 있습니다. 이러한 이유로, 일반적으로는 여러 대의 서버를 이용해 Horizontal Sharding을 하는 것이 보편적인 방식입니다.
참고로, MongoDB에서는 Sharding의 구성을 간단하게 구현할 수 있도록 지원하는 기능들을 제공하고 있으며, 세세한 설정을 통해 Sharding 클러스터를 조율하고 관찰할 수 있도록 해주고 있습니다. 샤딩의 원리를 이해하고 적절한 환경에서 구성하면 데이터베이스의 성능을 올릴 수 있으니, 지속적으로 공부하시면 도움이 될 것입니다.