조리법:몽고DB에서 만료된 도큐먼트 삭제하기

위클립스
이동: 둘러보기, 찾기

몽고DB 2.2부터는 특정 필드의 시간을 만료값으로 취급하여, 자동적으로 도큐먼트를 정리할 수 있는 인덱스가 추가되었고, 통상적으로 TTL인덱스라고 언급된다.

[편집] TTL 인덱스 만들기

  1. db.sessions.ensureIndex({
  2.    "expires" : 1
  3. }, {
  4.    expireAfterSeconds : 0,
  5.    name : "만료된 섹션 제거용 TTL 인덱스"
  6. }

2 sessions 컬렉션의 expires 필드를 인덱싱 한다. 이 필드는 반드시 BSON Date 타입이어야 한다. 이 필드는 다른 인덱싱에 참여해서는 안되고, 여러 필드를 묶어 인덱싱할 수 없다는 제약이 있다.

4 현재 시간이 expires 값을 0초 초과한 경우 삭제하도록 한다. 이는 즉시 수행되지는 않으며, 60초 마다 한 번씩 수행된다.

[편집] 인덱스 확인

아래 커맨드를 입력하여 인덱스 생성을 확인한다:

db.sessions.getIndexes();

다음과 같은 결과를 볼 수 있다:

[
   {
      "v" : 1,
      "key" : {
         "_id" : 1
      },
      "ns" : "exclassdb.sessions",
      "name" : "_id_"
   },
   {      "v" : 1,      "key" : {         "expires" : 1      },      "ns" : "exclassdb.sessions",      "name" : "만료된 섹션 제거용 TTL 인덱스",      "expireAfterSeconds" : 0   }]

이제 sessions 컬렉션내의 도큐먼트들 중 expires 값이 현재 시간을 지나는 도큐먼트들은 1분마다 자동으로 정리되는 것을 알 수 있다.

이 기사에 대한 의견은 토론 페이지를 통해 나눌 수 있습니다.

개인 도구
이름공간
변수
행위
포탈
탐색
도움
도구모음