На этой странице описывается, как использовать консоль Google Cloud Platform и интерфейс командной строки Google Cloud для настройки политик срока жизни (TTL). Прежде чем читать эту страницу, вы должны понимать модель данных Cloud Firestore .
Обзор времени жизни
Используйте политики срока жизни (TTL) для автоматического удаления устаревших данных из ваших баз данных. Политика TTL определяет данное поле как время истечения срока действия для документов в данной группе сбора. С помощью TTL вы можете снизить затраты на хранение, удалив устаревшие данные. Данные обычно удаляются в течение 72 часов после истечения срока их действия.
Цены
Операции удаления TTL учитываются в расходах на удаление документов. Цены на операции удаления см. в разделе Цены на Cloud Firestore .
Пределы и ограничения
- Только одно поле в группе сбора может быть помечено как поле TTL.
- Всего разрешено 200 конфигураций уровня поля. Одна конфигурация поля может содержать несколько конфигураций для одного и того же поля. Например, исключение индексации одного поля и политика TTL для одного и того же поля учитываются как одна конфигурация поля для ограничения.
Удаление TTL
Обратите внимание на следующие ключевые особенности удаления на основе TTL:
Удаление через TTL не является мгновенным процессом. Документы с истекшим сроком действия продолжают появляться в запросах и запросах на поиск до тех пор, пока процесс TTL не удалит их. TTL меняет своевременность удаления в пользу снижения общей стоимости владения для удаления. Данные обычно удаляются в течение 72 часов после истечения срока их действия.
Удаление документа через TTL не приводит к удалению вложенных коллекций в этом документе.
Применение политики TTL к существующей группе сбора приводит к массовому удалению всех данных, срок действия которых истек в соответствии с новой политикой TTL. Обратите внимание, что это массовое удаление также не является мгновенным и зависит от того, сколько данных существует для этой группы сбора.
TTL не обязательно удаляет документы в том же порядке, что и их метки времени истечения срока действия.
Удаление не выполняется транзакционно. Документы с одинаковым сроком действия не обязательно удаляются одновременно. Если вам требуется такое поведение, выполните удаление с помощью клиентской библиотеки.
Cloud Firestore всегда будет учитывать последнее поле TTL для определения срока действия. Например, если в просроченном, но еще не удаленном документе поле TTL обновлено до более поздней даты, документ не будет просрочен и будет использоваться новая дата.
TTL предназначен для минимизации влияния на другие операции с базой данных. Удаления, управляемые TTL, обрабатываются с более низким приоритетом. Существуют и другие стратегии для сглаживания всплесков трафика из-за удалений, вызванных TTL.
Удаление через TTL отправляет push-уведомления для активных прослушивателей моментальных снимков и запускает триггеры 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 Identity and Access Management .
Прежде чем вы начнете
Прежде чем использовать интерфейс командной строки gcloud для управления политиками TTL, используйте команду gcloud components update
, чтобы обновить компоненты до последней доступной версии:
gcloud components update
Создайте политику TTL
При создании политики TTL вы назначаете поле документа в качестве срока действия для документов в группе сбора.
TTL использует указанное поле для идентификации документов, которые можно удалить. Это поле TTL должно иметь тип Date and time
. Вы можете выбрать уже существующее поле или указать поле, которое вы планируете добавить позже. Значение поля TTL может быть временем в будущем, сейчас или в прошлом. Если значением является время в прошлом, документ подлежит немедленному удалению.
Например, вы можете создать политику TTL с полем expireAt
, которое вы затем добавите в существующие документы.
Выполните следующие шаги, чтобы создать политику TTL:
Облачная консоль Google
Перейдите на страницу «Время жизни» Cloud Firestore в консоли Google Cloud Platform.
Щелкните Создать политику .
Введите имя группы сбора и имя поля метки времени.
Щелкните Создать .
Консоль вернется на страницу «Время жизни» . Если операция запускается успешно, страница добавляет запись в таблицу политик TTL. В случае сбоя на странице отображается сообщение об ошибке.
gcloud
Используйте команду firestore fields ttls update
для настройки политики TTL. Добавьте флаг --async
, чтобы интерфейс командной строки gcloud не ждал завершения операции.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
Даже в пустой базе данных включение политики TTL может занять десять или более минут. Как только вы начинаете операцию, закрытие терминала не отменяет операцию.
Просмотр политик TTL
Выполните следующие действия, чтобы просмотреть политики TTL и их статусы.
Облачная консоль Google
Перейдите на страницу «Время жизни» Cloud Firestore в консоли Google Cloud Platform.
Перейти на страницу «Время жизни»
В консоли перечислены политики 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 Firestore в консоли Google Cloud Platform.
В таблице политики TTL найдите строку для политики TTL. В этой строке таблицы нажмите кнопку Удалить (корзина).
Подтвердите, нажав Удалить .
Консоль вернется на страницу «Время жизни» . В случае успеха Cloud Firestore удаляет политику TTL из таблицы.
gcloud
Используйте команду firestore fields ttls update
для настройки политики TTL. Добавьте флаг --async
, чтобы интерфейс командной строки gcloud не ждал завершения операции.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
Мониторинг удалений TTL
Вы можете использовать Cloud Monitoring для просмотра метрик об удалениях на основе TTL. Cloud Firestore предоставляет следующие показатели для TTL:
Счетчик времени жизни | Общее количество документов, удаленных политиками срока жизни (TTL). |
Срок действия до задержки удаления | Время, прошедшее между истечением срока действия документа в соответствии с политикой срока жизни (TTL) и его фактическим удалением. |
Чтобы настроить панель мониторинга с метриками Cloud Firestore, см. раздел Управление настраиваемой панелью мониторинга и добавление виджетов панели мониторинга .