Используйте управляемый сервис массового удаления, чтобы удалить данные из базы данных. Эта функция поддерживает удаление для одной или нескольких групп коллекций.
Управляемый сервис массового удаления
Чтобы удалить сразу несколько документов, используйте управляемый сервис массового удаления. Сервис массового удаления Cloud Firestore доступен через инструмент командной строки gcloud и REST API Cloud Firestore.
Подготовка
Прежде чем использовать сервис управляемого массового удаления, выполните следующие действия:
- Чтобы удалять документы массово, включите платежные функции для проекта Google Cloud. Функция массового удаления доступна только в проектах Google Cloud с включенными платежными функциями.
-
Убедитесь, что у вашего аккаунта есть необходимые разрешения для Cloud Firestore. Если вы владелец проекта, у вашего аккаунта есть необходимые разрешения. В противном случае необходимые разрешения для массового удаления предоставляют следующие роли:
- Роли Cloud Firestore:
Owner,Cloud Datastore OwnerилиCloud Datastore Bulk Admin.
- Роли Cloud Firestore:
Настройте gcloud для своего проекта
Вы можете инициировать массовое удаление в консоли Google Cloud или с помощью инструмента командной строки gcloud. Чтобы использовать gcloud, настройте инструмент командной строки и подключитесь к проекту одним из следующих способов:
Получите доступ к
gcloudиз консоли Google Cloud с помощью Cloud Shell.Убедитесь, что
gcloudнастроен для нужного проекта:gcloud config set project [PROJECT_ID]
Как удалить данные с помощью управляемого сервиса массового удаления
При массовом удалении сначала находятся все подходящие документы в базе данных, а затем они удаляются пакетами. Вы по-прежнему можете запрашивать или читать эти документы, но результаты могут различаться в зависимости от достигнутого прогресса. Массовое удаление не затрагивает документы, добавленные или измененные после начала операции.
Как удалить сразу несколько групп подборок
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 документов с вас будет взиматься плата за чтение двух документов и удаление 1500 документов.Обратите внимание, что Cloud Firestore взимает плату за фактически выполненную работу. Если операция отменена или не выполнена из-за ошибки пользователя, с вас будет взиматься плата за выполненные действия. Cloud Firestore не взимает плату за чтение или удаление документов, которые в конечном итоге не были удалены, например документов, которые были изменены после начала операции удаления. Расходы будут отнесены на день завершения операции.
Массовое удаление не активирует оповещения о бюджете Google Cloud до завершения операции. Аналогично, операции чтения и удаления, выполненные в рамках массового удаления, учитываются в бесплатном плане после завершения операции. Массовое удаление не влияет на данные об использовании, которые показываются в соответствующем разделе консоли.
Посмотреть стоимость массового удаления
К операциям массового удаления применяется ярлык goog-firestoremanaged:bulkdelete. На странице отчетов об оплате Cloud Billing вы можете использовать этот ярлык, чтобы посмотреть расходы, связанные с операциями массового удаления.
Рекомендации
Не пропускайте удаленные данные, так как это может замедлить выполнение запросов.