문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

해시 인덱스

이 페이지의 내용

  • 사용 사례
  • 행동
  • 부동 소수점 숫자
  • 제한 사항
  • 시작하기
  • 세부 정보
  • 해싱 함수
  • 포함된 문서
  • 자세히 알아보기

해시된 인덱스는 인덱스된 필드 값의 해시를 수집하고 저장합니다.

해시된 인덱스는 해시된 샤드 키를 사용한 샤딩을 지원합니다. 해시 기반 샤딩은 필드의 해시 인덱스를 샤드 키로 사용하여 샤딩된 클러스터에서 데이터를 분할합니다.

해시된 샤드 키를 사용하여 컬렉션을 샤딩하면 범위 샤딩에 비해 샤드 간에 데이터가 더 고르게 분포됩니다.

샤드 키가 단조롭게 증가하는 경우, 해시 인덱스를 샤드 키로 사용하면 최대 키의상한으로 샤드에 데이터를 쓰는 것과 달리 샤드 간에 데이터를 균등하게 분배할 수 있습니다.

단조롭게 증가하는 샤드 키의 일반적인 예는 타임스탬프와 ObjectId 값입니다.

해시된 인덱스는 해시하기 전에 부동 소수점 숫자를 64비트 정수로 자릅니다. 예를 들어 해시된 인덱스는 동일한 해시를 사용하여 2.3, 2.2, 2.9 값을 저장합니다. 이는 단일 해시 키에 여러 값이 할당되는 충돌입니다. 충돌은 쿼리 성능에 부정적인 영향을 미칠 수 있습니다.

충돌을 방지하려면 64비트 정수로 안정적으로 변환한 다음 다시 부동 소수점으로 변환할 수 없는 부동 소수점 숫자에 해시 인덱스를 사용하지 마세요.

해시 인덱스는 2 53보다 큰 부동 소수점 숫자를 지원하지 않습니다.

해시된 인덱스에는 배열 필드 및 고유 속성에 대한 제한이 있습니다.

해싱 함수는 다중 키 인덱스를 지원하지 않습니다. 배열이 포함된 필드에 해시된 인덱스를 만들 거나 해시된 인덱스 필드에 배열을 삽입할 수 없습니다.

해시된 인덱스에는 고유 제약 조건을 지정할 수 없습니다. 대신 고유 제약 조건을 사용하여 해시되지 않은 인덱스를 추가로 만들 수 있습니다. 몽고DB는 해시되지 않은 인덱스를 사용하여 선택한 필드에 고유성을 적용할 수 있습니다.

해시된 인덱스를 만들려면 해시된 인덱스 만들기를 참조하십시오.

이 섹션에서는 해시 인덱스에 대한 기술적 세부 사항을 설명합니다.

중요

MongoDB는 쿼리를 해결하기 위해 해시된 인덱스를 사용할 때 해시 함수를 사용하여 자동으로 해시 값을 계산합니다. 애플리케이션은 해시를 계산할 필요가 없습니다.

키의 해시된 값을 확인하려면 convertShardKeyToHashed() 메서드를 사용하세요. 이 방법은 해시 인덱스와 동일한 해시 함수를 사용합니다.

해싱 함수는 포함된 문서를 축소하고 전체 값에 대한 해시를 계산합니다.

← 지리적 공간 인덱스 제한