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

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

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

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

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

Цены

Операции удаления TTL учитываются в стоимости удаления документов. Стоимость операций удаления указана в разделе «Цены на версию Cloud Firestore Enterprise» .

Пределы и ограничения

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

удаление 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
    

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

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

Используйте команду 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, см. разделы Управление пользовательской панелью мониторинга и Добавление виджетов панели мониторинга .