샤딩 구성
개요
샤딩은 데이터를 여러 머신에 분산하는 방법입니다. MongoDB 샤딩 사용하여 대규모 데이터 세트와 높은 처리량 작업의 배포를 지원 . 이 가이드 에서는 Mongoid 애플리케이션 에서 샤딩 구성하는 방법을 학습 수 있습니다.
샤드 키 선언
MongoDB 샤드 키를 사용하여 샤드 전체에 컬렉션 문서를 배포합니다. 샤드 키 는 인덱싱된 필드 또는 복합 인덱스 가 적용되는 여러 필드를 말하며, 클러스터의 샤드 간에 컬렉션 문서의 분포를 결정합니다. Mongoid 애플리케이션 에서는 모델을 생성할 때 shard_key
매크로를 사용하여 샤드 키 선언할 수 있습니다.
다음 예시 ssn
필드 에 샤드 키 있는 Person
클래스를 만듭니다.
class Person include Mongoid::Document field :ssn shard_key ssn: 1 # The collection must also have an index that starts with the shard key. index ssn: 1 end
참고
컬렉션 샤드 하려면 컬렉션 샤드 키 시작하는 인덱스 있어야 합니다. 인덱스 샤드 키 에만 있을 수도 있고, 샤드 키 접두사인 복합 인덱스 일 수도 있습니다. Mongoid의 인덱스 관리 기능을 사용하여 인덱스 생성할 수 있습니다. Mongoid를 사용한 인덱스 관리 에 대해 자세히 학습 인덱스 관리 가이드 참조하세요.
모델이 샤드 키 선언하면 Mongoid는 샤딩된 컬렉션 선언된 키를 샤딩 에 사용할 것으로 예상합니다. Mongoid는 모델을 다시 로드할 때 쿼리 성능을 개선하기 위해 _id
필드 와 함께 샤드 키 find
명령에 제공합니다. 컬렉션 지정된 샤드 키 샤딩된 되지 않은 경우 쿼리에서 예상 결과를 반환하지 않을 수 있습니다.
구문
전체 MongoDB 구문을 사용하거나 축약형 구문을 사용하여 샤드 키를 선언할 수 있습니다.
전체 구문은 mongosh
shardCollection() 메서드의 형식을 따르며 다음 유형의 샤드 키를 지정할 수 있습니다.
범위 지정 키
해시 키
복합 키
전체 구문을 사용하면 컬렉션 및 샤딩 옵션을 지정할 수도 있습니다.
다음 예시 sson
필드 에 앞의 각 유형의 샤드 키 생성합니다.
# Create a ranged shard key shard_key ssn: 1 # Create a compound shard key shard_key ssn: 1, country: 1 # Create a hashed shard key shard_key ssn: :hashed # Specify a shard key option shard_key {ssn: :hashed}, unique: true
축약형 구문을 사용하면 필드 이름만 지정하여 샤드 키 선언할 수 있습니다. 이 구문은 범위 지정 및 복합 샤드 키만 지원하며 컬렉션 또는 샤딩 옵션을 지정할 수 없습니다.
다음 예시 범위 지정 및 복합 샤드 키 생성합니다.
# Create a ranged shard key shard_key :ssn # Create a compound shard key shard_key :ssn, :country
관련 필드 및 포함된 필드 지정
필드 이름 대신 belongs_to
연결에 샤드 키 지정할 수 있습니다. 이렇게 하면 Mongoid는 관련 컬렉션 의 기본 키 에 샤드 키 생성합니다.
다음 예시 Person
모델의 belongs_to
연관 관계에 샤드 키 생성합니다. 연결된 country
컬렉션 country_id
라는 기본 키 있기 때문에 Mongoid는 해당 필드 기준으로 샤딩합니다.
class Person include Mongoid::Document belongs_to :country # Shards by country_id shard_key country: 1 # The collection must have an index that starts with the shard key index country: 1 end
점 표기법 사용하여 필드 이름을 구분하여 내장된 문서 에 샤드 키 지정할 수 있습니다. 다음 예시 address.city
필드 에 샤드 키 생성합니다.
class Person include Mongoid::Document field :address shard_key "address.city" end
참고
마침표(.
) 문자는 포함된 필드를 구분하는 데 사용되므로 Mongoid는 마침표 문자가 포함된 이름의 필드에 샤드 키 생성을 지원 하지 않습니다.
샤딩 관리 레이크 작업
db:mongoid:shard_collections
레이크 작업 실행 하여 Mongoid 모델에 정의된 샤드 키에 따라 데이터베이스 의 컬렉션을 샤드 할 수 있습니다. 컬렉션에 샤드 키 시작하는 인덱스가 포함되어 있는지 확인하려면 먼저 db:mongoid:create_indexes
레이크 작업 실행 하면 됩니다.
다음 레이크 명령을 실행하여 모델의 샤드 키를 기반으로 인덱스를 생성하고 컬렉션을 샤드 .
rake db:mongoid:create_indexes rake db:mongoid:shard_collections
인덱스 관리 및 샤딩 레이크 작업은 특정 모델 클래스에서 오류가 발생해도 중지되지 않습니다. 대신 오류를 로그 하고 다음 모델을 계속 처리 . 레이크 작업에 오류가 발생하지 않았는지 확인하려면 애플리케이션 에 대해 구성된 Mongoid 로거의 출력을 확인합니다.
추가 정보
MongoDB 사용한 샤딩 에 대해 자세히 학습 MongoDB Server 매뉴얼의 샤딩 가이드 참조하세요.
API 문서
이 가이드 에서 설명하는 shard_key
매크로에 대해 자세히 학습 shard_key API 설명서를 참조하세요.