Zarządzanie przechowywaniem danych za pomocą zasad TTL

Na tej stronie opisano, jak skonfigurować zasady dotyczące czasu życia (TTL) za pomocą konsoli Google Cloud i Google Cloud CLI. Zanim przeczytasz tę stronę, zapoznaj się z modelem danych Cloud Firestore.

Omówienie czasu życia danych

Zasady TTL pozwalają automatycznie usuwać nieaktualne dane z baz danych. Zasada TTL określa dane pole jako czas ważności dokumentów w danej grupie 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 wliczają się do kosztów usuwania dokumentów. Informacje o cenach operacji usuwania znajdziesz w cenniku Cloud Firestore.

Limity i ograniczenia

  • Możesz oznaczyć tylko jedno pole na grupę kolekcji jako pole TTL.
  • 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 zasada TTL w tym samym polu są liczone jako jedna konfiguracja pola w ramach limitu.
  • W przypadku klientów korzystających z Firestore w trybie Datastore nie można używać TTL w trybie równoczesności Optymistyczny z grupami encji. Rozważ zmianę trybu równoczesności na tryb równoczesności optymistycznej.

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.

  • Usunięcie dokumentu za pomocą TTL nie powoduje usunięcia podrzędnych kolekcji 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 usunięcie nie jest natychmiastowe i zależy od ilości danych w tej grupie kolekcji.

  • Jeśli dokument ma czas ważności w przeszłości i dodasz do kolekcji nową zasadę TTL, dokument zostanie usunięty w ciągu 24 godzin od zakończenia konfiguracji zasady TTL i jej 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 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 być ustawione na wartość Date and time lub Array zawierającą wartość Date and time. Jeśli pole nie jest obecne lub ma wartość null, można 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.

  • Usunięcie przez TTL wywołuje wszystkie aktywne detektory zrzutu i wyzwala aktywatory Cloud Functions Cloud Firestore.

Pola i indeksy TTL

Pole TTL może być indeksowane lub nieindeksowane. Ponieważ jednak 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 tworzyć punkty aktywne, co jest niezgodne ze sprawdzonymi metodami. Punkty aktywne to wysokie częstotliwości odczytu, zapisu i usuwania w wąskim zakresie dokumentów.

Domyślnie Cloud Firestore Standard tworzy indeks jednopolowy dla wszystkich pól. Możesz utworzyć wykluczenie indeksu pojedynczego pola, aby wyłączyć indeksy w polu TTL.

Uprawnienia

Podmiot zabezpieczeń konfigurujący zasadę TTL musi mieć w projekcie te uprawnienia:

  • Wyświetlanie zasad TTL wymaga uprawnień datastore.indexes.list i datastore.indexes.get.
  • Modyfikowanie zasad TTL wymaga uprawnienia datastore.indexes.update.
  • Sprawdzanie stanu operacji TTL wymaga uprawnień datastore.operations.list i datastore.operations.get.

Role, które przypisują te uprawnienia, znajdziesz w artykule Role Identity and Access Management w Cloud Firestore.

Utwórz zasadę TTL

Podczas tworzenia zasady TTL wyznaczasz pole dokumentu jako czas ważności dokumentów w grupie kolekcji.

TTL używa określonego pola do identyfikowania dokumentów, które można usunąć. 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 wartość Date and time lub Array zawierająca 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 czasem w przeszłości, dokument można natychmiast usunąć. Możesz na przykład utworzyć zasadę 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ć zasadę TTL, wykonaj te czynności:

Google Cloud Console

  1. W konsoli Google Cloud otwórz stronę Bazy danych.

    Otwórz stronę Bazy danych

  2. Wybierz wymaganą bazę danych z listy baz danych.

  3. W menu nawigacyjnym kliknij Czas życia.

  4. Kliknij Utwórz zasadę.

  5. Wpisz nazwę grupy kolekcji i nazwę pola sygnatury czasowej.

  6. Opcjonalnie: skonfiguruj Przesunięcie daty ważności. Wpisz wartość i wybierz jednostkę (dni, godziny, minuty lub sekundy). Domyślnie przesunięcie wynosi 0.

  7. Kliknij Utwórz.

Konsola powróci do strony Czas życia. Jeśli operacja rozpocznie się pomyślnie, 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 uniemożliwić gcloud CLI oczekiwanie 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 wygaśnięcia, 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 czasem trwania, na przykład 7d (7 dni) lub 24h (24 godziny). Jeśli pominiesz tę flagę, przesunięcie wygaśnięcia będzie domyślnie wynosić 0.

Czas włączania zasady TTL

Włączenie zasady TTL może potrwać co najmniej 10 minut. 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

  1. W konsoli Google Cloud otwórz stronę Bazy danych.

    Otwórz stronę Bazy danych

  2. Wybierz wymaganą bazę danych z listy baz danych.

  3. W menu nawigacyjnym kliknij Czas życia.

W konsoli zostanie wyświetlona lista zasad TTL bazy danych wraz ze stanem każdej z nich.

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

Możesz użyć gcloud CLI, aby wyświetlić więcej informacji o zasadzie TTL, która 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.

Wyłączanie zasady TTL

Aby wyłączyć zasadę TTL, wykonaj te czynności:

Google Cloud Console

  1. W konsoli Google Cloud otwórz stronę Bazy danych.

    Otwórz stronę Bazy danych

  2. Wybierz wymaganą bazę danych z listy baz danych.

  3. W menu nawigacyjnym kliknij Czas życia.

  4. W tabeli zasad TTL znajdź wiersz z zasadą TTL. W tym wierszu tabeli kliknij przycisk Usuń (kosz).

  5. Potwierdź, klikając Usuń.

Konsola powróci do strony Czas życia. Jeśli operacja się powiedzie, Cloud Firestore usunie zasadę TTL z tabeli.

gcloud

1. Aby skonfigurować zasadę TTL, użyj polecenia firestore fields ttls update. Dodaj flagę --async, aby uniemożliwić interfejsowi wiersza poleceń gcloud oczekiwanie na zakończenie operacji.

   gcloud firestore fields ttls update ttl_field --collection-group=collection_group_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ęć w ramach czasu życia danych

Łączna liczba dokumentów usuniętych przez zasady 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 zgodnie z zasadą 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.