문서 메뉴
문서 홈
/
MongoDB Atlas
/ /

글로벌 컬렉션 샤딩

이 페이지의 내용

  • Atlas UI에서 글로벌 쓰기를 위한 글로벌 컬렉션 샤딩하기
  • 필요한 액세스 권한
  • 고려 사항
  • 절차
  • 글로벌 클러스터 샤딩 참조
  • 글로벌 쓰기를 위한 컬렉션 샤딩
  • 오류 처리
  • 글로벌 쓰기가 없는 컬렉션 샤딩
  • 글로벌 쓰기 클러스터의 샤딩되지 않은 컬렉션

중요

서버리스 인스턴스에서는 사용할 수 없는 기능입니다.

현재 서버리스 인스턴스는 이와 같은 기능을 지원하지 않습니다. 자세히 보려면 서버리스 인스턴스 제한을참조합니다.

참고

  • 글로벌 쓰기는 M30+ 클러스터 계층이 필요한 글로벌 클러스터에서만 지원됩니다.

  • Atlas 관리형 샤딩이 활성화된 글로벌 클러스터에 대해서만 Atlas UI를 사용하여 글로벌 컬렉션을 샤딩할 수 있습니다.

  • 이 문서는 샤딩 시맨틱에 대한 사전 지식이 있다고 가정합니다. 이 튜토리얼을 계속 진행하기 전에 샤딩 문서 를 검토하세요.

샤드 클러스터에서는 샤드 키 를 기반으로 샤드 데이터의 구역 을 만들 수 있습니다. 구역은 지리적 영역을 기준으로 데이터를 세분화할 수 있습니다. 지리적 영역을 기반으로 한 샤딩에 대해 자세히 알아보려면 위치별 데이터 분할을 참조하세요.

Atlas UI는 Atlas-Managed Sharding 을 사용하는 글로벌 클러스터에 대해서만 글로벌 쓰기 컬렉션 샤딩을 지원합니다. 글로벌 쓰기가 아닌 컬렉션 또는 자체 관리형 샤딩을 사용하는 글로벌 쓰기 컬렉션을 샤딩하려면 mongosh 또는 애플리케이션 코드를 사용해야 합니다. 자세한 내용 은 샤드 클러스터 배포를 참조하세요.

클러스터의 Atlas 프로젝트에 대해 Project Owner 또는 Organization Owner 역할이 있어야 Atlas UI에서 글로벌 쓰기에 대한 컬렉션을 샤딩할 수 있습니다.

이 절차를 시작하기 전에 검토하세요:

컬렉션을 샤딩하거나 클러스터 티어를 업그레이드하는 대신, 자주 액세스하지 않는 데이터를 Atlas 클러스터에서 MongoDB가 관리하는 읽기 전용 페더레이션 데이터베이스 인스턴스로 옮기도록 Online Archive를 구성할 수 있습니다. 온라인 아카이브에 대해 자세히 알아보려면 온라인 아카이브 관리를 참조하십시오.

Atlas UI를 통해 샤드 키를 선택한 후 Atlas는 대상 컬렉션을 샤딩하려고 시도합니다. 이 기간 동안에는 사용자가 컬렉션을 수동으로 샤딩하지 않도록 하세요. Atlas가 대상 컬렉션이 Atlas UI를 통해 선택한 키와 다른 키로 샤딩되었음을 감지하면 Atlas는 절차를 중지하고 Atlas UI에 해당 컬렉션에 대한 경고를 표시합니다. Unmanage Collection을 클릭하여 경고를 지울 수 있습니다. 이 작업을 수행하면 기본 컬렉션과 수동으로 선택한 샤드 키는 그대로 두고 Atlas 관리에서 컬렉션을 제거합니다.

MongoDB 4 부터 시작.2, 샤드 키 필드가 변경할 수 없는 _id 필드가 아닌 경우 문서의 샤드 키 값을 업데이트할 수 있습니다. 자세한 내용 은 문서의 샤드 키 값 변경을 참조하세요.

MongoDB 4.0 및 이전 버전에서는 글로벌 쓰기가 활성화된 컬렉션에서 기존 문서의 샤드 키 필드 값을 업데이트할 수 없습니다.

중요

샤드 키 값 및 글로벌 클러스터

모든 MongoDB 버전에서 글로벌 클러스터 의 컬렉션을 리샤딩 할 수 없습니다. 자세한 내용 은 글로벌 쓰기를 위한 컬렉션 샤딩을 참조하세요.

