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

Вы можете использовать Cloud Firestore Managed Bulk Delete Service для удаления данных из вашей базы данных. Эта функция поддерживает удаление для одной или нескольких групп коллекций.

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

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

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

  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 beta 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]

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

После запуска операции массового удаления 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 к операциям с выставлением счетов. На странице отчетов Cloud Billing вы можете использовать эту метку для просмотра расходов, связанных с операциями массового удаления.

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

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