На этой странице описывается, как использовать консоль 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 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
В консоли 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
Просмотреть подробности операции
Вы можете использовать интерфейс командной строки gcloud для просмотра дополнительных сведений о политике TTL, которая находится в состоянии CREATING
.
Используйте команду 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 , см. разделы Управление пользовательской панелью мониторинга и Добавление виджетов панели мониторинга .