글로벌 클러스터에서 컬렉션을 샤딩하려면 다음 안내를 따르세요.

1
2
3
4
5
6

다음 중 하나를 선택할 수 있습니다.

Default
Use unique index as the shard key
Atlas는 기본 인덱스를 사용하여 글로벌 컬렉션의 샤드 키에 고유한 제약 조건을 적용합니다.
Use hashed index as the shard key

Atlas는 샤드 키의 두 번째 필드를 해싱하여 샤딩된 데이터를 균등하게 배포합니다. 이 옵션은 MongoDB v5.0 이상을 실행하는 Atlas cluster에서만 사용할 수 있습니다.

선택적으로 Pre-split data for even distribution을 선택하여 컬렉션에 정의된 구역 및 구역 범위를 기반으로 비어 있거나 존재하지 않는 컬렉션에 대해 초기 청크 생성 및 배포를 수행할지 여부를 지정할 수 있습니다.

Pre-split data for even distribution 옵션을 선택하면 해시 샤드 키로 빈 컬렉션을 샤딩할 때 처음에 생성할 청크의 최소 개수를 지정할 수도 있습니다. 초기 청크 배포를 통해 Atlas는 구역 샤딩을 빠르게 설정할 수 있습니다. Atlas가 생성하는 청크의 수는 정의하는 구역의 수에 따라 달라집니다. 기본적으로 Atlas는 위치 코드당 하나의 청크를 생성하고 모든 샤드에 청크를 균등하게 분산합니다.

이러한 옵션에 대해 자세히 알아보려면 글로벌 클러스터 샤딩 참조를 확인하세요.

7

Atlas는 컬렉션을 구성한 후 Global Writes 탭 상단 근처에 복합 분할 키를 표시합니다.

다음 섹션에서는 샤딩 동작과 글로벌 클러스터 관리를 위해 샤딩을 활성화하는 방법에 대해 설명합니다.

Atlas-Managed Sharding 을 사용하는 글로벌 클러스터의 경우. 활성화된 경우, 샤딩되지 않은 컬렉션은 샤딩 시 글로벌 쓰기를 사용 하기 위해 샤딩 전에 다음 호환성 요구 사항을 충족해야 합니다.

location 필드의 샤드 키만으로는 병목 현상이 발생할 수 있으며, 특히 국가 또는 지역의 하위 집합이 대부분의 쓰기 작업을 담당하는 워크로드의 경우 병목 현상이 발생할 수 있습니다. Atlas Global Writes에는 클러스터 전체에 샤드 데이터를 효율적으로 배포할 수 있도록 복합 샤드 키 가 필요합니다. Atlas 글로벌 클러스터 샤드 키는 MongoDB 샤드 키와 동일한 제한 사항을 공유합니다. 다음과 같은 Atlas 글로벌 클러스터 제한 사항이 적용됩니다.

  • 복합 샤드 키의 첫 번째 필드는 location이어야 하며 해시할 수 없습니다.

  • 복합 샤드 키에는 세컨더리 샤드 키 필드가 하나만 있을 수 있습니다.

  • 복합 샤드 키의 세컨더리 샤드 키 필드는 해시가 가능합니다.

  • 세컨더리 샤드 키 필드는 배열이 될 수 없습니다.

더욱 자세히 알아봅니다:

중요

샤드 키 변경

샤딩 후 수정할 수 있는 항목은 실행 중인 MongoDB 버전에 따라 다릅니다:

MongoDB 버전
샤드 키 수정
샤드 키 값 수정
MongoDB 5.0
예, Atlas UI만을 사용하여 키에 필드를 추가합니다.
MongoDB 6.0
예, Atlas UI만을 사용하여 키에 필드를 추가합니다.
MongoDB 7.0
예, Atlas UI만을 사용하여 키에 필드를 추가합니다.

모든 MongoDB 버전에서 글로벌 클러스터 의 컬렉션을 리샤딩 할 수 없습니다.

Atlas UI 는 글로벌 쓰기에 대한 특정 유효성 검사를 사용하여 샤드 컬렉션 생성을 지원합니다. 자세한 내용 은 Atlas UI에서 글로벌 쓰기를 위한 글로벌 컬렉션 샤딩을 참조하세요.

mongosh 를 사용하여 sh.shardCollection() 을 실행할 수도 있습니다. 컬렉션을 샤딩한 후에는 Atlas UI 를 사용하여 해당 컬렉션에 대해 글로벌 쓰기를 활성화해야 합니다.

경고

