시계열 데이터의 세분성 설정
참고
컬렉션을 생성한 후 Time Series 컬렉션의 세분성을 변경하려면 MongoDB 5.0.1 이상을 실행해야 합니다. MongoDB 5.0 알려진 문제를 참조하세요.
Time Series 컬렉션 을 만들 때 metaField
필드에 대해 동일한 고유 값을 가진 연속 수신 측정값 사이의 시간 간격과 가장 가까운 값으로 세분성을 설정합니다.
db.createCollection( "weather24h", { timeseries: { timeField: "timestamp", metaField: "metadata", granularity: "minutes" }, expireAfterSeconds: 86400 } )
granularity
매개변수를 설정하면 Time Series 컬렉션의 데이터가 내부적으로 저장되는 방식이 최적화되어 성능이 정확하게 향상됩니다.
매개변수를 정확하게 설정하려면 metaField
필드 값으로 지정된 고유 데이터 소스의 수집 속도에 가장 가까운 granularity
값을 선택합니다.
예를 들어 metaField
데이터가 날씨 센서를 식별하고 각 개별 센서에서 5분에 한 번씩 데이터를 수집하는 경우 "minutes"
을 선택해야 합니다. 수천 개의 센서가 있고 다른 센서에서 들어오는 데이터의 간격이 몇 초에 불과하더라도 granularity
은(는) 여전히 메타데이터로 고유하게 식별되는 한 센서의 수집 속도를 기반으로 합니다.
다음 표에서 각 granularity
값에 대해 함께 저장되는 데이터의 최대 시간을 확인할 수 있습니다.
granularity | 적용 시간 범위 |
---|---|
"seconds" (기본값) | 1시간 |
"minutes" | 24시간 |
"hours" | 30일 |
granularity
Time Series 컬렉션의 검색
granularity
의 현재 값을 검색하려면 listCollections
명령을 사용합니다.
db.runCommand( { listCollections: 1 } )
결과 문서에는 options.timeseries.granularity
필드가 포함된 Time series 컬렉션에 대한 문서가 포함되어 있습니다.
{ cursor: { id: <number>, ns: 'test.$cmd.listCollections', firstBatch: [ { name: <string>, type: 'timeseries', options: { expireAfterSeconds: <number>, timeseries: { timeField: <string>, metaField: <string>, granularity: <string>, bucketMaxSpanSeconds: <number> } }, ... }, ... ] } }
granularity
Time Series 컬렉션의 변경
granularity
매개변수 값을 변경하려면 다음 collMod
명령을 실행합니다.
db.runCommand({ collMod: "weather24h", timeseries: { granularity: "hours" } })
granularity
이(가) 설정되면 한 번에 한 레벨씩만 증가시킬 수 있습니다. "seconds"
에서 "minutes"
로 또는 "minutes"
에서 "hours"
로. 다른 변경은 허용되지 않습니다. 를 에서 로 granularity
"seconds"
"hours"
변경해야 granularity
"minutes"
"hours"
하는 경우 먼저 를 로 늘리고 로 늘립니다.
참고
샤딩된 time series 컬렉션의 granularity
는 수정할 수 없습니다.