Zarządzanie przechowywaniem danych za pomocą zasad TTL

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

Przegląd czasu transmisji na żywo

Dzięki zasadom TTL możesz automatycznie usuwać z baz danych nieaktualne dane. Zasada TTL wyznacza dane pole jako czas ważności dokumentów w danej grupie kolekcji. Wartość TTL pozwala obniżyć koszty przechowywania danych, 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. Cennik operacji usuwania znajdziesz w cenniku Cloud Firestore.

Ograniczenia

  • Jako pole TTL można oznaczyć tylko 1 pole na grupę kolekcji.
  • Dozwolonych jest maksymalnie 200 konfiguracji na poziomie pola. Konfiguracja z jednym polem może zawierać wiele konfiguracji tego samego pola. Na przykład wykluczenie z indeksowania pojedynczego pola i zasada TTL w tym samym polu są wliczane jako 1 konfiguracja pola do limitu.
  • W przypadku klientów Firestore w trybie Datastore nie można używać czasu TTL z trybem równoczesności Optimistic with Entity Groups (Optymalizacja z grupami encji). Rozważ zmianę trybu równoczesności na tryb optymalizacji równoczesności.

Usunięcie wartości TTL

Zwróć uwagę na te kluczowe zachowania usuwania opartego na TTL:

  • Usuwanie przez TTL nie jest procesem natychmiastowym. Dokumenty, które utraciły ważność, nadal pojawiają się w zapytaniach i żądaniach wyszukiwania, dopóki proces TTL ich nie usunie. TTL zajmuje miejsce w terminie, co ma na celu zmniejszenie całkowitego kosztu posiadania w przypadku usunięć. Dane są zwykle usuwane w ciągu 24 godzin od daty ich wygaśnięcia.

  • Usunięcie dokumentu z użyciem TTL nie spowoduje usunięcia podkolekcji w ramach tego dokumentu.

  • 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 usunięcie zbiorcze nie jest natychmiastowe i zależy od ilości danych w danej grupie kolekcji.

  • Jeśli dokument ma ustawiony 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 tej zasady i stanie się aktywna.

  • Wartość TTL nie zawsze usuwa dokumenty w tej samej kolejności co ich sygnatury czasowe.

  • Usuwanie danych nie odbywa się w sposób transakcyjny. Dokumenty o tym samym czasie ważności nie muszą być usuwane razem. Jeśli chcesz tak zrobić, usuń treści przy użyciu biblioteki klienta.

  • Aby określić datę wygaśnięcia, Cloud Firestore zawsze będzie przestrzegać ostatniego pola TTL. Jeśli na przykład pole TTL dla wygasłego, ale jeszcze nieusuniętego dokumentu zostanie zmienione na późniejszą datę, dokument nie wygaśnie i zostanie użyta nowa data.

  • Wartość TTL została zaprojektowana tak, aby zminimalizować wpływ na inne działania baz danych. Usunięcia spowodowane przez TTL są traktowane z niższym priorytetem. Dostępne są też inne strategie łagodzenia gwałtownych skoków natężenia ruchu spowodowanych usuwaniem zależnym od wartości TTL.

  • Usuwanie przez TTL wywołuje wszystkie aktywne detektory zrzutów i aktywuje aktywatory Cloud Functions Cloud Firestore.

Pola i indeksy TTL

Pole TTL może być indeksowane lub nieindeksowane. Ponieważ jednak pole TTL jest sygnaturą czasową, jego indeksowanie może wpłynąć na wydajność przy większym natężeniu ruchu. Zindeksowanie pola sygnatury czasowej może tworzyć hotspoty, co jest niezgodne ze sprawdzonymi metodami. Hotspoty zapewniają dużą częstotliwość odczytu, zapisu i usuwania dokumentów tylko do wąskiego zakresu.

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

Podmiot zabezpieczeń konfigurujący zasadę TTL wymaga w projekcie tego 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 datastore.operations.list i datastore.operations.get.

Informacje o rolach, z którymi przypisano te uprawnienia, znajdziesz w artykule na temat ról Cloud Firestore Identity and Access Management.

