Zarządzanie przechowywaniem danych za pomocą zasad TTL

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. 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 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. Jedna konfiguracja pola 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 i jednocześnie liczą się do 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ównoległości na tryb równoległości z optymalizacją.

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 spowoduje 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 chcesz tak zrobić, usuń treści za pomocą biblioteki klienta.

  • Cloud Firestore zawsze będzie używać najnowszego pola TTL do określenia daty wygaśnięcia. 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.

  • 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. Istnieją też inne strategie łagodzenia gwałtownych skoków natężenia ruchu spowodowanych usuwaniem zależnym od wartości TTL.

  • 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. 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 w wąskim zakresie.

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

Uprawniony podmiot 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 datastore.operations.list i datastore.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 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 kwalifikują się do usunięcia. 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 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 dowolnego innego typu danych lub brak ustawienia wartości pola TTL spowoduje wyłączenie TTL w przypadku pojedynczego dokumentu.

Aby utworzyć zasadę TTL:

Google Cloud Console

  1. W konsoli Google Cloud 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 zostanie uruchomiona pomyślnie, strona dodaje 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

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 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 do publikacji.

Konsola zawiera listę zasad TTL Twojej bazy danych wraz ze stanem każdej z nich.

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ć zasady TTL w ramach określonej grupy kolekcji, wykonaj te czynności:

   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.

Przy użyciu 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 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 do publikacji.

  4. W tabeli zasad TTL odszukaj wiersz zasady TTL. W wierszu tabeli kliknij przycisk Usuń (ikona kosza).

  5. Potwierdź, klikając Usuń.

Konsola powróci na stronę Czas życia danych. 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 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

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 z danymi Cloud Firestore, przeczytaj artykuły Zarządzanie panelem niestandardowymDodawanie widżetów do panelu.