Time Series 인덱스
Time Series 컬렉션의 인덱스는 일반적으로 일반 컬렉션의 인덱스처럼 작동하지만 몇 가지 추가 고려 사항과 제한 사항이 있습니다.
Time Series 컬렉션 세컨더리 인덱스가 있는 경우 기능 호환성 버전(fCV)을 다운그레이드해야 한다면, 먼저 다운그레이드된 fCV와 호환되지 않는 모든 보조 인덱스를 삭제해야 합니다. 자세한 내용은 setFeatureCompatibilityVersion
을 참조하세요.
버전 6.0부터 Time Series 컬렉션의 모든 필드에 보조 인덱스를 추가할 수 있습니다. MongoDB는 개별 문서가 아닌 문서 버킷을 기준으로 Time Series 컬렉션을 인덱싱합니다. Time Series 버킷에는 공유 metaField 값이 있는 문서가 포함되어 있으며 서로 가까운 timeField 값을 기준으로 정렬됩니다. MongoDB는 metaField를 제외한 모든 필드의 최소값과 최대값을 인덱싱합니다. 개별 문서 대신 버킷을 인덱싱하면 인덱스 크기가 줄어들고 쿼리 효율성 이 향상됩니다.
팁
쿼리 성능을 향상시키려면 Time Series 컬렉션의 모든 필드에 수동으로 보조 인덱스를 추가 할 수 있습니다.
클러스터형 컬렉션
기본값 으로 MongoDB 는 버킷 시간을 기준으로 time series 컬렉션을 클러스터링합니다.
복합 인덱스
버전 6.3에 추가.
MongoDB 6.3부터 MongoDB는 Time Series 컬렉션의 metaField와 timeField에 모두 기본 복합 인덱스를 생성합니다. MongoDB는 이 인덱스를 사용하여 쿼리 성능과 속도를 향상시킵니다.
timeField
, metaField
또는 측정 필드에 복합 색인을 추가할 수 있습니다.
부분 인덱스
버전 6.0에 추가.
MongoDB 6.0부터 Time Series 컬렉션의 부분 인덱스와 함께 $or
, $in
및 $geoWithin
연산자를 사용할 수 있습니다.
metaField와 timeField에 부분 인덱스를 생성할 수 없습니다.
TTL Indexes
버전 6.3에 추가.
MongoDB 6.3부터 metaField에만 의존하는 partialFilterExpression
을 사용하여 TTL 인덱스를 만들 수 있습니다. 6.3 이전 버전에서는 expireAfterSeconds
매개변수를 기반으로 TTL 인덱스만 생성할 수 있습니다.
Time Series 컬렉션에서 expireAfterSeconds
옵션을 사용하여 문서를 만료하지 않는 경우 부분 TTL 인덱스를 생성하면 일치하는 문서에 대해서만 만료 시간이 설정됩니다. 컬렉션에서 모든 문서에 expireAfterSeconds
를 사용하는 경우 부분 TTL 인덱스를 사용하여 일치하는 문서를 더 빨리 만료시킬 수 있습니다.
금지된 인덱스
MongoDB는 Time Series 컬렉션에서 다음 인덱스 유형을 허용하지 않습니다.
metaField에 sparse index를 생성할 수 없습니다.
인덱싱 모범 사례
필터링과 동일성을 위해 metaField 인덱스를 사용합니다.
범위 쿼리에 대해 timeField 및 기타 인덱싱된 필드를 사용합니다.
일반 인덱싱 전략은 Time Series 컬렉션에도 적용됩니다. 자세한 내용은 인덱싱 전략을 참조하세요.
자세한 내용 및 예는 Time Series 컬렉션에 세컨더리 인덱스 추가를 참조하세요.