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

Это относится только к версии Cloud Firestore Enterprise.

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

Обзор времени начала жизни

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

Цены

Операции удаления, соответствующие времени жизни документа (TTL), учитываются в стоимости удаления документов. Информацию о ценах на операции удаления см. в разделе «Цены Cloud Firestore Enterprise Edition» .

Ограничения и лимиты

  • В каждой коллекции можно пометить как поле с параметром TTL только одно.
  • Максимальное количество конфигураций TTL на уровне полей — 500.

Удаление TTL

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

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

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

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

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

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

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

  • Совместимость Cloud Firestore с MongoDB позволяет удалить документ только в том случае, если поле TTL задано в формате Date and time или BSON Date . Чтобы отключить удаление документа для каждого документа отдельно, оставьте поле пустым или задайте ему значение, например, null

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

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

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

Разрешения

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

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

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

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

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

gcloud components update

Создайте политику TTL.

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

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

Перед установкой значения поля TTL учтите следующее:

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

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

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

Консоль Google Cloud

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

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

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

  3. В навигационном меню нажмите «Время, которое нужно прожить» .

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

  5. Введите название коллекции и название поля для временной метки.

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

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

gcloud

  1. Установите и инициализируйте интерфейс командной строки gcloud CLI .

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

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

длительность действия политики TTL

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

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

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

Консоль Google Cloud

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

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

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

  3. В навигационном меню нажмите «Время, которое нужно прожить» .

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

gcloud

  1. Установите и инициализируйте интерфейс командной строки gcloud CLI .

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

    gcloud firestore fields ttls list
    

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

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

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

Для просмотра более подробной информации о политике TTL, находящейся в состоянии CREATING , можно использовать gcloud CLI .

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

gcloud firestore operations list

В ответе содержится оценка хода операции.

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

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

Консоль Google Cloud

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

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

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

  3. В навигационном меню нажмите «Время, которое нужно прожить» .

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

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

Консоль возвращается на страницу «Время жизни» . В случае успеха Cloud Firestore с поддержкой MongoDB удаляет политику TTL из таблицы.

gcloud

  1. Установите и инициализируйте интерфейс командной строки gcloud CLI .

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

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

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

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

Тип метрики Название метрики Описание метрики
firestore.googleapis.com/document/ttl_deletion_count Время до удаления живого объекта

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

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays Время жизни, истечение срока действия и задержка удаления

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

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