На этой странице описано, как использовать консоль Google Cloud и интерфейс командной строки Google Cloud для настройки политик времени жизни (TTL). Прежде чем читать эту страницу, вам следует ознакомиться с моделью данных Cloud Firestore .
Обзор времени начала жизни
Используйте политики TTL для автоматического удаления устаревших данных из ваших баз данных. Политика TTL определяет для каждого поля время истечения срока действия документов в определенной группе коллекций. С помощью TTL вы можете снизить затраты на хранение, удаляя устаревшие данные. Данные обычно удаляются в течение 24 часов после истечения срока их действия.
Цены
Операции удаления с временем жизни (TTL) учитываются в стоимости удаления документов. Информацию о ценах на операции удаления см. в разделе «Цены Cloud Firestore .
Ограничения и лимиты
- В каждой группе коллекций можно пометить как поле с параметром TTL только одно поле.
- Допускается максимум 500 конфигураций на уровне полей. Одна конфигурация поля может содержать несколько конфигураций для одного и того же поля. Например, исключение для индексации одного поля и политика TTL для одного и того же поля считаются одной конфигурацией поля в рамках лимита.
- Для клиентов, использующих Firestore в режиме Datastore, параметр TTL нельзя использовать с режимом параллельного доступа Optimistic With Entity Groups . Рекомендуется изменить режим параллельного доступа на Optimistic .
Удаление 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
В консоли Google Cloud перейдите на страницу «Базы данных» .
Выберите необходимую базу данных из списка баз данных.
В навигационном меню нажмите «Время, которое нужно прожить» .
Нажмите «Создать политику» .
Введите название группы коллекций и название поля для временной метки.
Нажмите «Создать» .
Консоль возвращает нас на страницу «Время жизни» . Если операция запускается успешно, страница добавляет запись в таблицу политик 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
Чтобы просмотреть политики TTL и их статусы, выполните следующие действия:
Консоль Google Cloud
В консоли Google Cloud перейдите на страницу «Базы данных» .
Выберите необходимую базу данных из списка баз данных.
В навигационном меню нажмите «Время, которое нужно прожить» .
В консоли отображается список политик TTL для вашей базы данных, а также статус каждой политики.
gcloud
Используйте команду ` firestore fields ttls list для настройки политики TTL. Следующая команда выводит список всех политик TTL.
gcloud firestore fields ttls list
Чтобы отобразить список политик TTL для конкретной группы коллекций, используйте следующую команду:
gcloud firestore fields ttls list --collection-group=collection_group_name
Просмотреть подробности операции
Для просмотра более подробной информации о политике TTL, находящейся в состоянии CREATING , можно использовать интерфейс командной строки gcloud.
Используйте команду operations list , чтобы просмотреть все запущенные и недавно завершенные операции:
gcloud firestore operations list
В ответе содержится оценка хода операции.
Отключить политику TTL
Чтобы отключить политику TTL, выполните следующие действия:
Консоль Google Cloud
В консоли Google Cloud перейдите на страницу «Базы данных» .
Выберите необходимую базу данных из списка баз данных.
В навигационном меню нажмите «Время, которое нужно прожить» .
В таблице политик TTL найдите строку, содержащую политику TTL. В этой строке таблицы нажмите кнопку «Удалить » (корзина).
Подтвердите, нажав кнопку «Удалить» .
Консоль возвращается на страницу «Время жизни» . В случае успеха Cloud Firestore удаляет политику TTL из таблицы.
gcloud
1. Используйте команду 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:
| Тип метрики | Название метрики | Описание метрики | firestore.googleapis.com/document/ttl_deletion_count | Количество удалений, приведших к увеличению продолжительности жизни | Общее количество документов, удаленных политиками TTL. |
|---|---|---|
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | Задержки между истечением срока действия и удалением данных | Прошло время между моментом истечения срока действия документа в соответствии с политикой TTL и моментом его фактического удаления. |
Чтобы настроить панель мониторинга с метриками Cloud Firestore , см. раздел «Управление пользовательской панелью мониторинга и добавление виджетов панели мониторинга» .