이미 Atlas Search 인덱스가 있는 컬렉션을 샤드하는 경우, 컬렉션이 샤드에 표시되기 시작할 때 잠시 동안 쿼리 중단 시간이 발생할 수 있습니다. 또한 이미 샤드된 컬렉션에 대한 샤드를 추가하고 Atlas Search 인덱스가 포함된 경우, 추가된 샤드에서 초기 동기화 프로세스가 완료될 때까지 해당 컬렉션에 대한 검색 쿼리가 실패합니다. 자세한 내용은 초기 동기화 프로세스를 참조하세요.

Atlas UI를 통한 컬렉션 샤딩에 대해 자세히 알아보려면 Atlas UI 에서 글로벌 쓰기를 위한 글로벌 컬렉션 샤딩을 참조하세요.

샤드 키는 균등한 배포를 위해 해시 샤딩 및 사전 분할 데이터를 사용합니다. 이 기능은 MongoDB 5 를 실행하는 Atlas 클러스터에서만 사용할 수 있습니다.0 이상.

Atlas는 다음 작업 중 하나를 수행하는 경우 샤드 키의 두 번째 필드를 해시하여 샤딩된 데이터를 균등하게 분배합니다.

  • Atlas UI에서 Use hashed index as the shard key 을(를) 선택하여 해시된 인덱스 샤드 키 사용을 활성화합니다.

  • API를 통해 isCustomShardKeyHashed 를 설정합니다.

비어 있거나 존재하지 않는 컬렉션에 대해 초기 청크 생성 및 배포를 수행할지 여부를 선택적으로 지정할 수 있습니다. 이 작업은 컬렉션에 대해 정의된 구역 및 구역 범위를 기반으로 합니다. 이를 위해 다음 작업 중 하나를 수행합니다:

  • Atlas UI에서 Pre-split data for even distribution 을(를) 선택합니다.

  • API를 사용하여 presplitHashedZone 를 설정합니다.

글로벌 클러스터에 대해 복합 해시 샤드 키를 사용하여 샤드 컬렉션을 생성하는 경우, Atlas는 위치 코드 당 최소 1 청크를 생성하고 클러스터의 샤드에 청크를 균등하게 분산하려고 시도합니다.

Atlas UI 를 사용하거나 numInitialChunks API를 통해 매개 변수를 설정하여 빈 컬렉션을 해시 샤드 키로 샤딩할 때 처음에 생성할 청크의 최소 개수를 지정할 수도 있습니다.

참고

샤드당 청크 수를 지정하면 Atlas는 위치 코드당 청크 수와 동일하게 지정된 최소 청크 수 이상을 생성합니다. 최소 청크 수를 지정하면 Atlas는 구역 샤딩을 빠르게 설정합니다. 특히 샤딩 전에 데이터를 지리적으로 배포하는 방법을 이미 알고 있는 경우 더욱 그렇습니다.

글로벌 쓰기를 위해 컬렉션을 샤딩하는 동안 Atlas에서 오류가 발생하면 화면 상단의 배너에 메시지가 나타납니다.

  1. 오류 및 오류가 발생한 네임스페이스에 대해 알아보려면 See Details를 클릭합니다. 전체 오류 메시지와 Fix Now 버튼이 포함된 모달 창이 나타납니다.

  2. Close를 클릭하고 Atlas UI에서 컬렉션으로 이동합니다. Fix Now 버튼을 클릭하여 해당 Atlas 클러스터의 Atlas UI로 이동할 수도 있습니다.

  3. 오류 메시지에 언급된 컬렉션에 대한 Global Writes 탭을 클릭합니다.

  4. 글로벌 쓰기 샤딩 작업을 취소하려면 Unmanage Collection을 클릭합니다. 샤딩 작업을 취소하려면 Project Data Access Admin 역할이 있어야 합니다.

오류 메시지에 표시된 대로 컬렉션에 필요한 사항을 변경한 후 샤딩 프로세스를 다시 시작할 수 있습니다.

발생할 수 있는 오류는 다음과 같습니다:

사용자 지정 샤드 키에 인덱스가 이미 존재합니다.
복합 샤드 키의 두 번째 부분으로 선택한 필드가 이미 인덱싱된 경우 샤딩 작업이 실패할 수 있습니다.
샤드 키 필드가 없습니다.
컬렉션의 모든 문서에는 두 개의 샤드 키 필드가 모두 포함되어야 합니다. 이 오류는 MongoDB 5.0 이전 버전에서만 발생합니다.
컬렉션이 이미 샤딩되었습니다.
컬렉션이 이미 수동으로 샤딩된 경우 작업이 실패합니다.
컬렉션에는 사용자 지정 기본 데이터 정렬이 있습니다.
컬렉션의 사용자 지정 기본 데이터 정렬 로 인해 샤딩 오류가 발생할 수 있습니다.

