Docs Menu
Docs Home
/
MongoDB 매뉴얼
/

시계열 데이터의 세분성 설정

이 페이지의 내용

  • time series 컬렉션의 granularity 조회
  • time series 컬렉션의 granularity 변경

참고

컬렉션을 생성한 후 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의 현재 값을 검색하려면 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 매개변수 값을 변경하려면 다음 collMod 명령을 실행합니다.

db.runCommand({
collMod: "weather24h",
timeseries: { granularity: "hours" }
})

granularity 이(가) 설정되면 한 번에 한 레벨씩만 증가시킬 수 있습니다. "seconds" 에서 "minutes" 로 또는 "minutes" 에서 "hours" 로. 다른 변경은 허용되지 않습니다. 를 에서 로 granularity "seconds" "hours"변경해야 granularity "minutes" "hours" 하는 경우 먼저 를 로 늘리고 로 늘립니다.

참고

샤딩된 time series 컬렉션의 granularity 는 수정할 수 없습니다.

돌아가기

Time Series 컬렉션(TTL)에 대한 자동 제거 설정