Zarządzanie przechowywaniem danych za pomocą zasad TTL

Na tej stronie opisano, jak konfigurować zasady czasu życia danych (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 (TTL)

Używaj zasad TTL, aby automatycznie usuwać nieaktualne dane z baz danych. Zasada TTL wyznacza dane pole jako czas ważności dokumentów w danej grupie kolekcji. Dzięki TTL możesz zmniejszyć koszty przechowywania, usuwając przestarzałe dane. Dane są zwykle usuwane w ciągu 24 godzin po upłynięciu ich daty ważności.

Ceny

Operacje usuwania na podstawie TTL są wliczane do kosztów usuwania dokumentów. Cennik operacji usuwania znajdziesz w Cloud Firestore cenniku.

Limity i ograniczenia

  • Jako pole TTL możesz oznaczyć tylko 1 pole w każdej grupie kolekcji.
  • Możesz mieć maksymalnie 500 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 współbieżności Optymistyczna z grupami encji. Rozważ zmianę trybu współbieżności na tryb optymistyczny.

Usuwanie na podstawie TTL

Zwróć uwagę na te kluczowe zachowania związane z usuwaniem na podstawie TTL:

  • Usuwanie na podstawie TTL nie jest procesem natychmiastowym. Dokumenty, których ważność wygasła, nadal będą się pojawiać w zapytaniach i prośbach o wyszukanie, dopóki proces TTL ich nie usunie. TTL zapewnia terminowość usuwania, co przekłada się na niższy całkowity koszt posiadania. Dane są zwykle usuwane w ciągu 24 godzin po upłynięciu ich daty ważności.

  • Usunięcie dokumentu na podstawie TTL nie powoduje usunięcia podkolekcji w tym dokumencie.

  • Zastosowanie zasady TTL do istniejącej grupy kolekcji powoduje zbiorcze usunięcie wszystkich danych, których ważność wygasła, zgodnie z nową zasadą TTL. Pamiętaj, że to zbiorcze usuwanie również 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 momentu zakończenia konfiguracji i aktywowania zasady TTL.

  • TTL niekoniecznie usuwa dokumenty w tej samej kolejności co ich sygnatury czasowe ważności.

  • Usuwanie nie jest wykonywane w sposób transakcyjny. Dokumenty z tym samym czasem ważności niekoniecznie są usuwane w tym samym czasie. Jeśli potrzebujesz takiego zachowania, usuń dokumenty za pomocą biblioteki klienta.

  • Cloud Firestore zawsze będzie uwzględniać najnowsze pole TTL, aby określić czas ważności. Jeśli na przykład pole TTL dokumentu, którego ważność wygasła, ale nie został jeszcze usunięty, zostanie zaktualizowane do późniejszej daty, dokument nie będzie już nieważny i zostanie użyta nowa data.

  • Cloud Firestore unieważnia dokument tylko wtedy, gdy pole TTL jest ustawione na określone typy wartości. W przypadku baz danych w wersji Standard pole musi być ustawione na wartość Date and time. W przypadku baz danych w wersji Enterprise pole musi być ustawione na wartość Date and time lub wartość Array zawierającą wartość Date and time. Pozostawienie pola pustego lub ustawienie go na wartość taką jak null umożliwia wyłączenie ważności dla poszczególnych dokumentów.

  • TTL ma na celu zminimalizowanie wpływu na inne działania w bazie danych. Usuwanie na podstawie TTL jest traktowane z niższym priorytetem. Stosowane są też inne strategie, które mają na celu wygładzenie skoków ruchu spowodowanych usuwaniem na podstawie TTL.

  • Usuwanie na podstawie TTL wywołuje wszystkie aktywne detektory zrzutu i aktywuje Cloud Functions Cloud Firestore wyzwalacze.

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 powodować powstawanie hotspotów, co jest niezgodne z najlepszymi praktykami. Hotspoty to wysokie wskaźniki odczytu, zapisu i usuwania w wąskim zakresie dokumentów.

Domyślnie Cloud Firestore w wersji Standard tworzy indeks pojedynczego pola 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 musi mieć w projekcie te uprawnienia:

  • Do wyświetlania zasad TTL wymagane są uprawnienia datastore.indexes.list i datastore.indexes.get.
  • Do modyfikowania zasad TTL wymagane jest uprawnienie datastore.indexes.update.
  • Do sprawdzania stanu operacji TTL wymagane są uprawnienia datastore.operations.list i datastore.operations.get.

Role, które przypisują te uprawnienia, znajdziesz w artykule Cloud Firestore Role zarządzania tożsamościami i dostępem.

Tworzenie zasady TTL

Gdy tworzysz zasadę 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 kwalifikują się do usunięcia. W przypadku baz danych w wersji Standard pole TTL musi być ustawione na wartość Date and time. W przypadku baz danych w wersji Enterprise pole musi być ustawione na wartość Date and time lub wartość Array zawierającą wartość Date and time. Możesz wybrać pole, które już istnieje, lub wyznaczyć 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 kwalifikuje się do natychmiastowego 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 TTL dla danego dokumentu.

Aby utworzyć zasadę TTL:

Google Cloud Console

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

    Otwórz stronę Bazy danych

  2. Na liście baz danych wybierz wymaganą 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. Kliknij Utwórz.

Konsola wróci do strony Czas życia. Jeśli operacja się powiedzie, 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 interfejs wiersza poleceń gcloud nie czekał 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. Po rozpoczęciu operacji zamknięcie terminala nie spowoduje jej anulowania.

Wyświetlanie zasad TTL

Aby wyświetlić zasady TTL i ich stany:

Google Cloud Console

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

    Otwórz stronę Bazy danych

  2. Na liście baz danych wybierz wymaganą bazę danych.

  3. W menu nawigacyjnym kliknij Czas życia.

Konsola wyświetli listę zasad TTL dla Twojej bazy danych oraz stan każdej zasady.

gcloud

Aby skonfigurować zasadę TTL, użyj polecenia firestore fields ttls list. To polecenie wyświetla wszystkie zasady TTL zasad.

   gcloud firestore fields ttls list
   

Aby wyświetlić zasady 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

Za pomocą interfejsu wiersza poleceń gcloud możesz wyświetlić więcej szczegółów o zasadzie TTL, która jest w stanie CREATING.

Aby zobaczyć wszystkie uruchomione i niedawno zakończone operacje, użyj polecenia operations list:

gcloud firestore operations list

Odpowiedź zawiera szacunkowy postęp operacji.

Wyłączanie zasady TTL

Aby wyłączyć zasadę TTL:

Google Cloud Console

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

    Otwórz stronę Bazy danych

  2. Na liście baz danych wybierz wymaganą 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 wró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 firestore fields ttls update polecenia. Dodaj flagę --async, aby interfejs wiersza poleceń gcloud nie czekał na zakończenie operacji.

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

Monitorowanie usuwania na podstawie TTL

Za pomocą Cloud Monitoring możesz wyświetlać dane o usuwaniu na podstawie 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ęć na podstawie czasu życia

Łą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 a usunięciem na podstawie czasu życia

Czas, który upłynął od wygaśnięcia dokumentu na podstawie zasady TTL do jego usunięcia.

Aby skonfigurować panel z danymi Cloud Firestore zobacz Zarządzanie panelem niestandardowym i dodawanie widżetów panelu.