시계열 수집 제한 사항
이 페이지의 내용
이 페이지에서는 Time Series 컬렉션사용에 대한 제한 사항을 설명합니다.
지원되지 않는 기능
time series 컬렉션에는 다음 기능이 지원되지 않습니다.
Atlas Device Sync 지원은 Atlas Data Ingest를 사용하는 time series 컬렉션으로 제한됩니다.
집계 $merge 및 $out
$merge
집계 단계는 다른 컬렉션의 데이터를 time series 컬렉션에 추가하는 데 사용할 수 없습니다.
버전 7.0.3 변경 사항: $out
집계 단계를 사용하여 time series 컬렉션에 문서를 쓸 수 있습니다.
distinct 명령
Time Series 컬렉션의 고유한 데이터 구조로 인해 MongoDB는 고유한 값에 대해 효율적으로 인덱스를 생성할 수 없습니다. Time Series 컬렉션에서 distinct
명령이나 db.collection.distinct()
도우미 메서드를 사용하지 마세요. 대신 $group
집계를 사용하여 고유한 값으로 문서를 그룹화하세요.
예를 들어 meta.project = 10
인 문서에서 고유한 meta.type
값을 쿼리하려면 대신 다음을 사용하세요.
db.foo.distinct("meta.type", {"meta.project": 10})
다음을 사용하세요.
db.foo.createIndex({"meta.project":1, "meta.type":1}) db.foo.aggregate([{$match: {"meta.project": 10}}, {$group: {_id: "$meta.type"}}])
다음과 같이 작동합니다.
문서 크기
time series 컬렉션 내 문서의 최대 크기는 4 MB입니다.
삭제
MongoDB 5.1부터는 time series 컬렉션에 대해 제한된 삭제 작업을 수행할 수 있습니다. MongoDB 7.0은 delete
명령에 기반한 작업에서 대부분의 제한을 제거했습니다.
Time series 삭제는 다중 문서 트랜잭션에 대해 지원되지 않습니다.
MongoDB 5.1부터 6.3까지에서는 삭제 명령은 다음 요구 사항을 충족해야 합니다.
metaField 필드 값에서만 일치시킬 수 있습니다.
삭제 명령은 삭제할 문서 수를 제한하지 않아야 합니다.
justOne: false
를 설정하거나deleteMany()
메서드를 사용하세요.
MongoDB 7.0부터 다음 delete
명령에는 하나의 time-series 관련 제한사항만 있습니다.
다중 문서 트랜잭션에는 이러한 명령을 사용할 수 없습니다. 다른 제한은 없습니다.
시계열 컬렉션에 1970-01-01T00:00:00.000Z
이전 또는 2038-01-19T03:14:07.000Z
이후에 timeField
타임스탬프가 있는 문서가 포함된 경우 TTL " time to live " 기능을 사용하여 컬렉션에서 문서를 삭제하지 않습니다.
TTL 삭제에 대한 자세한 내용은 TTL을 설정하여 컬렉션에서 데이터 만료하기를 참조하세요.
Updates
MongoDB 5.1부터는 제한된 업데이트 작업을 수행할 수 있습니다.
업데이트 명령은 다음 요구 사항을 충족해야 합니다.
metaField
필드 값에 대해서만 일치시킬 수 있습니다.metaField
필드 값만 수정할 수 있습니다.업데이트 문서에는 업데이트 연산자 표현식만 포함될 수 있습니다.
업데이트 명령은 업데이트할 문서 수를 제한하지 않아야 합니다.
multi: true
를 설정하거나updateMany()
메서드를 사용하세요.업데이트 명령에서 업서트: true를 설정해서는 안 됩니다.
MongoDB 5.0에서 time series 컬렉션은 삽입 작업과 읽기 쿼리만 지원합니다.업 업데이트 및 수동 삭제 작업을 수행하면 오류가 발생합니다.
오래된 데이터를 자동으로 삭제하려면 자동 삭제(TTL)를 설정하세요.
컬렉션에서 모든 문서를 제거하려면 drop()
메서드를 사용하여 컬렉션을 제거합니다.
Time Series 보조 인덱스
MongoDB 6.0 이상에서는 time series 컬렉션의 보조 인덱스에 대한 지원이 개선되었습니다. 이러한 옵션에 대한 요약은 MongoDB 6.0 이상의 Time Series 보조 인덱스를 참조하세요.
Time Series 보조 인덱스
MongoDB 6.3부터 time series 컬렉션은 metaField
의 부분 인덱스에 대해 expireAfterSeconds
인덱스 속성을 지원합니다. 이전 버전의 MongoDB의 경우, 컬렉션 수준 expireAfterSeconds 매개변수를 사용합니다.
MongoDB 6.0부터는 모든 필드에 보조 인덱스를 추가할 수 있습니다.
이러한 인덱스 유형은 부분적으로 지원됩니다.
다음과 같은 인덱스 유형은 지원되지 않습니다.
Time Series 컬렉션에 세컨더리 인덱스가 있고 기능 호환성 버전 (FCV )을 다운그레이드해야 하는 경우, 먼저 다운그레이드된 FCV 와 호환되지 않는 세컨더리 인덱스를 모두 삭제해야 합니다. 자세한 내용은 를 setFeatureCompatibilityVersion
참조하세요.
MongoDB 5.0 이전의 Time Series 보조 인덱스
MongoDB 5.0 및 이전 버전:
metaField
에 보조 인덱스가 있을 수 있습니다.timeField
에 보조 인덱스가 있을 수 있습니다.metaField
가 문서인 경우, 문서 내부 필드에 보조 인덱스를 추가할 수 있습니다.
고정 사이즈 컬렉션
time series 컬렉션은 고정 사이즈 컬렉션으로 만들 수 없습니다.
컬렉션 유형 수정
컬렉션을 만들 때만 컬렉션 유형을 설정할 수 있습니다:
기존 컬렉션을 time series 컬렉션으로 변환할 수 없습니다.
time series 컬렉션은 다른 컬렉션 유형으로 변환할 수 없습니다.
기존 컬렉션에서 Time Series 컬렉션으로 데이터를 이동하려면 데이터를 Time Series 컬렉션으로 마이그레이션합니다.
timeField
및 metaField
수정
컬렉션을 생성할 때 컬렉션의 timeField
및 metaField
매개변수만 설정할 수 있습니다. 이러한 매개변수는 나중에 수정할 수 없습니다.
세분성
버킷 크기
세분성 매개변수 구성의 경우 버킷의 최대 크기는 측정값 1000 또는 데이터 125KB 중 더 작은 값입니다. 또한 MongoDB는 고유값이 많은 높은 카디널리티 데이터에 대해 더 낮은 최대 크기를 적용하여, 버킷 작업 세트가 WiredTiger 캐시에 맞도록 할 수 있습니다.
버킷 매개변수 수정하기
컬렉션의 granularity
또는 사용자 지정 버킷 매개변수 bucketMaxSpanSeconds
및 bucketRoundingSeconds
를 설정한 후에는 버킷에 포함되는 기간을 늘릴 수는 있지만 줄일 수는 없습니다. 매개변수를 수정하려면 collMod
명령을 사용합니다. 예시는 다음과 같습니다.
db.runCommand({ collMod: "timeseries", timeseries: { bucketMaxSpanSeconds: 3600, bucketRoundingSeconds: 3600 } })
참고
bucketMaxSpanSeconds
와 bucketRoundingSeconds
는 같아야 합니다. 한 매개변수를 수정하면 다른 매개변수도 동일한 값으로 설정해야 합니다.
샤딩
MongoDB 5.1 (및 5.0.6) 부터 샤딩된 time-series 컬렉션을 만들 수 있습니다.
MongoDB 5.0.6 이전 버전에서는 time series 컬렉션을 샤딩할 수 없습니다.
샤딩 관리 명령
샤딩된 time series 컬렉션에서는 샤딩 관리 명령을 실행할 수 없습니다.
샤드 키 필드
시계열 컬렉션을 샤딩할 때 샤드 키에 다음 필드만 지정할 수 있습니다.
그
metaField
하위 필드
metaField
그
timeField
샤드 키에 이러한 필드의 조합을 지정할 수 있습니다. 샤드 키 패턴에는 _id
를 포함한 다른 필드가 허용되지 않습니다.
샤드 키를 지정하는 경우:
metaField
가 될 수 있습니다.timeField
다음과 같아야 합니다.샤드 키 패턴의 끝에
팁
샤드 키로 timeField
만 지정하지 마세요. timeField
이 단조롭게 증가하기 때문에 클러스터 내의 단일 청크에 모든 쓰기가 표시될 수 있습니다. 이상적으로는 데이터가 여러 청크에 고르게 분산되어 있는 것이 좋습니다.
샤드 키를 가장 잘 선택하는 방법을 알아보려면 다음을 참조하세요.
리샤딩
샤딩된 time series 컬렉션은 다시 샤딩할 수 없습니다. 하지만 샤드 키를 세분화할 수 있습니다.
트랜잭션
트랜잭션에서 time series 컬렉션에 쓸 수 없습니다.
참고
time series 컬렉션 읽기는 트랜잭션에서 지원됩니다.
조회수
시계열 컬렉션은 쓰기 가능한 비실체화 뷰입니다. time series 컬렉션에는 보기 제한이 적용됩니다.
time-series 컬렉션 네임스페이스(즉,
system.buckets
접두사가 붙은 컬렉션)에서는 뷰를 만들 수 없습니다.
스냅샷 격리
읽기 고려 "snapshot"
이 있는 Time Series 컬렉션에 대한 읽기 작업은 읽기 작업에서 컬렉션에 대한 동시 제거 또는 이름 변경 작업이 없는 경우에만 스냅샷 격리를 보장합니다. 동일한 네임스페이스에서 세분성 설정이 다른 Time Series 컬렉션을 다시 생성해도 전체 스냅샷 격리가 이루어지지 않습니다.