Вы можете использовать Cloud Firestore Managed Bulk Delete Service для удаления данных из вашей базы данных. Эта функция поддерживает удаление для одной или нескольких групп коллекций.
На этой странице описывается, как удалять документы Cloud Firestore оптом с помощью управляемого сервиса массового удаления. Управляемый сервис массового удаления Cloud Firestore доступен через инструмент командной строки gcloud
и API Cloud Firestore ( REST , RPC ).
Прежде чем начать
Прежде чем вы сможете воспользоваться услугой управляемого массового удаления, вам необходимо выполнить следующие задачи:
- Включите биллинг для вашего проекта 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 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 вы можете использовать эту метку для просмотра расходов, связанных с операциями массового удаления.
Лучшие практики
Избегайте пропуска удаленных данных, поскольку это может замедлить выполнение запросов.