Docs Menu
Docs Home
/
MongoDB 매뉴얼
/

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

이 페이지의 내용

  • 현재 버킷팅 매개변수 조회
  • "세분성" 매개변수 사용
  • 사용자 지정 버킷팅 매개변수 사용
  • Time Series 세분성 변경

Time Series 컬렉션을 생성하면 MongoDB는 자동으로 system.buckets 시스템 컬렉션을 생성하고 수신 Time Series 데이터를 버킷으로 그룹화합니다. 세분성을 설정하면 데이터 수집 속도에 따라 데이터가 버킷되는 빈도를 제어할 수 있습니다.

MongoDB 6.3부터 사용자 지정 버킷 매개변수 bucketMaxSpanSecondsbucketRoundingSeconds를 사용하여 버킷 경계를 지정하고 Time Series 데이터의 버킷 방식을 보다 정확하게 제어할 수 있습니다.

참고

컬렉션이 생성된 후 Time Series 컬렉션의 세분성을 변경하려면 MongoDB 5.0.1 이상을 실행해야 합니다. MongoDB 5.0 알려진 문제를 참조하세요.

현재 컬렉션 값을 조회하려면 listCollections 명령을 사용합니다.

db.runCommand( { listCollections: 1 } )

Time Series 컬렉션의 경우 출력에는 granularity, bucketMaxSpanSecondsbucketRoundingSeconds 매개변수(있는 경우)가 포함됩니다.

{
cursor: {
id: <number>,
ns: 'test.$cmd.listCollections',
firstBatch: [
{
name: <string>,
type: 'timeseries',
options: {
expireAfterSeconds: <number>,
timeseries: {
timeField: <string>,
metaField: <string>,
granularity: <string>,
bucketMaxSpanSeconds: <number>,
bucketRoundingSeconds: <number>
}
},
...
},
...
]
}
}

다음 표는 지정된 granularity 값을 사용할 때 하나의 데이터 버킷에 포함되는 최대 시간 간격을 보여줍니다.

granularity
granularity 버킷 한도
seconds
1시간
minutes
24시간
hours
30일

기본적으로 granularityseconds로 설정됩니다. granularity 값을 동일한 데이터 소스에서 들어오는 측정값 사이의 시간 간격과 가장 가까운 값으로 설정하여 성능을 개선할 수 있습니다. 예를 들어, 수천 개의 센서에서 날씨 데이터를 기록하지만 각 센서의 데이터를 5분에 한 번만 기록하는 경우 granularity"minutes"로 설정합니다.

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "minutes"
},
expireAfterSeconds: 86400
}
)

granularityhours로 설정하면 최대 한 달 분량의 데이터 수집 이벤트가 단일 버킷으로 그룹화되어 탐색 시간이 길어지고 쿼리 속도가 느려집니다. seconds로 설정하면 폴링 간격당 버킷이 여러 개 생성되며, 이 중 상당수는 단일 문서만 포함할 수 있습니다.

다음도 참조하세요.

MongoDB 6.3 이상에서는 granularity 대신 두 개의 사용자 지정 버킷 매개변수를 사용하여 버킷 경계를 수동으로 설정할 수 있습니다. '자정부터 4시간마다'와 같이 고정된 시간 간격에 대해 데이터를 쿼리하려는 경우 이 방법을 고려합니다. 해당 기간 사이에 버킷이 겹치지 않도록 하면 높은 쿼리 볼륨과 insert 작업에 최적화됩니다.

사용자 지정 버킷 매개 변수를 사용하려면 두 매개 변수를 모두 같은 값으로 설정하고 granularity를 설정하지 마세요.

  • bucketMaxSpanSeconds 같은 버킷에 있는 타임스탬프 사이의 최대 시간을 설정합니다. 가능한 값은 1-31536000입니다.

  • bucketRoundingSeconds 새 버킷의 시작 타임스탬프를 결정하는 시간 간격을 설정합니다. 문서에 새 버킷이 필요한 경우 MongoDB는 문서의 타임스탬프 값을 이 간격으로 내림하여 버킷의 최소 시간을 설정합니다.

기상 관측소 예시에서 4시간마다 요약 보고서를 생성하는 경우 "minutes"granularity를 사용하는 대신 사용자 지정 버킷팅 매개변수를 14,400초로 설정하여 버킷팅을 조정할 수 있습니다.

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
bucketMaxSpanSeconds: 14400,
bucketRoundingSeconds: 14400
}
}
)

시간이 2023-03-27T16:24:35Z인 문서가 기존 버킷에 맞지 않는 경우, MongoDB는 최소 시간이 2023-03-27T16:00:00Z이고 최대 시간이 2023-03-27T19:59:59Z인 새 버킷을 생성합니다.

collMod 명령을 사용하여 더 짧은 시간 단위에서 더 긴 시간 단위로 timeseries.granularity를 늘릴 수 있습니다.

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

granularity 대신 사용자 지정 버킷팅 매개변수 bucketRoundingSecondsbucketMaxSpanSeconds를 사용하는 경우 collMod 명령에 두 사용자 지정 매개변수를 모두 포함하고 동일한 값으로 설정합니다.

db.runCommand( {
collMod: "weather24h",
timeseries: {
bucketRoundingSeconds: 86400,
bucketMaxSpanSeconds: 86400
}
} )

세분화 간격이나 사용자 지정 버킷팅 값은 줄일 수 없습니다.

참고

샤드 time series 컬렉션의 세분성을 수정하려면 MongoDB 6.0 이상을 실행해야 합니다.

돌아가기

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