mongoDB TTL 설정 관련 잘못된 정보

1vl·2024년 11월 12일
0

삽질기록

목록 보기
4/5

몽고DB에서 TTL 인덱스를 설정하여 1분마다 mongoDB가 TTL만료 여부를 체크하고, 만료된 데이터를 삭제하도록 설정할 수 있다.
https://www.mongodb.com/ko-kr/docs/manual/tutorial/expire-data/

몽고DB에서 TTL을 설정하던 중, 일부 레코드는 TTL설정을 적용하지 않도록 영구히 보존하고자 했다.

이 떄, 공식문서의 아래 항목을 보고, 범위 밖인 경우라면 삭제되지 않는다 라고 이해하고 영구 보관하는 경우 1969년 12월 31일 11:59분으로 저장되도록 코드를 작성했지만, 영구 보관으로 설정한 데이터들이 삭제되었다.
https://www.mongodb.com/ko-kr/docs/manual/core/index-ttl/

시계열 컬렉션에 1970-01-01T00:00:00.000Z 이전 또는 2038-01-19T03:14:07.000Z 이후에 timeField 타임스탬프가 있는 문서가 포함된 경우 TTL " time to live " 기능을 사용하여 컬렉션에서 문서를 삭제하지 않습니다.

삭제된 데이터

혹시나 사용하던 버전(4.2.3) 문제인가 싶어서 최신 버전 (8.0.3)으로도 확인해 보았으나 동일한 문제가 발생했다.

아무래도 공식 문서에 적힌 내용과 실제 동작이 다르긴 한데, 명확한 원인이나 해결방안을 찾지 못 해 우선은 현재 시점에서 1000년 뒤에 만료 되도록 변경하여 작동하도록 했다.

profile
React-Native, Flutter, Java, Spring, lua

0개의 댓글