Jednym z typowych scenariuszy pracy z bazą danych jest automatyczne przycinanie niektórych tabel na podstawie czasu. Na przykład możesz mieć tabelę zadań do śledzenia zadań w tle w swoim produkcie i chcesz zachować zadania tylko z ostatniej godziny. Sposób, w jaki jest to zwykle zaimplementowany, polega na tym, że kończysz na pisaniu procesu demona, który działa okresowo i zbiera śmieci w twoich tabelach. Biorąc pod uwagę, że jest to tak powszechny proces, ludzie z MongoDB wbudowali tę funkcję w bazę danych, którą można wykorzystać we wdrożeniach MongoDB! Nazywa się to „indeksami TTL”. Oto jak możesz używać indeksów TTL w dwóch prostych krokach:
-
Krok 1:Dodaj pole daty
Dodaj do dokumentu pole daty, aby wskazać wiek dokumentu. MongoDB użyje tego pola, aby określić, czy Twój dokument wygasł i należy go usunąć. Jeśli chcesz zachować dokument dłużej, po prostu zaktualizuj ten dokument o zaktualizowaną datę. W poniższym przykładzie dodałem pole „Czas tworzenia” do mojej kolekcji zadań:
db.jobs.insert( { "name" : testjob "creationTime": new Date('Oct 30, 2013: 11:00:00'), "type": 2, } )
-
Krok 2:Dodaj indeks TTL
Dodaj indeks TTL do swojej kolekcji w tym polu. W poniższym przykładzie użyjemy wartości exitAfterSeconds wynoszącej 3600. Spowoduje to wygaśnięcie zadań po każdej godzinie:
db.jobs.ensureIndex( { "creationTime": 1 }, { expireAfterSeconds: 3600 } )
Demon TTL jest uruchamiany co 60 sekund, więc dokument zostanie usunięty w ciągu około 60 sekund od wygaśnięcia. Kolejną zaletą indeksów TTL jest to, że zachowują się one również jak normalne indeksy – możesz więc zapytać o pole daty, a plan zapytań użyje indeksu. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją MongoDB na temat indeksów TTL.