Na tej stronie opisano, jak używać interfejsu MongoDB API, konsoli Google Cloud i Google Cloud CLI do konfigurowania indeksów czasu życia (TTL).
Omówienie czasu życia danych
Używaj indeksów TTL, aby automatycznie usuwać nieaktualne dane z baz danych. Indeks TTL wyznacza dane pole jako czas ważności dokumentów w danej kolekcji. Dzięki TTL możesz obniżyć koszty przechowywania danych, usuwając nieaktualne dane. Dane są zwykle usuwane w ciągu 24 godzin po upłynięciu ich daty ważności.
Ceny
Operacje usunięcia na podstawie TTL korzystają z zarządzanych jednostek usunięcia. Ceny znajdziesz w artykule Ceny Cloud Firestore Enterprise.
Limity i ograniczenia
- Możesz utworzyć tylko 1 indeks TTL na kolekcję.
- Możesz mieć maksymalnie 500 indeksów TTL.
Usunięcie na podstawie TTL
Zwróć uwagę na te kluczowe zachowania usuwania opartego na TTL:
Usuwanie za pomocą TTL nie jest procesem natychmiastowym. Dokumenty, które wygasły, będą nadal pojawiać się w zapytaniach i żądaniach wyszukiwania, dopóki proces TTL ich nie usunie. Zasady TTL pozwalają na usunięcie danych w określonym czasie, co pozwala obniżyć całkowity koszt posiadania w przypadku usuwania. Dane są zwykle usuwane w ciągu 24 godzin po upłynięciu ich daty ważności.
Utworzenie indeksu TTL w istniejącej kolekcji powoduje zbiorcze usunięcie wszystkich wygasłych danych zgodnie z nowym indeksem TTL. Pamiętaj, że to zbiorcze usuwanie nie jest natychmiastowe i zależy od ilości danych w kolekcji.
Jeśli dokument ma czas ważności w przeszłości i dodasz do kolekcji nowy indeks TTL, dokument zostanie usunięty w ciągu 24 godzin od zakończenia konfiguracji indeksu TTL i jego aktywacji.
TTL nie musi usuwać dokumentów w tej samej kolejności co ich sygnatury czasowe wygaśnięcia.
Usuwanie nie jest wykonywane transakcyjnie. Dokumenty z tym samym czasem ważności niekoniecznie są usuwane w tym samym czasie. Jeśli potrzebujesz takiego działania, wykonaj usunięcia za pomocą biblioteki klienta.
Cloud Firestore zawsze będzie uwzględniać najnowsze pole TTL, aby określić datę ważności. Jeśli na przykład w dokumencie, który wygasł, ale nie został jeszcze usunięty, pole TTL zostanie zaktualizowane do późniejszej daty, dokument nie wygaśnie i będzie używana nowa data.
Cloud Firestore powoduje wygaśnięcie dokumentu tylko wtedy, gdy pole TTL jest ustawione na wartość
Date and time/BSON Datelub wartośćArrayzawierającą wartośćDate and time/BSON Date. Pozostaw pole puste lub ustaw wartość nanull, aby wyłączyć wygasanie dla poszczególnych dokumentów.Funkcja TTL została zaprojektowana tak, aby zminimalizować wpływ na inne działania bazy danych. Usunięcia spowodowane przez TTL są traktowane z niższym priorytetem. Stosowane są też inne strategie, które pozwalają wygładzić skoki ruchu spowodowane usuwaniem danych na podstawie TTL.
Różnice w indeksach TTL
W przeciwieństwie do innych indeksów Firestore indeksy TTL nie są używane podczas planowania zapytań w celu zwiększenia wydajności. Aby zwiększyć wydajność zapytań w przypadku pola używanego z TTL, musisz dodać je do osobnego indeksu bez TTL.
Pamiętaj, że pola TTL używają sygnatur czasowych, więc dodanie ich do indeksu bez TTL może prowadzić do powstawania hotspotów. Punkty aktywne występują, gdy wysokie współczynniki zapisu i usuwania są skoncentrowane w wąskim zakresie dokumentów, co może negatywnie wpływać na wydajność skalowania w okresach dużego ruchu związanego z zapisem.
Uprawnienia
Podmiot zabezpieczeń, który tworzy lub usuwa indeks TTL, musi mieć w projekcie te uprawnienia:
- Wyświetlanie indeksów TTL wymaga uprawnień
datastore.indexes.listidatastore.indexes.get. - Tworzenie lub usuwanie indeksów TTL wymaga uprawnienia
datastore.indexes.update. - Sprawdzanie stanu operacji TTL wymaga uprawnień
datastore.operations.listidatastore.operations.get.
Role, które przypisują te uprawnienia, znajdziesz w artykule Role Identity and Access Management w Cloud Firestore.
Tworzenie indeksu TTL
Podczas tworzenia indeksu TTL wyznaczasz pole dokumentu jako czas ważności dokumentów w kolekcji.
TTL używa określonego pola do identyfikowania dokumentów, które można usunąć.
Pole TTL musi być ustawione na wartość Timestamp/BSON Date lub wartość Array zawierającą wartość Timestamp/BSON Date. Możesz wybrać pole, które już istnieje, lub wskazać pole, które planujesz dodać później.
Zanim ustawisz wartość pola TTL, weź pod uwagę te kwestie:
Wartość pola TTL może być czasem w przyszłości, teraźniejszości lub przeszłości. Jeśli wartość jest czasem w przeszłości, dokument można natychmiast usunąć. Możesz na przykład utworzyć indeks TTL z polem
expireAt, które następnie dodasz do istniejących dokumentów.Użycie innego typu danych lub nieustawienie wartości pola TTL spowoduje wyłączenie TTL dla danego dokumentu.
Aby utworzyć indeks TTL, wykonaj te czynności:
MongoDB API
Podczas wywoływania metody createIndex() uwzględnij opcję indeksu expireAfterSeconds:
db.COLLECTION_NAME.createIndex({"TTL_FIELD": 1, "expireAfterSeconds": EXPIRATION_OFFSET_SECONDS})
Przykład:
db.restaurants.createIndex({"ts": 1, "expireAfterSeconds": 3600})
expireAfterSeconds identyfikuje TTL jako indeks TTL i jest przesunięciem między wartością sygnatury czasowej z pola TTL a czasem wygaśnięcia. Jeśli parametr expireAfterSeconds ma wartość 0, czas ważności jest podawany bezpośrednio przez wartość sygnatury czasowej z pola TTL.
Pamiętaj o tych ograniczeniach:
- Indeksy TTL muszą zawierać dokładnie 1 pole.
- Indeksy TTL nie są używane w planowaniu zapytań i nie zwiększają ich wydajności.
- Możesz utworzyć tylko 1 indeks TTL na kolekcję.
- Logi kontrolne tworzenia indeksu TTL za pomocą interfejsu MongoDB API używają nazwy metody
google.firestore.admin.v1.FirestoreAdmin.UpdateField.
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Wybierz wymaganą bazę danych z listy baz danych.
W menu nawigacyjnym kliknij Czas życia.
Kliknij Utwórz zasadę.
Wpisz nazwę kolekcji i nazwę pola sygnatury czasowej.
Opcjonalnie: skonfiguruj Przesunięcie daty ważności. Wpisz wartość i wybierz jednostkę (dni, godziny, minuty lub sekundy). Domyślnie przesunięcie wynosi 0.
Kliknij Utwórz.
Konsola powróci do strony Czas życia. Jeśli operacja rozpocznie się pomyślnie, strona doda wpis do tabeli indeksów TTL. W przypadku niepowodzenia na stronie wyświetli się komunikat o błędzie.
gcloud
Zainstaluj i zainicjuj interfejs wiersza poleceń gcloud CLI.
Aby skonfigurować indeks TTL, użyj polecenia
firestore fields ttls update. Dodaj flagę--async, aby zapobiec oczekiwaniu przez gcloud CLI na zakończenie operacji.gcloud firestore fields ttls update \ ttl_field \ --collection-group=collection_name \ --enable-ttl
Aby włączyć indeks TTL z przesunięciem wygaśnięcia, dodaj flagę
--expiration-offset:gcloud firestore fields ttls update \ ttl_field \ --collection-group=collection_name \ --enable-ttl \ --expiration-offset=expiration_offset
Zastąp expiration_offset czasem trwania, na przykład
7d(7 dni) lub24h(24 godziny). Jeśli pominiesz tę flagę, przesunięcie wygaśnięcia będzie domyślnie wynosić 0.
Czas tworzenia indeksu TTL
Utworzenie indeksu TTL może potrwać co najmniej 10 minut. Po rozpoczęciu operacji zamknięcie terminala nie spowoduje jej anulowania.
Wyświetlanie indeksów TTL
Aby wyświetlić indeksy TTL, wykonaj te czynności:
MongoDB API
Aby wyświetlić indeksy TTL, użyj metody listIndexes(). Przykład:
db.restaurants.listIndexes()
Pamiętaj, że dane wyjściowe będą zawierać zarówno indeksy TTL, jak i indeksy inne niż TTL. Indeksy TTL będą zawierać opcję expireAfterSeconds.
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Wybierz wymaganą bazę danych z listy baz danych.
W menu nawigacyjnym kliknij Czas życia.
W konsoli zostanie wyświetlona lista indeksów TTL bazy danych wraz ze stanem każdego z nich.
gcloud
Zainstaluj i zainicjuj interfejs wiersza poleceń gcloud CLI.
Aby skonfigurować indeks TTL, użyj polecenia
firestore fields ttls list. To polecenie wyświetla listę wszystkich indeksów TTL.gcloud firestore fields ttls list
Aby wyświetlić listę indeksów TTL w określonej kolekcji, użyj tego polecenia:
gcloud firestore fields ttls list --collection-group=collection_name
Wyświetl szczegóły operacji
Możesz użyć gcloud CLI, aby wyświetlić więcej informacji o indeksie TTL, który jest w stanie CREATING.
Użyj polecenia operations list, aby wyświetlić wszystkie uruchomione i ostatnio zakończone operacje:
gcloud firestore operations list
Odpowiedź zawiera szacunkowy postęp operacji.
Usuwanie indeksu TTL
Aby usunąć indeks TTL, wykonaj te czynności:
MongoDB API
Aby usunąć indeks TTL, użyj metody dropIndex(). Przykład:
Usuwanie indeksu TTL przy użyciu nazwy indeksu
db.restaurants.dropIndex("ts_1")
Usuwanie indeksu TTL za pomocą definicji indeksu
db.restaurants.dropIndex({"ts": 1})
Pamiętaj, że logi kontrolne dotyczące usuwania indeksu TTL za pomocą interfejsu MongoDB API używają nazwy metody google.firestore.admin.v1.FirestoreAdmin.UpdateField.
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Wybierz wymaganą bazę danych z listy baz danych.
W menu nawigacyjnym kliknij Czas życia.
W tabeli indeksów TTL znajdź wiersz indeksu TTL. W tym wierszu tabeli kliknij przycisk Usuń (kosz).
Potwierdź, klikając Usuń.
Konsola powróci do strony Czas życia. W przypadku powodzenia Cloud Firestore usuwa indeks TTL z tabeli.
gcloud
Zainstaluj i zainicjuj interfejs wiersza poleceń gcloud CLI.
Aby skonfigurować indeks TTL, użyj polecenia
firestore fields ttls update. Dodaj flagę--async, aby zapobiec oczekiwaniu przez gcloud CLI na zakończenie operacji.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --disable-ttl
Monitorowanie usunięć TTL
Możesz użyć Cloud Monitoring, aby wyświetlić dane o usunięciach opartych na TTL. Cloud Firestore udostępnia te dane dotyczące TTL:
| Typ wskaźnika | Nazwa wskaźnika | Opis danych |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | Liczba usunięć danych z czasem życia |
Łączna liczba dokumentów usuniętych przez indeksy TTL. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Opóźnienia między wygaśnięciem czasu życia a usunięciem |
Czas, który upłynął od momentu wygaśnięcia dokumentu w indeksie TTL do momentu jego faktycznego usunięcia. |
Aby skonfigurować panel ze wskaźnikami Cloud Firestore, zapoznaj się z artykułami o zarządzaniu panelem niestandardowym i dodawaniu widżetów do panelu.