Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

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

이 페이지의 내용

  • 컬렉션에서 자동 제거 활성화
  • expireAfterSeconds 매개변수 변경
  • 현재 값 검색 expireAfterSeconds
  • 자동 제거 비활성화
  • 행동
  • 삭제 작업의 타이밍

time series 컬렉션을 만들 때 expireAfterSeconds 매개변수를 사용하여 지정된 시간(초)보다 오래된 문서를 자동으로 제거하도록 설정할 수 있습니다.

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

만료 임계값은 timeField 필드 값에 지정된 시간(초)을 더한 값입니다. weather24h collection에서 다음 문서를 고려합니다.

{
"metadata": {"sensorId": 5578, "type": "temperature"},
"timestamp": ISODate("2021-05-18T10:00:00.000Z"),
"temp": 12
}

문서는 "2021-05-19T10:00:00.000Z"에 데이터베이스에서 만료됩니다. 버킷의 모든 문서가 만료되면 만료된 버킷을 제거하는 백그라운드 작업이 다음 실행 중에 버킷을 제거합니다. 자세한 내용은 삭제 작업 타이밍을 참조하세요.

기존 time series 컬렉션의 문서를 자동으로 제거하려면 다음 collMod 명령을 실행하세요.

db.runCommand({
collMod: "weather24h",
expireAfterSeconds: 604801
})

expireAfterSeconds 매개변수 값을 변경하려면 다음 collMod 명령을 실행합니다.

db.runCommand({
collMod: "weather24h",
expireAfterSeconds: 604801
})

expireAfterSeconds의 현재 값을 검색하려면 listCollections 명령을 사용합니다.

db.runCommand( { listCollections: 1 } )

결과 문서에는 options.expireAfterSeconds 필드가 포함된 Time series 컬렉션에 대한 문서가 포함되어 있습니다.

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

자동 제거를 사용하지 않으려면 collMod 명령을 사용하여 expireAfterSecondsoff로 설정합니다.

db.runCommand({
collMod: "weather24h",
expireAfterSeconds: "off"
})

MongoDB는 만료된 데이터가 만료 즉시 삭제된다는 것을 보장하지 않습니다. 버킷의 모든 문서가 만료되면 만료된 버킷을 제거하는 백그라운드 작업이 다음 실행 중에 버킷을 제거합니다. 단일 버킷이 처리할 수 있는 최대 시간은 time series 컬렉션의 granularity 기준으로 제어됩니다.

granularity
적용 시간 범위
"seconds" (기본값)
1시간
"minutes"
24시간
"hours"
30일

만료된 버킷을 제거하는 백그라운드 작업은 60초마다 실행됩니다. 따라서 문서가 만료되고 버킷에 있는 다른 모든 문서가 만료되고 백그라운드 작업이 실행되기 전까지의 기간 동안 문서가 컬렉션에 남아 있을 수 있습니다.

제거 작업 기간은 mongod 인스턴스의 워크로드에 따라 달라지므로 만료된 데이터는 백그라운드 작업 실행 사이의 60초를 초과하는 기간 동안 존재할 수 있습니다.

돌아가기

데이터 마이그레이션