TTL(Time to live) — 객체 만료 설정
TTL(Time to live) — 객체 만료 설정
오래된 데이터를 계속 쌓아두면 저장 공간도, 검색 성능도 점점 나빠져요. 세션 데이터나 임시 캐시처럼 일정 시간이 지나면 더 이상 쓸모없어지는 객체라면, Weaviate의 **TTL(Time to live)**을 이용해 만료 시간을 정해두고 백그라운드가 자동으로 치우게 할 수 있습니다.
TTL을 설정하면 객체가 만료되면 Weaviate의 백그라운드 프로세스가 주기적으로 컬렉션에서 제거합니다. 데이터 수명 주기와 저장 공간을 관리하기에 딱 맞는 기능이에요.
TTL은 현재 컬렉션 수준에서 정의합니다. 기준을 세 가지 방식으로 정할 수 있어요.
- 객체의 생성 시각 기준
- 객체의 마지막 수정 시각 기준
- 객체 내 특정
DATE속성 기준
어떤 TTL 정의든, 만료됐지만 아직 삭제되지 않은 객체를 쿼리 결과에서 제외할지도 선택할 수 있습니다. 백그라운드 삭제 프로세스가 실행되기 전에 잘못된 데이터를 조회하는 것을 막아주죠.
필수 조건 — TTL을 쓰려면 Weaviate 인스턴스에
OBJECTS_TTL_DELETE_SCHEDULE환경 변수를 설정해야 합니다. 이 변수는 백그라운드 삭제 프로세스의 크론 스케줄을 정의하며, 설정하지 않으면 만료 객체가 삭제되지 않아요. TTL의 최솟값은 60초입니다.
생성 시각 기준 TTL
객체의 생성 시각 메타데이터로부터 TTL을 셉니다. 값은 양수여야 합니다.
from weaviate.classes.config import Configure, Property, DataType
import datetime
client.collections.create(
name="CollectionWithTTL",
properties=[
Property(name="referenceDate", data_type=DataType.DATE),
],
object_ttl_config=Configure.ObjectTTL.delete_by_creation_time(
time_to_live=datetime.timedelta(hours=1), # 초 단위로는 3600
filter_expired_objects=True, # (선택) 쿼리에서 만료 객체 자동 제외
),
)
마지막 수정 시각 기준 TTL
객체의 마지막 수정 시각 메타데이터로부터 TTL을 셉니다. 값은 양수여야 합니다.
from weaviate.classes.config import Configure, Property, DataType
import datetime
client.collections.create(
name="CollectionWithTTL",
properties=[
Property(name="referenceDate", data_type=DataType.DATE),
],
object_ttl_config=Configure.ObjectTTL.delete_by_update_time(
time_to_live=datetime.timedelta(days=10), # 초 단위로는 864000
filter_expired_objects=True, # (선택) 쿼리에서 만료 객체 자동 제외
),
)
특정 DATE 속성 기준 TTL
객체 내 특정 DATE 속성으로부터 상대 값을 TTL로 설정합니다. 값은 양수 또는 음수일 수 있어요. 예를 들어 referenceDate가 이벤트 시작 시각이라면, 그 시작 시각에서 5분 뒤에 만료되도록 맞출 수 있습니다.
from weaviate.classes.config import Configure, Property, DataType
import datetime
client.collections.create(
name="CollectionWithTTL",
properties=[
Property(name="referenceDate", data_type=DataType.DATE),
],
object_ttl_config=Configure.ObjectTTL.delete_by_date_property(
property_name="referenceDate",
ttl_offset=datetime.timedelta(minutes=5),
),
)
더 알아보기 (Learn more)
- Concepts: Data | Time to live — TTL 개념
- References: Environment variables — 환경 변수 레퍼런스