Na tej stronie dowiesz się, jak skonfigurować zasady dotyczące czasu życia (TTL) za pomocą konsoli Google Cloud i Google Cloud CLI. Zanim zaczniesz czytać tę stronę, zapoznaj się z modelem danych Cloud Firestore.
Omówienie czasu życia
Używaj zasad TTL, aby automatycznie usuwać nieaktualne dane z baz danych. Zasada TTL wyznacza pole jako czas ważności dokumentów w danej grupie kolekcji. TTL pozwala zmniejszyć koszty przechowywania, usuwając przestarzałe dane. Dane są zwykle usuwane w ciągu 24 godzin od daty ich wygaśnięcia.
Ceny
Operacje usuwania TTL są wliczane do kosztów usuwania dokumentów. Informacje o cenach operacji usuwania znajdziesz w cenniku Cloud Firestore.
Limity i ograniczenia
- Jako pole TTL można oznaczyć tylko 1 pole na grupę kolekcji.
- Dozwolone jest łącznie 200 konfiguracji na poziomie pola. Konfiguracja z jednym polem może zawierać wiele konfiguracji tego samego pola. Na przykład: wykluczenie indeksowania pojedynczego pola i zasada TTL w tym samym polu są liczone jako jedna konfiguracja pola w ramach limitu.
- W przypadku klientów Firestore w trybie Datastore wartości TTL nie można używać w trybie równoległym Optymistyczn. z grupami podmiotów. Rozważ zmianę trybu równoczesności na tryb optymalizacji równoczesności.
Usuwanie TTL
Pamiętaj o tych najważniejszych zachowaniach w przypadku usuwania na podstawie wartości TTL:
Usuwanie przez TTL nie jest procesem natychmiastowym. Wygasłe dokumenty będą nadal pojawiać się w zapytaniach i zapytaniach wyszukiwania, dopóki proces TTL nie usunie ich. Zasady TTL umożliwiają skrócenie czasu usuwania w celu obniżenia całkowitego kosztu posiadania. 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. Pamiętaj, że zbiorcze usunięcie danych nie jest natychmiastowe i zależy od ilości danych w danej grupie zbiorów.
Jeśli dokument ma datę wygaśnięcia w przeszłości i dodasz do kolekcji nową zasadę TTL, dokument zostanie usunięty w ciągu 24 godzin od momentu, gdy zasada TTL zostanie skonfigurowana i zacznie obowiązywać.
TTL niekoniecznie usuwa dokumenty w tej samej kolejności, w jakiej są one oznaczone datą wygaśnięcia.
Usunięcia nie są przeprowadzane w ramach transakcji. Dokumenty z tym samym terminem ważności nie muszą być usuwane w tym samym czasie. Jeśli potrzebujesz takiego zachowania, usuń te pliki za pomocą biblioteki klienta.
Cloud Firestore zawsze uwzględnia ostatnie pole TTL w celu określenia daty ważności. Jeśli na przykład w przypadku dokumentu, którego ważność minęła, ale nie został on jeszcze usunięty, pole TTL zostanie zaktualizowane do późniejszej daty, dokument nie utraci ważności i będzie używana nowa data.
TTL ma na celu zminimalizowanie wpływu na inne działania w bazie danych. Usunięcia spowodowane przez TTL są traktowane z mniejszym priorytetem. Stosujemy też inne strategie, aby wygładzić skok natężenia ruchu spowodowany usunięciem treści z powodu wygaśnięcia okresu ważności.
Usunięcie za pomocą TTL wywołuje wszystkie aktywne detektory zrzutu i wyzwalacze Cloud Functions Cloud Firestorewyzwalacze.
Pola i indeksy TTL
Pole TTL może być indeksowane lub nieindeksowane. Jednak pole TTL jest sygnaturą czasową, więc indeksowanie tego pola może wpływać na wydajność przy wyższych współczynnikach ruchu. Indeksowanie pola sygnatury czasowej może tworzyć punkty gorące, co jest niezgodne ze sprawdzonymi metodami. Obszary te to miejsca o wysokiej częstotliwości odczytu, zapisu i usuwania w wąskim zakresie dokumentów.
Domyślnie Cloud Firestore tworzy indeks z jednym polem dla wszystkich pól. Aby wyłączyć indeksy w polu TTL, możesz utworzyć wykluczenie indeksu pojedynczego pola.
Uprawnienia
Uprawniony podmiot konfigurujący zasadę TTL musi mieć w projekcie te uprawnienia:
- 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
.
Informacje o rolach, które przypisują te uprawnienia, znajdziesz w artykule Cloud FirestoreRole zarządzania tożsamościami i dostępem.
Zanim zaczniesz
Zanim zaczniesz zarządzać zasadami TTL za pomocą interfejsu wiersza poleceń gcloud, uaktualnij komponenty do najnowszej dostępnej wersji, używając polecenia gcloud components update
:
gcloud components update
Utwórz zasadę TTL
Podczas tworzenia zasady TTL określasz 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 pole, które chcesz 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 usunąć od razu. Możesz na przykład utworzyć zasadę TTL z polem
expireAt
, którą następnie dodasz do istniejących dokumentów.Użycie innego typu danych lub nieustawienie wartości pola TTL spowoduje wyłączenie wartości TTL dla pojedynczego dokumentu.
Aby utworzyć zasadę TTL:
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 dożywotności.
Kliknij Utwórz zasadę.
Wpisz nazwę grupy zbiorów i nazwę pola z datą i godziną.
Kliknij Utwórz.
Konsola wróci do strony Czas życia. Jeśli operacja się powiedzie, na stronie pojawi się wpis do tabeli zasad TTL. W przeciwnym razie 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
Czas włączenia zasady TTL
Włączenie zasady TTL może potrwać co najmniej 10 minut, nawet w przypadku pustej bazy danych. 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 wymaganą bazę danych z listy baz danych.
W menu nawigacyjnym kliknij Czas do publikacji.
Konsola zawiera listę zasad TTL Twojej bazy danych wraz ze stanem każdej z nich.
gcloud
Aby skonfigurować zasadę TTL, użyj polecenia firestore fields ttls list
. Poniższe polecenie wyświetla wszystkie zasady dotyczące 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świetlanie szczegółów operacji
Aby wyświetlić więcej informacji o zasadach TTL, które mają stan CREATING
, możesz użyć interfejsu wiersza poleceń gcloud.
Aby wyświetlić wszystkie trwające i niedawno zakończone operacje, użyj polecenia operations list
:
gcloud firestore operations list
Odpowiedź zawiera szacowany postęp operacji.
Wyłączanie zasady TTL
Aby wyłączyć politykę TTL, wykonaj te czynności:
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 do publikacji.
W tabeli zasad TTL odszukaj wiersz zasady TTL. W wierszu tabeli kliknij przycisk Usuń (ikona kosza).
Potwierdź, klikając Usuń.
Konsola wróci do strony Czas życia. W przypadku powodzenia Cloud Firestore usuwa zasadę TTL z tabeli.
gcloud
1. 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 --disable-ttl
Monitorowanie usuwania wartości TTL
Aby wyświetlić dane o usunięciu elementów na podstawie wartości TTL, możesz użyć Cloud Monitoring. Cloud Firestore udostępnia następujące wskaźniki dotyczące TTL:
Typ danych | Nazwa danych | Opis danych |
---|---|---|
firestore.googleapis.com/document/ttl_deletion_count | Liczba usunięcia z czasem życia |
Łączna liczba dokumentów usuniętych przez zasady TTL. |
firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Opóźnienia między czasem życia a usunięciem |
Czas między wygaśnięciem dokumentu zgodnie z zasadą TTL a jego faktycznym usunięciem. |
Aby skonfigurować panel ze wskaźnikami Cloud Firestore, przeczytaj artykuł o zarządzaniu panelem niestandardowym i dodawaniu widżetów panelu.