Массовое удаление данных

Используйте службу управляемого массового удаления для удаления данных из базы данных. Эта функция поддерживает удаление одной или нескольких групп коллекций.

На этой странице описывается, как удалять документы партиями с помощью сервиса управляемого массового удаления. Сервис управляемого массового удаления Cloud Firestore доступен через командную строку gcloud и REST API Cloud Firestore .

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

Прежде чем вы сможете воспользоваться услугой управляемого массового удаления, необходимо выполнить следующие задачи:

  1. Включите биллинг для вашего проекта Google Cloud . Функцию массового удаления можно использовать только для проектов Google Cloud с включённым биллингом.
  2. Убедитесь, что у вашей учётной записи есть необходимые разрешения для Cloud Firestore . Если вы являетесь владельцем проекта, у вашей учётной записи есть необходимые разрешения. В противном случае, следующие роли предоставляют необходимые разрешения для операций массового удаления:

    • Роли Cloud Firestore : Owner , Cloud Datastore Owner или администратор Cloud Datastore Bulk Admin

Настройте gcloud для вашего проекта

Вы можете инициировать операции массового удаления через консоль Google Cloud или инструмент командной строки gcloud . Чтобы использовать gcloud , настройте инструмент командной строки и подключитесь к своему проекту одним из следующих способов:

Массовое удаление данных

Операция массового удаления сначала находит все соответствующие документы в вашей базе данных и удаляет их партиями. Вы по-прежнему можете запрашивать или читать эти документы, хотя результаты могут меняться в зависимости от хода выполнения. Массовое удаление не удаляет документы, добавленные или изменённые после начала операции.

Массовое удаление определенных групп коллекций

gcloud

Для массового удаления определённых групп коллекций используйте флаг --collection-ids . Операция удаляет только группы коллекций с заданными идентификаторами. Группа коллекций включает все документы и вложенные документы (по любому пути) с указанными группами коллекций.

gcloud firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]
Например, представьте несколько документов, представляющих рестораны в коллекции restaurants верхнего уровня базы данных cymbal . В каждом документе о ресторане есть несколько вложенных подколлекций, таких как ratings , reviews и outlets . Для массового удаления групп коллекций restaurants и reviews команда выглядит следующим образом:

gcloud firestore bulk-delete \
--collection-ids=restaurants,reviews \
--database='cymbal'

Управление операциями массового удаления

После запуска операции массового удаления Cloud Firestore присваивает ей уникальное имя. Имя операции можно использовать для её удаления, отмены или проверки статуса.

Имена операций начинаются с projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/ , например:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Однако вы можете опустить префикс при указании имени операции для команд describe , cancel и delete .

Список всех операций массового удаления

gcloud

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

gcloud firestore operations list

Проверить статус операции

gcloud

Используйте команду operations describe , чтобы отобразить статус операции массового удаления.

gcloud firestore operations describe [OPERATION_NAME]

Оцените время завершения

Запрос статуса длительной операции возвращает метрики workEstimated и workCompleted . Каждая из этих метрик возвращается как в виде количества байтов, так и в виде количества документов:

  • workEstimated показывает предполагаемое общее количество байтов и документов, которые обработает операция. Cloud Firestore может не учитывать эту метрику, если не может выполнить оценку.

  • workCompleted показывает количество удалённых на данный момент байтов и документов. После завершения операции значение показывает общее количество фактически обработанных байтов и документов, которое может превышать значение workEstimated .

Разделите workCompleted на workEstimated для приблизительной оценки прогресса. Эта оценка может быть неточной, поскольку она зависит от задержки сбора статистики.

Отменить операцию

gcloud

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

gcloud firestore operations cancel [OPERATION_NAME]

Отмена запущенной операции не отменяет её. Отмена операции массового удаления не восстанавливает удалённые документы.

Удалить операцию

Используйте команду gcloud firestore operations delete для удаления завершённой операции из списка недавних. Чтобы отменить запущенную операцию, используйте предыдущую операцию отмены.

gcloud firestore operations delete [OPERATION_NAME]

Выставление счетов и ценообразование для операций массового удаления

Перед использованием сервиса управляемого массового удаления вам необходимо включить выставление счетов для вашего проекта Google Cloud .

Операции массового удаления оплачиваются за чтение и удаление документов по тарифам, указанным в ценах Cloud Firestore . Массовое удаление подразумевает одно чтение записи индекса на каждый найденный документ и одну операцию удаления на каждый удаленный документ. С вас взимается плата за одну операцию чтения до 1000 прочитанных записей индекса. Например, за операцию массового удаления, в результате которой было удалено 1500 документов, с вас будет взиматься плата за 2 чтения и 1500 удалений документов.

Обратите внимание, что Cloud Firestore взимает плату за фактически выполненную работу. Если операция отменена или не выполнена из-за ошибки пользователя, с вас будет списана сумма за выполненный период. Cloud Firestore не взимает плату за чтение или удаление документов, которые не были удалены в конечном итоге, например, документов, измененных после начала операции удаления. Стоимость будет начислена на день завершения операции.

Массовые операции удаления не активируют оповещения о вашем бюджете Google Cloud до их завершения. Аналогично, операции чтения и удаления, выполненные во время операции массового удаления, учитываются в вашем использовании бесплатного уровня после завершения операции. Массовые операции удаления не влияют на использование, отображаемое в разделе «Использование» консоли.

Посмотреть стоимость массового удаления

Операции массового удаления применяют метку goog-firestoremanaged:bulkdelete к оплачиваемым операциям. На странице отчётов по облачным платежам эту метку можно использовать для просмотра затрат, связанных с операциями массового удаления.

Лучшие практики

Избегайте пропуска удаленных данных, так как это может замедлить выполнение запросов.