이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
MongoDB는 데이터를 JSON과 유사한 문서에 저장하는 널리 사용되는 비SQL 데이터베이스입니다. MongoDB를 확장할 때 샤딩과 복제본 세트라는 두 가지 옵션이 있습니다. 이 가이드에서는 이 두 가지 옵션을 비교하고 귀하의 필요에 가장 적합한 옵션을 결정하는 데 도움을 드릴 것입니다.
샤딩은 데이터를 여러 시스템에 분할하는 프로세스입니다. 각 파티션을 샤드라고 하며 각 샤드는 별도의 시스템에 저장할 수 있습니다. 샤딩을 사용하면 클러스터에 더 많은 시스템을 추가하여 데이터베이스를 수평으로 확장할 수 있습니다.
복제 세트는 동일한 데이터를 저장하는 MongoDB 인스턴스 그룹입니다. 복제 세트의 기본 구성원은 모든 쓰기 작업을 처리하는 반면 보조 구성원은 기본 구성원의 데이터를 복제합니다. 기본 구성원이 실패하면 보조 구성원 중 하나가 새로운 기본 구성원이 됩니다.
샤딩은 단일 시스템에 맞지 않는 많은 양의 데이터를 저장해야 할 때 유용합니다. 예를 들어 전자 상거래 웹사이트를 운영 중이고 수백만 개의 제품 목록과 고객 주문을 저장해야 하는 경우 샤딩을 사용하여 여러 시스템에 데이터를 배포할 수 있습니다.
반면 복제본 세트는 고가용성 및 장애 복구 기능이 필요할 때 유용합니다. 애플리케이션이 다운타임을 감당할 수 없는 경우 복제본 세트를 사용하여 쓰기 작업을 처리할 기본 구성원이 항상 있는지 확인할 수 있습니다.
샤딩을 사용하면 클러스터에 더 많은 시스템을 추가하여 수평으로 확장할 수 있습니다. 즉, 데이터가 증가함에 따라 더 많은 샤드를 계속 추가할 수 있습니다. 그러나 샤딩은 설정 및 관리가 복잡할 수 있으며 쿼리가 효율적인지 확인하려면 데이터 배포 전략을 신중하게 고려해야 합니다.
반면에 복제본 세트는 수평 확장을 허용하지 않지만 보조 구성원을 쉽게 추가하여 읽기 성능을 향상시킬 수 있습니다. 샤딩과 함께 복제본 세트를 사용하여 확장성과 고가용성을 모두 제공할 수도 있습니다.
샤딩을 사용하면 데이터가 샤드 전체에 고르게 분산되도록 샤드 키를 신중하게 선택해야 합니다. 샤드 키는 문서가 속한 샤드를 결정하는 필드입니다. 샤드 키가 데이터를 고르게 분배하지 않으면 핫스팟과 비효율적인 쿼리가 발생할 수 있습니다.
복제 세트를 사용하면 데이터가 모든 구성원에게 자동으로 분산되므로 데이터 분산에 대해 걱정할 필요가 없습니다. 그러나 가장 가까운 보조 구성원이 쿼리를 처리하도록 하려면 읽기 기본 설정이 올바르게 설정되어 있는지 확인해야 합니다.
샤딩을 구현하려면 다음 단계를 따라야 합니다.
다음은 MongoDB 셸을 사용하여 컬렉션에 대해 샤딩을 활성화하는 방법의 예입니다.
sh.enableSharding("mydb");
sh.shardCollection("mydb.mycollection", { "shardkey": 1 });
복제 세트를 구현하려면 다음 단계를 따라야 합니다.
다음은 MongoDB 셸을 사용하여 3개 구성원 복제 세트를 설정하는 방법의 예입니다.
rs.initiate({
_id: "myreplicaset",
members: [
{ _id: 0, host: "mongo1:27017" },
{ _id: 1, host: "mongo2:27017" },
{ _id: 2, host: "mongo3:27017" }
]
})
샤딩과 복제본 세트 모두 고유한 장점과 단점이 있습니다. 샤딩을 사용하면 데이터베이스를 수평으로 확장할 수 있으며 복제본 세트는 고가용성 및 장애 조치 기능을 제공합니다. 두 가지 중에서 결정할 때 사용 사례, 확장성 요구 사항 및 데이터 배포 전략을 고려해야 합니다.
어떤 옵션이 자신에게 가장 적합한지 확신이 서지 않는 경우 샤딩과 복제본 세트를 함께 사용하여 확장성과 고가용성을 모두 제공할 수 있습니다. 그러나 이렇게 하면 클러스터를 관리하기가 더 복잡해질 수 있으므로 결정을 내리기 전에 옵션을 신중하게 고려해야 합니다.