Управляйте хранением данных с помощью политик TTL

На этой странице описывается, как использовать консоль Google Cloud и Google Cloud CLI для настройки политик времени жизни (TTL). Перед прочтением этой страницы вам следует ознакомиться с моделью данных Cloud Firestore .

Обзор времени жизни

Используйте политики TTL для автоматического удаления устаревших данных из ваших баз данных. Политика TTL назначает заданное поле в качестве срока действия документов в заданной группе коллекций. С помощью TTL вы можете снизить затраты на хранение, удалив устаревшие данные. Данные обычно удаляются в течение 24 часов после даты истечения срока действия.

Ценообразование

Операции удаления TTL учитываются в расходах на удаление документов. Для получения информации о ценах на операции удаления см. Цены Cloud Firestore .

Ограничения и ограничения

  • Вы можете отметить только одно поле в каждой группе сбора как поле TTL.
  • Вы можете иметь максимум 500 разрешенных конфигураций на уровне полей. Одна конфигурация поля может содержать несколько конфигураций для одного и того же поля. Например, исключение индексации одного поля и политика TTL для одного и того же поля считаются одной конфигурацией поля в пределе.
  • Для клиентов Firestore в режиме Datastore TTL не может использоваться с режимом параллелизма Optimistic With Entity Groups . Рассмотрите возможность изменения режима параллелизма на Optimistic concurrency mode .

удаление TTL

Обратите внимание на следующие ключевые особенности удаления, управляемого TTL:

  • Удаление через TTL не является мгновенным процессом. Просроченные документы продолжают появляться в запросах и запросах на поиск, пока процесс TTL фактически не удалит их. TTL жертвует своевременностью удаления ради снижения общей стоимости владения для удалений. Данные обычно удаляются в течение 24 часов после даты истечения срока.

  • Удаление документа через TTL не приводит к удалению вложенных коллекций этого документа.

  • Применение политики TTL к существующей группе сбора приводит к массовому удалению всех устаревших данных в соответствии с новой политикой TTL. Обратите внимание, что это массовое удаление также не происходит мгновенно и зависит от того, сколько данных существует для этой группы сбора.

  • Если срок действия документа истек и вы добавляете в коллекцию новую политику TTL, документ будет удален в течение 24 часов с момента завершения настройки политики TTL и ее активации.

  • TTL не обязательно удаляет документы в том же порядке, в котором указаны их временные метки истечения срока действия.

  • Удаления не производятся транзакционно. Документы с одинаковым сроком действия не обязательно удаляются одновременно. Если вам требуется такое поведение, выполняйте удаления с помощью клиентской библиотеки.

  • Cloud Firestore всегда будет учитывать последнее поле TTL для определения срока действия. Например, если у документа с истекшим сроком действия, но еще не удаленного, поле TTL обновлено на более позднюю дату, документ не будет просрочен, и будет использована новая дата.

  • Cloud Firestore устанавливает срок действия документа только в том случае, если поле TTL установлено на тип Date and time . Если оставить поле отсутствующим или установить его на значение, например, null то срок действия документа можно отключить для каждого документа.

  • TTL разработан для минимизации влияния на другие действия базы данных. Удаления, вызванные TTL, обрабатываются с более низким приоритетом. Также существуют другие стратегии для сглаживания пиков трафика от удалений, вызванных TTL.

  • Удаление через TTL вызывает все активные прослушиватели снимков и запускает триггеры Cloud Functions Cloud Firestore .

Поля и индексы TTL

Поле TTL может быть индексированным или неиндексированным. Однако, поскольку поле TTL является временной меткой, индексация поля может повлиять на производительность при более высоких скоростях трафика. Индексация поля временной метки может создать горячие точки , что противоречит передовым практикам. Горячие точки — это высокие скорости чтения, записи и удаления для узкого диапазона документов.

По умолчанию Cloud Firestore создает индекс с одним полем для всех полей. Вы можете создать исключение индекса с одним полем, чтобы отключить индексы в поле TTL.

Разрешения

Принципалу, настраивающему политику TTL, требуются следующие разрешения в проекте:

  • Для просмотра политик TTL требуются разрешения datastore.indexes.list и datastore.indexes.get .
  • Для изменения политик TTL требуется разрешение datastore.indexes.update .
  • Для проверки статуса операций TTL требуются datastore.operations.list и datastore.operations.get .