Zanim zaczniesz

Zanim użyjesz interfejsu wiersza poleceń gcloud do zarządzania zasadami TTL, zaktualizuj komponenty do najnowszej dostępnej wersji za pomocą polecenia gcloud components update:

gcloud components update

Utwórz zasadę TTL

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

TTL używa określonego pola do identyfikowania dokumentów, które mogą zostać usunięte. Pole TTL musi być typu Date and time. Możesz wybrać pole, które już istnieje, lub wskazać pole, które chcesz dodać później.

Zanim ustawisz wartość pola TTL, weź pod uwagę te informacje:

  • Wartość pola TTL może przypadać w przyszłości, teraz lub w przeszłości. Jeśli wartość jest datą w przeszłości, dokument kwalifikuje się od razu do usunięcia. 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 wartości TTL dla pojedynczego dokumentu.

Aby utworzyć zasadę TTL, wykonaj te czynności:

Google Cloud Console

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

    Otwórz Bazy danych

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

  3. W menu nawigacyjnym kliknij Czas życia danych.

  4. Kliknij Utwórz zasadę.

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

  6. Kliknij Utwórz.

Konsola powróci na stronę Czas życia danych. Jeśli operacja się powiedzie, na stronie pojawi się wpis do tabeli zasad TTL. W takim przypadku na stronie pojawi się komunikat o błędzie.

gcloud

Skonfiguruj zasadę TTL za pomocą polecenia firestore fields ttls update. Dodaj flagę --async, aby nie dopuścić do oczekiwania na zakończenie operacji przez interfejs wiersza poleceń gcloud.

 gcloud firestore fields ttls update
  ttl_field --collection-group=collection_group_name
  --enable-ttl 

Czas trwania włączania zasady TTL

Nawet w przypadku pustej bazy danych włączenie zasady TTL może zająć co najmniej 10 minut. Zamknięcie terminala nie anuluje operacji po rozpoczęciu operacji.

Wyświetl zasady TTL

Aby wyświetlić zasady TTL i ich stany, wykonaj te czynności:

Google Cloud Console

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

    Otwórz Bazy danych

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

  3. W menu nawigacyjnym kliknij Czas życia danych.

Konsola zawiera listę zasad TTL dla bazy danych oraz stan każdej zasady.

gcloud

Skonfiguruj zasadę TTL za pomocą polecenia firestore fields ttls list. Poniższe polecenie zawiera 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 informacji o zasadzie TTL w stanie CREATING.

Korzystając z polecenia operations list, możesz wyświetlić wszystkie uruchomione i niedawno zakończone operacje:

gcloud firestore operations list

Odpowiedź zawiera oszacowanie postępu operacji.

Wyłączanie zasady TTL

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

Google Cloud Console

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

    Otwórz Bazy danych

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

  3. W menu nawigacyjnym kliknij Czas życia danych.

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

  5. Potwierdź, klikając Usuń.

Konsola powróci na stronę Czas życia danych. Jeśli się uda, Cloud Firestore usunie zasadę TTL z tabeli.

gcloud

1. Skonfiguruj zasadę TTL za pomocą polecenia firestore fields ttls update. Dodaj flagę --async, aby nie dopuścić do oczekiwania na zakończenie operacji przez interfejs wiersza poleceń gcloud.

   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ć wskaźniki dotyczące usunięć opartych na TTL. Cloud Firestore udostępnia te wskaźniki dla TTL:

Typ wskaźnika Nazwa danych Opis danych
firestore.googleapis.com/document/ttl_deletion_count Liczba usunięć związanych z czasem życia

Łączna liczba dokumentów usuniętych przez zasady TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Wygaśnięcie czasu życia do opóźnień w usunięciu

Czas, który upłynął od momentu wygaśnięcia dokumentu zgodnie z zasadą TTL do faktycznego usunięcia dokumentu.

Aby skonfigurować panel ze wskaźnikami Cloud Firestore, zapoznaj się z informacjami o zarządzaniu panelem niestandardowym i dodawaniu widżetów panelu.