쓰기 작업의 각 문서에 대해 MongoDB는 샤드 키(포함된 경우)의 location 필드를 사용하여 데이터를 라우팅할 구역을 결정합니다. MongoDB는 해당 구역과 관련된 샤드를 문서 작성 대상으로 선택하여 지리적으로 격리되고 분할된 데이터 저장을 용이하게 합니다.

경고

쓰기 작업에 샤드 키가 포함되어 있지 않거나 샤드 키가 포함되어 있지만 location 필드가 없는 경우, 쓰기 작업은 성공하지만 결과 문서는 배포되지 않습니다.

MongoDB는 글로벌 쓰기를 위한 샤딩 컬렉션 에 정의된 기준을 충족하는 삽입된 문서에 대해서만 이 동작을 보장할 수 있습니다. 구체적으로 MongoDB는 필드가 location ISO-3166-1 alpha 2 준수하지 않는 문서를 라우팅할 수 있습니다.또는 ISO-3166-2 클러스터의 모든 샤드에 추가합니다.

MongoDB 쿼리 라우팅은 읽기 작업에 전체 샤드 키가 포함되는지 location 31661 2 "US""DE", 값이 지원되는"IN" ISO-31662 - alpha 에 해당하는지 여부에"US-DC" "DE-BE"따라"IN-DL" 달라집니다. 국가 코드( , , ) 또는 지원되는 ISO- - 세분화 코드( , , ).

  • 전체 샤드 키를 포함하고 location 값이 글로벌 쓰기에 대한 요건을 충족하는 쿼리의 경우, MongoDB는 쿼리에 지정된 location 값에 매핑되는 구역으로 읽기 작업을 타깃팅합니다.

  • 값을 포함하지 않는 읽기 작업의 location 경우 또는 location 값이 지원되는 ISO-3166-1 alpha 에 해당하지 2 않는 경우 국가 코드 또는 ISO-3166-2 서브디비전 코드에서 MongoDB는 클러스터의 모든 구역에 읽기 작업을 브로드캐스트해야 합니다.

  • 지리적으로 멀리 떨어진 리전에 노드가 있는 글로벌 쓰기 구역의 경우, 해당 리전의 클라이언트는 Read-only Read-only 쿼리의 일부로 전체 샤드 키를 지정하고 읽기 설정( Read Preference )으로 읽기 작업 을 실행하여 해당 구역에 대한 로컬 nearest 노드를 쿼리할 수 있습니다. 의 .

중요

세컨더리 읽기는 세컨더리 노드와 프라이머리 노드 사이의 복제 지연 수준에 따라 오래된 데이터를 반환할 수 있습니다.

자세한 내용은 MongoDB 읽기 설정MongoDB 쿼리 라우팅을 참조하세요.

글로벌 쓰기 클러스터는 표준 Atlas 샤드 클러스터와 동일한 범위 지정 및 해시 샤딩 전략을 지원합니다. 샤드 키와 문서 스키마가 글로벌 쓰기를 지원하지 않는 샤드 컬렉션의 경우, MongoDB는 선택한 샤드 키 와 관련하여 클러스터의 사용 가능한 샤드에 샤드 데이터를 균등하게 분산합니다. 글로벌 쓰기를 활용할 수 없는 데이터에 대해서는 별도의 샤드 클러스터를 사용하는 것이 좋습니다.

샤딩 후에는 글로벌 쓰기를 지원하기 위해 컬렉션을 수정할 수 없습니다. 향후 컬렉션에 글로벌 쓰기를 사용할 수 있도록 허용하는 샤드 키를 선택하는 것이 좋습니다.

다음도 참조하세요.

글로벌 쓰기 샤딩 요구 사항에 대해 자세히 알아보려면 글로벌 쓰기 를 위한 컬렉션 샤딩을 참조하세요.

글로벌 클러스터는 표준 Atlas 샤드 클러스터와 동일한 비샤드 컬렉션 지원을 제공합니다. 클러스터의 각 데이터베이스에 대해 MongoDB는 프라이머리 샤드 에 샤딩되지 않은 컬렉션을 저장합니다.sh.status() 에서 mongosh 를 사용하여 데이터베이스의 프라이머리 샤드를 결정합니다.

← 글로벌 클러스터 관리