Zarządzanie przechowywaniem danych za pomocą zasad TTL

Na tej stronie opisano, jak skonfigurować zasady czasu życia (TTL) za pomocą konsoli Google Cloud i interfejsu wiersza poleceń Google Cloud. 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 określone 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 jedno pole w grupie kolekcji.
  • Dozwolone jest łącznie 200 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 Firestore w trybie Datastore wartości TTL nie można używać w trybie równoległości Optymistyczny z grupami elementów. Rozważ zmianę trybu równoległości na tryb równoległości z optymalizacją.

Usuwanie wartości TTL

Pamiętaj o tych najważniejszych zachowaniach w przypadku usuwania na podstawie wartości TTL:

  • Usuwanie za pomocą 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 to zbiorcze usunięcie 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 zakończenia konfigurowania zasady TTL i jej aktywacji.

  • 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 niekoniecznie zostaną usunięte w tym samym czasie. Jeśli potrzebujesz takiego zachowania, usuń te pliki 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ść wygasł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 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 Firestore.

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 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 Firestore Role 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 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 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 stronę Bazy danych

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

  3. W menu nawigacyjnym kliknij Czas do publikacji.

  4. Kliknij Utwórz zasadę.

  5. Wpisz nazwę grupy zbiorów i nazwę pola z datą i godziną.

  6. Kliknij Utwórz.

Konsola wróci do strony Czas życia. Jeśli operacja zostanie uruchomiona pomyślnie, strona doda 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

  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

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ć 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.

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

  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żywotności.

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

  5. 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 te dane dotyczące wartości 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 w usuwaniu po upływie czasu życia

Czas między wygaśnięciem dokumentu zgodnie z zasadą TTL a jego faktycznym usunięciem.

Aby skonfigurować panel z danymi Cloud Firestore, zapoznaj się z artykułem Zarządzanie panelem niestandardowymDodawanie widżetów do panelu.