이 문서는 Google Cloud Translation API를 사용해 자동 번역되었습니다.
어떤 문서는 원문을 읽는게 나을 수도 있습니다.
개발자로서 만료된 데이터를 처리하는 것은 정말 골칫거리일 수 있습니다. 만료된 데이터를 제거하는 스크립트를 만들고 주기적으로 실행하도록 예약하는 등 이 문제를 처리하는 다양한 접근 방식이 있습니다. 그러나 이러한 솔루션은 시간이 오래 걸리고 오류가 발생하기 쉽습니다. MongoDB는 컬렉션에서 만료된 문서를 자동으로 제거하는 TTL(Time-To-Live) 컬렉션이라는 기본 제공 기능을 제공합니다. 이 기사에서는 MongoDB TTL 컬렉션을 자세히 살펴보고 이를 사용하여 만료된 데이터를 제거하는 작업을 단순화하는 방법을 알아봅니다.
MongoDB TTL 컬렉션은 생성 또는 업데이트 이후 일정 시간이 지난 후 컬렉션에서 문서를 자동으로 제거하는 방법입니다. 이 기능은 세션 데이터, 로그 데이터 또는 임시 데이터와 같이 특정 기간에만 관련된 데이터가 있는 경우에 매우 유용할 수 있습니다.
이 기능을 사용하려면 expireAfterSeconds
옵션이 문서가 만료되는 시간(초)으로 설정된 컬렉션에 인덱스를 생성해야 합니다. 이 작업이 완료되면 MongoDB는 1분에 한 번씩 컬렉션에서 만료된 문서를 자동으로 제거합니다.
TTL 인덱스를 생성하기 위해 컬렉션 객체에서 createIndex()
메서드를 사용할 수 있습니다. 문서의 만료 시간이 포함된 필드에 인덱스를 생성해야 합니다.
로그 데이터를 포함하는 logs
라는 컬렉션이 있고 하루보다 오래된 문서를 자동으로 제거하려고 한다고 가정합니다. 다음 명령을 사용하여 만료 시간이 86400(하루의 초 수)인 createdAt
필드에 TTL 인덱스를 생성할 수 있습니다.
db.logs.createIndex({createdAt: 1}, {expireAfterSeconds: 86400})
이렇게 하면 logs
컬렉션의 createdAt
필드에 TTL 인덱스가 생성되고 MongoDB는 createdAt
필드가 24시간보다 오래된 모든 문서를 제거합니다.
예를 들어 만료 시간을 변경하기 위해 TTL 인덱스를 업데이트하려면 기존 인덱스를 삭제하고 업데이트된 옵션으로 새 인덱스를 생성해야 합니다.
인덱스를 삭제하려면 컬렉션 개체에서 dropIndex()
메서드를 사용할 수 있습니다. 일주일보다 오래된 문서를 제거하기 위해 logs
컬렉션을 업데이트한다고 가정합니다. 다음 명령을 사용하여 기존 TTL 인덱스를 삭제할 수 있습니다.
db.logs.dropIndex({createdAt: 1})
인덱스가 삭제되면 업데이트된 옵션으로 새 TTL 인덱스를 생성할 수 있습니다.
db.logs.createIndex({createdAt: 1}, {expireAfterSeconds: 604800})
이렇게 하면 logs
컬렉션의 createdAt
필드에 새 TTL 인덱스가 생성되고 MongoDB는 createdAt
필드가 7일보다 오래된 모든 문서를 제거합니다.
MongoDB TTL 컬렉션으로 작업할 때 고려해야 할 몇 가지 사항이 있습니다.
MongoDB는 UTC(Coordinated Universal Time) 시간대를 사용하여 문서의 만료 시간을 현재 시간과 비교합니다. 즉, 만료 시간이 현지 시간으로 설정된 경우 인덱스를 생성하기 전에 UTC로 변환해야 합니다.
MongoDB는 매분 TTL 만료 확인을 수행합니다. 즉, 지정된 만료 시간 후 최대 60초 동안 문서가 만료될 수 있습니다. 정확한 만료가 필요한 경우 expireAfterSeconds
옵션 대신 expireAfter
필드를 사용하여 각 문서의 정확한 만료 시간을 설정할 수 있습니다.
TTL 인덱스는 특히 대규모 컬렉션을 처리할 때 애플리케이션의 성능에 영향을 미칠 수 있습니다. 이는 MongoDB가 만료된 문서를 제거하기 위해 컬렉션을 주기적으로 스캔해야 하기 때문입니다. 성능에 미치는 영향을 최소화하기 위해 컬렉션의 하위 집합에 TTL 인덱스를 만들거나 제한 컬렉션을 사용하는 것을 고려할 수 있습니다.
이 기사에서는 MongoDB TTL 컬렉션과 이를 사용하여 컬렉션에서 만료된 문서를 자동으로 제거하는 방법을 살펴보았습니다. 우리는 TTL 인덱스를 만들고 업데이트하는 방법을 살펴보고 작업할 때 몇 가지 고려 사항에 대해 논의했습니다. TTL 컬렉션을 사용하면 만료된 데이터를 제거하는 작업을 단순화하고 애플리케이션의 더 중요한 측면에 집중할 수 있습니다.