Информацию о ролях, назначающих эти разрешения, см. в разделе Роли управления удостоверениями и доступом Cloud Firestore .

Прежде чем начать

Прежде чем использовать интерфейс командной строки gcloud для управления политиками TTL, используйте команду gcloud components update , чтобы обновить компоненты до последней доступной версии:

gcloud components update

Создать политику TTL

При создании политики TTL вы назначаете поле документа в качестве срока действия документов в группе коллекций.

TTL использует указанное поле для идентификации документов, которые подлежат удалению. Это поле TTL должно иметь тип Date and time . Вы можете выбрать уже существующее поле или указать поле, которое планируете добавить позже.

Прежде чем устанавливать значение поля TTL, учтите следующее:

  • Значение поля TTL может быть временем в будущем, настоящем или прошлом. Если значение — это время в прошлом, документ немедленно подлежит удалению. Например, вы можете создать политику TTL с полем expireAt , которую затем добавить к существующим документам.

  • Использование любого другого типа данных или отсутствие установки значения поля TTL приведет к отключению TTL для отдельного документа.

Чтобы создать политику TTL, выполните следующие действия:

Консоль Google Cloud

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В меню навигации нажмите «Время жизни» .

  4. Нажмите «Создать политику» .

  5. Введите имя группы коллекций и имя поля временной метки.

  6. Нажмите «Создать» .

Консоль возвращается на страницу Time-to-live . Если операция успешно запускается, страница добавляет запись в таблицу политик TTL. В случае неудачи страница отображает сообщение об ошибке.

gcloud

Используйте команду firestore fields ttls update для настройки политики TTL. Добавьте флаг --async , чтобы предотвратить ожидание завершения операции в gcloud CLI.

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

Продолжительность включения политики TTL

Даже в пустой базе данных включение политики TTL может занять десять минут или больше. После запуска операции закрытие терминала не отменяет операцию.

Просмотреть политику TTL

Чтобы просмотреть политики TTL и их статусы, выполните следующие действия:

Консоль Google Cloud

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В меню навигации нажмите «Время жизни» .

Консоль отображает список политик TTL для вашей базы данных и включает статус каждой политики.

gcloud

Используйте команду firestore fields ttls list для настройки политики TTL. Следующая команда выводит список всех политик TTL.

   gcloud firestore fields ttls list
   

Чтобы составить список политик TTL в определенной группе сбора, используйте следующее:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

Просмотреть подробности операции

Вы можете использовать интерфейс командной строки gcloud для просмотра дополнительных сведений о политике TTL, которая находится в состоянии CREATING .

Используйте команду operations list , чтобы просмотреть все запущенные и недавно завершенные операции:

gcloud firestore operations list

Ответ включает оценку хода операции.

Отключить политику TTL

Чтобы отключить политику TTL, выполните следующие действия:

Консоль Google Cloud

  1. В консоли Google Cloud перейдите на страницу Базы данных .

    Перейти к базам данных

  2. Выберите необходимую базу данных из списка баз данных.

  3. В меню навигации нажмите «Время жизни» .

  4. В таблице политики TTL найдите строку для политики TTL. В этой строке таблицы нажмите кнопку Удалить (корзина).

  5. Подтвердите, нажав «Удалить» .

Консоль возвращается на страницу Time-to-live . В случае успеха Cloud Firestore удаляет политику TTL из таблицы.

gcloud

1. Используйте команду firestore fields ttls update для настройки политики TTL. Добавьте флаг --async , чтобы предотвратить ожидание завершения операции в gcloud CLI.

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

Мониторинг удалений TTL

Вы можете использовать Cloud Monitoring для просмотра метрик об удалениях, управляемых TTL. Cloud Firestore предоставляет следующие метрики для TTL:

Метрический тип Название метрики Описание метрики
firestore.googleapis.com/document/ttl_deletion_count Количество удалений по времени жизни

Общее количество документов, удаленных политиками TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Истечение срока жизни до задержек удаления

Время, прошедшее между истечением срока действия документа в соответствии с политикой TTL и его фактическим удалением.

Чтобы настроить панель мониторинга с показателями Cloud Firestore , см. разделы Управление пользовательской панелью мониторинга и Добавление виджетов панели мониторинга .