Na tej stronie dowiesz się, jak skonfigurować zasady czasu życia (TTL) za pomocą konsoli Google Cloud i interfejsu wiersza poleceń Google Cloud. Zanim przeczytasz tę stronę, zapoznaj się z Cloud Firestoremodelem danych.
Omówienie czasu życia
Używaj zasad TTL, aby automatycznie usuwać nieaktualne dane z baz danych. 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 TTL są wliczane do kosztów usuwania dokumentów. Cennik operacji usuwania znajdziesz w Cloud Firestore cenniku.
Limity i ograniczenia
- Jako pole TTL możesz oznaczyć tylko 1 pole w grupie kolekcji.
- Dozwolonych jest maksymalnie 500 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ć wartości TTL w trybie współbieżności Optymistyczny z grupami encji. Zastanów się nad zmianą trybu współbieżności na optymistyczny tryb współbieżności.
Usuwanie TTL
Zwróć uwagę na te kluczowe zachowania związane z usuwaniem na podstawie czasu życia:
Usuwanie za pomocą TTL nie jest natychmiastowe. Wygasłe dokumenty nadal będą się pojawiać w zapytaniach i prośbach o wyszukiwanie, dopóki proces TTL ich nie usunie. TTL wymienia terminowość usuwania transakcji na korzyść 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 podzbiorów w tym dokumencie.
Zastosowanie zasady TTL do istniejącej grupy kolekcji powoduje zbiorcze usunięcie wszystkich wygasłych danych zgodnie z nową zasadą TTL. Uwaga: to zbiorcze usuwanie też nie jest natychmiastowe i zależy od ilości danych w danej grupie zbiorów.
Jeśli dokument ma czas wygaśnięcia w przeszłości i dodasz do kolekcji nowe zasady TTL, zostanie on 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 wykonywane w ramach transakcji. Dokumenty z tym samym czasem wygaśnięcia niekoniecznie są usuwane w tym samym czasie. Jeśli chcesz, aby tak się działo, 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 na przykład w przypadku dokumentu, który utracił ważność, ale nie został jeszcze usunięty, pole TTL zostanie zaktualizowane do późniejszej daty, dokument nie utraci ważności i zostanie użyta nowa data.
Cloud Firestore usuwa dokument tylko wtedy, gdy w polu TTL ustawiony jest typ
Date and time
. Jeśli pole jest nieobecne lub ma wartość np.null
, wygasanie można wyłączyć 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 uruchamia wyzwalacze Cloud Functions Cloud Firestore.
Pola i indeksy TTL
Pole TTL może być indeksowane lub nieindeksowane. Jednak ponieważ pole TTL jest sygnaturą czasową, indeksowanie tego pola może wpływać na wydajność przy większym natężeniu ruchu. Indeksowanie pola sygnatury czasowej może powodować powstawanie 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 Firestore tworzy indeks pojedynczego pola dla wszystkich pól. Możesz utworzyć wykluczenie indeksu pojedynczego pola, aby wyłączyć indeksy w polu TTL.
Uprawnienia
Podmiot konfigurujący zasady TTL musi mieć w projekcie to uprawnienie:
- Wyświetlanie zasad TTL wymaga uprawnień
datastore.indexes.list
idatastore.indexes.get
. - Modyfikowanie zasad TTL wymaga uprawnienia
datastore.indexes.update
. - Sprawdzanie stanu operacji TTL wymaga
datastore.operations.list
idatastore.operations.get
.
Role, które przypisują te uprawnienia, znajdziesz w sekcji Cloud Firestore Role Identity and Access Management.
Zanim zaczniesz
Zanim zaczniesz zarządzać zasadami TTL za pomocą interfejsu wiersza poleceń gcloud, użyj polecenia
gcloud components update
aby zaktualizować komponenty do najnowszej dostępnej wersji:
gcloud components update
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.
To pole TTL musi być typu 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, wykonaj te czynności:
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Na liście baz danych wybierz odpowiednią bazę danych.
W menu nawigacyjnym kliknij Time-to-live (Czas życia).
Kliknij Utwórz zasadę.
Wpisz nazwę grupy zbiorów i nazwę pola sygnatury czasowej.
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 interfejs wiersza poleceń gcloud nie czekał na zakończenie operacji.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
Czas włączenia zasady TTL
Nawet w przypadku pustej bazy danych włączenie zasad TTL może potrwać 10 minut lub dłużej. Po rozpoczęciu operacji zamknięcie terminala nie spowoduje 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.
Na liście baz danych wybierz odpowiednią bazę danych.
W menu nawigacyjnym kliknij Time-to-live (Czas życia).
Konsola wyświetla listę 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ą interfejsu wiersza poleceń gcloud 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ć zasadę TTL, wykonaj te czynności:
Google Cloud Console
W konsoli Google Cloud otwórz stronę Bazy danych.
Na liście baz danych wybierz odpowiednią bazę danych.
W menu nawigacyjnym kliknij Time-to-live (Czas życia).
W tabeli zasad TTL odszukaj wiersz z zasadami TTL. W tym wierszu tabeli kliknij przycisk Usuń (kosz).
Potwierdź, klikając Usuń.
Konsola wróci na stronę Czas życia. W przypadku powodzenia funkcja Cloud Firestore usuwa zasadę TTL z tabeli.
gcloud
1. Aby skonfigurować zasadę TTL, użyj polecenia
firestore fields ttls update
. Dodaj flagę --async
, aby interfejs wiersza poleceń gcloud nie czekał 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 czasu życia, kliknij Cloud Monitoring. Cloud Firestore udostępnia te dane dotyczące TTL:
Typ wskaźnika | Nazwa danych | Opis danych |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Liczba usunięć z powodu czasu życia |
Łączna liczba dokumentów usuniętych przez zasady TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Opóźnienia od utraty ważności 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 danymi, przeczytaj artykuły Zarządzanie panelem niestandardowym i Dodawanie widżetów do panelu.