Na tej stronie dowiesz się, jak skonfigurować zasady czasu życia (TTL) za pomocą konsoli Google Cloud i interfejsu Google Cloud CLI. Zanim przeczytasz tę stronę, zapoznaj się z Cloud Firestoremodelem danych.
Omówienie czasu życia danych (TTL)
Używaj zasad TTL, aby automatycznie usuwać z baz danych nieaktualne dane. Zasady TTL wyznaczają określone pole jako czas wygaśnięcia dokumentów w danej grupie kolekcji. Dzięki TTL możesz zmniejszyć koszty przechowywania, usuwając przestarzałe dane. Dane są zwykle usuwane w ciągu 24 godzin po upłynięciu ich daty ważności.
Ceny
Operacje usuwania na podstawie TTL wliczają się do kosztów usuwania dokumentów. Ceny operacji usuwania znajdziesz w Cloud Firestore cenniku.
Limity i ograniczenia
- Jako pole TTL możesz oznaczyć tylko 1 pole w grupie kolekcji.
- Możesz mieć maksymalnie 1000 konfiguracji na poziomie pola. Jedna konfiguracja pola może zawierać wiele konfiguracji tego samego pola. Na przykład wykluczenie indeksowania pojedynczego pola i zasady TTL w tym samym polu liczą się jako 1 konfiguracja pola w ramach limitu.
- W przypadku klientów korzystających z Firestore w trybie Datastore nie można używać TTL w trybie współbieżności Optymistyczny z grupami encji. Rozważ zmianę trybu współbieżności na optymistyczny tryb współbieżności.
Usuwanie na podstawie TTL
Zwróć uwagę na te kluczowe sposoby działania usuwania opartego na TTL:
Usuwanie za pomocą TTL nie jest procesem natychmiastowym. Wygasłe dokumenty nadal będą się pojawiać w zapytaniach i żądaniach wyszukiwania, dopóki proces TTL ich nie usunie. TTL stawia na szybkość usuwania kosztem niższego całkowitego kosztu posiadania w przypadku usuwania. Dane są zwykle usuwane w ciągu 24 godzin po upłynięciu ich daty ważności.
Usunięcie dokumentu za pomocą TTL nie powoduje usunięcia kolekcji podrzędnych w tym dokumencie.
Zastosowanie zasady TTL do istniejącej grupy kolekcji powoduje zbiorcze usunięcie wszystkich wygasłych danych zgodnie z nową zasadą TTL. Pamiętaj, że to zbiorcze usuwanie nie jest natychmiastowe i zależy od ilości danych w danej grupie kolekcji.
Jeśli dokument ma datę ważności w przeszłości, a do kolekcji dodasz nowe zasady TTL, dokument zostanie usunięty w ciągu 24 godzin od momentu, w którym zasady TTL zostaną skonfigurowane i aktywowane.
TTL niekoniecznie usuwa dokumenty w tej samej kolejności co ich sygnatury czasowe wygaśnięcia.
Usuwanie nie jest przeprowadzane w ramach transakcji. Dokumenty z tym samym czasem wygaśnięcia niekoniecznie są usuwane w tym samym czasie. Jeśli potrzebujesz takiego działania, usuń elementy za pomocą biblioteki klienta.
Cloud Firestore zawsze będzie uwzględniać najnowsze pole TTL, aby określić datę wygaśnięcia. Jeśli np. w wygasłym, ale jeszcze nieusuniętym dokumencie pole TTL zostanie zaktualizowane do późniejszej daty, dokument nie wygaśnie i zostanie użyta nowa data.
Cloud Firestore wygasa dokument tylko wtedy, gdy pole TTL ma ustawione określone typy wartości. W przypadku baz danych w wersji Standard pole musi mieć wartość
Date and time. W przypadku baz danych w wersji Enterprise pole musi mieć wartośćDate and timelubArrayzawierającą wartośćDate and time. Pozostawienie tego pola pustego lub ustawienie w nim wartości takiej jaknullumożliwia wyłączenie wygasania w przypadku poszczególnych dokumentów.TTL ma na celu zminimalizowanie wpływu na inne działania w bazie danych. Usuwanie spowodowane przez TTL ma niższy priorytet. Stosujemy też inne strategie, aby wygładzać skoki natężenia ruchu spowodowane usuwaniem danych na podstawie czasu życia.
Usuwanie za pomocą TTL wywołuje wszystkie aktywne detektory zrzutu i zdarzenia Cloud Functions Cloud Firestore.
Pola i indeksy TTL
Pole TTL może być indeksowane lub nieindeksowane. Pole TTL jest jednak sygnaturą czasową, więc indeksowanie tego pola może wpływać na wydajność przy większym natężeniu ruchu. Indeksowanie pola sygnatury czasowej może spowodować powstanie hotspotów, co jest niezgodne ze sprawdzonymi metodami. Hotspoty to wysokie wskaźniki odczytu, zapisu i usuwania w wąskim zakresie dokumentów.
Domyślnie Cloud Firestorew wersji Standard tworzony jest indeks z 1 polem dla wszystkich pól. Możesz utworzyć wykluczenie indeksu pojedynczego pola, aby wyłączyć indeksy w polu TTL.
Uprawnienia
Podmiot konfigurujący zasadę TTL musi mieć w projekcie to uprawnienie:
- Wyświetlanie zasad TTL wymaga uprawnień
datastore.indexes.listidatastore.indexes.get. - Modyfikowanie zasad TTL wymaga uprawnienia
datastore.indexes.update. - Sprawdzanie stanu operacji TTL wymaga
datastore.operations.listidatastore.operations.get.
Listę ról, które przyznają te uprawnienia, znajdziesz w sekcji Cloud Firestore Role Identity and Access Management.
Utwórz zasadę TTL
Gdy tworzysz zasadę TTL, wyznaczasz pole dokumentu jako czas wygaśnięcia dokumentów w grupie kolekcji.
TTL używa określonego pola do identyfikowania dokumentów, które kwalifikują się do usunięcia.
W przypadku baz danych w wersji Standard pole TTL musi mieć wartość Date and time.
W przypadku baz danych w wersji Enterprise musi być ustawiona na wartość Date and time lub Array zawierającą wartość Date and time. 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 datą w przeszłości, dokument kwalifikuje się do natychmiastowego usunięcia. Możesz na przykład utworzyć zasadę TTL z polem
expireAt, a następnie dodać ją do istniejących dokumentów.Użycie innego typu danych lub nieustawienie wartości pola TTL spowoduje wyłączenie TTL dla poszczególnych dokumentów.
Aby utworzyć zasadę TTL:
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Wybierz z listy baz danych odpowiednią bazę.
W menu nawigacyjnym kliknij Czas życia.
Kliknij Utwórz zasadę.
Wpisz nazwę grupy 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 wróci na stronę Czas życia. Jeśli operacja rozpocznie się prawidłowo, na stronie zostanie dodany wpis do tabeli zasad TTL. W przypadku niepowodzenia na stronie wyświetli się komunikat o błędzie.
gcloud
Aby skonfigurować zasadę TTL, użyj polecenia firestore fields ttls
update. Dodaj flagę --async, aby zapobiec oczekiwaniu interfejsu wiersza poleceń gcloud na zakończenie operacji.
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
Aby włączyć TTL z przesunięciem ważności, dodaj flagę --expiration-offset:
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset
Zastąp expiration_offset okresem, np. 7d w przypadku 7 dni lub 24h w przypadku 24 godzin. Jeśli pominiesz tę flagę, przesunięcie wygaśnięcia
będzie domyślnie wynosić 0.
Czas włączenia zasady TTL
Włączenie zasady TTL może potrwać co najmniej 10 minut. Po rozpoczęciu operacji zamknięcie terminala nie powoduje jej anulowania.
Wyświetlanie zasad TTL
Aby wyświetlić zasady TTL i ich stany, wykonaj te czynności:
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Wybierz z listy baz danych odpowiednią bazę.
W menu nawigacyjnym kliknij Czas życia.
W konsoli wyświetlana jest lista zasad TTL dla bazy danych, w tym stan każdej zasady.
gcloud
Aby skonfigurować zasadę TTL, użyj polecenia firestore fields ttls list. To polecenie wyświetla listę wszystkich zasad TTL.
gcloud firestore fields ttls list
Aby wyświetlić listę zasad TTL w określonej grupie kolekcji, użyj tego polecenia:
gcloud firestore fields ttls list --collection-group=collection_group_name
Wyświetl szczegóły operacji
Za pomocą gcloud CLI możesz wyświetlić więcej szczegółów o zasadach TTL, które są w stanie CREATING.
Użyj polecenia operations list, aby wyświetlić wszystkie trwające i niedawno zakończone operacje:
gcloud firestore operations list
Odpowiedź zawiera szacunkowy postęp operacji.
Wyłączanie zasady TTL
Aby wyłączyć zasady TTL, wykonaj te czynności:
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Wybierz z listy baz danych odpowiednią bazę.
W menu nawigacyjnym kliknij Czas życia.
W tabeli zasad TTL znajdź wiersz z zasadami TTL. W tym wierszu tabeli kliknij przycisk Usuń (kosz).
Aby potwierdzić, kliknij Usuń.
Konsola wróci na stronę Czas życia. W przypadku powodzeniaCloud Firestore usuwa z tabeli zasadę TTL.
gcloud
1. Aby skonfigurować zasadę TTL, użyj polecenia firestore fields ttls update. Dodaj flagę --async, aby zapobiec oczekiwaniu gcloud CLI na zakończenie operacji.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
Monitorowanie usunięć TTL
Aby wyświetlić dane o usuwaniu danych na podstawie wartości TTL, kliknij Cloud Monitoring. 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ęć z powodu czasu życia danych |
Łączna liczba dokumentów usuniętych przez zasady TTL. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Opóźnienia od wygaśnięcia czasu życia do usunięcia |
Czas, który upłynął od wygaśnięcia dokumentu zgodnie z zasadami TTL do jego faktycznego usunięcia. |
Aby skonfigurować panel z Cloud Firestore wskaźnikami, zapoznaj się z artykułami zarządzanie panelem niestandardowym i dodawanie widżetów do panelu.