이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
MongoDB 샤딩: MongoDB 클러스터를 확장하는 방법
MongoDB 클러스터에서 느린 쿼리 성능 또는 메모리 부족 오류가 발생합니까? MongoDB 샤딩을 사용하여 데이터베이스 확장을 고려해야 할 때입니다. 샤딩은 여러 서버 또는 샤드에 데이터를 분산하는 데 사용되는 기술로, 더 많은 데이터와 쿼리를 쉽게 처리할 수 있습니다. 이 기사에서는 MongoDB 샤딩이 무엇인지, 어떻게 작동하는지, 샤딩된 MongoDB 클러스터를 설정하는 방법에 대해 설명합니다.
샤딩은 데이터를 여러 서버 또는 샤드에 분할하는 프로세스입니다. MongoDB 샤드 클러스터에서 각 샤드는 전체 데이터 세트의 하위 집합을 포함합니다. 쿼리는 클러스터 전체에 분산되며 각 샤드는 쿼리의 일부를 처리하므로 쿼리 성능이 빨라집니다.
MongoDB 샤딩은 MongoDB 데이터베이스의 수평 확장을 지원하도록 설계되어 인프라에 더 많은 서버를 추가하여 더 많은 양의 데이터와 트래픽을 처리할 수 있습니다.
MongoDB 샤딩은 데이터를 샤드라고 하는 더 작은 청크로 나누는 방식으로 작동합니다. 각 샤드는 별도의 서버 또는 가상 머신에서 실행되는 별도의 MongoDB 인스턴스입니다. 샤드 클러스터에는 세 가지 주요 구성 요소가 있습니다.
구성 서버 - 샤드 클러스터에 대한 메타데이터 및 구성 정보를 저장하는 데 사용됩니다. 구성 서버는 샤드에 대한 샤드 키의 매핑을 유지하여 클러스터가 쿼리를 적절한 샤드로 라우팅할 수 있도록 합니다.
샤드 - 데이터를 저장하는 물리적 서버 또는 가상 머신입니다. 각 샤드에는 데이터의 하위 집합이 포함되어 있습니다. 클러스터의 샤드 수는 데이터 세트의 크기와 애플리케이션이 생성하는 트래픽 양에 따라 1에서 수백까지 다양합니다.
쿼리 라우터 - 샤드 키를 기반으로 적절한 샤드로 쿼리를 라우팅하는 시스템입니다. 쿼리 라우터는 올바른 샤드로 트래픽을 전달하여 각 쿼리가 효율적으로 처리되도록 합니다.
클라이언트가 MongoDB 클러스터에 쿼리를 보내면 쿼리 라우터는 쿼리의 샤드 키를 검사하고 데이터가 상주하는 샤드를 결정한 다음 해당 샤드로 쿼리를 전달합니다. 그런 다음 샤드는 쿼리 결과를 쿼리 라우터로 반환하고 쿼리 라우터는 모든 샤드의 결과를 집계하여 클라이언트에 반환합니다.
샤딩된 MongoDB 클러스터 설정에는 다음 단계가 포함됩니다.
샤드 키 선택 - 샤드 키는 특정 문서가 속한 샤드를 결정하는 데 사용됩니다. 샤드 전체에 데이터를 고르게 분배하는 샤드 키를 선택하는 것이 중요합니다.
구성 서버 구성 - 샤드 클러스터에 대한 메타데이터 및 구성 정보를 저장하려면 구성 서버를 3개 이상 설정해야 합니다.
클러스터에 샤드 추가 - MongoDB 셸에서 sh.addShard()
명령을 사용하여 클러스터에 샤드를 추가할 수 있습니다. 각 샤드는 별도의 서버 또는 가상 머신에서 실행되는 별도의 MongoDB 인스턴스여야 합니다.
데이터베이스에 대한 샤딩 활성화 - MongoDB 셸에서 sh.enableSharding()
명령을 사용하여 데이터베이스에 대한 샤딩을 활성화할 수 있습니다.
컬렉션 샤딩 - MongoDB 셸에서 sh.shardCollection()
명령을 사용하여 컬렉션을 샤딩할 수 있습니다. 이 명령은 컬렉션의 샤드 키와 사용할 샤드 수를 지정합니다.
다음은 데이터베이스에 대해 샤딩을 활성화하고 MongoDB 셸을 사용하여 컬렉션을 샤딩하는 방법의 예입니다.
// Enable sharding for the database
use mydatabase
sh.enableSharding()
// Shard the collection using the "shard_key" field
sh.shardCollection("mydatabase.mycollection", {"shard_key": 1})
MongoDB 샤딩을 사용하면 다음과 같은 몇 가지 이점이 있습니다.
수평 확장 - MongoDB 샤딩을 사용하면 하드웨어를 수직으로 업그레이드하는 대신 클러스터에 더 많은 샤드를 추가하여 데이터베이스를 수평으로 확장할 수 있습니다.
향상된 쿼리 성능 - 샤딩은 쿼리를 여러 샤드에 분산하여 쿼리 성능을 향상시킵니다.
고가용성 - MongoDB 샤딩은 여러 샤드에 데이터를 복제하여 고가용성을 제공합니다. 하나의 샤드에 장애가 발생해도 데이터는 다른 샤드에서 계속 사용할 수 있습니다.
탄력성 - MongoDB 샤딩을 사용하면 데이터 및 트래픽 요구 사항이 변경될 때 클러스터에서 샤드를 동적으로 추가하거나 제거할 수 있습니다.
MongoDB 샤딩은 MongoDB 클러스터를 확장하여 더 많은 양의 데이터와 트래픽을 처리할 수 있는 강력한 도구입니다. 여러 서버 또는 샤드에 데이터를 분산하면 쿼리 성능을 개선하고 고가용성을 달성하며 수평으로 확장할 수 있습니다. 이 문서에 설명된 단계를 통해 샤딩된 MongoDB 클러스터를 설정하고 이러한 이점을 활용할 수 있습니다.