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

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

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

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

Не пропускайте удаленные данные , которые могут замедлить выполнение запросов.