Используйте службу управляемого массового удаления для удаления данных из вашей базы данных. Эта функция поддерживает удаление данных из одной или нескольких групп коллекций.
На этой странице описано, как удалять документы массово с помощью управляемой службы массового удаления. Управляемая служба массового удаления 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 документов, с вас будет взиматься плата за чтение 2 документов и удаление 1500 документов.Обратите внимание, что Cloud Firestore взимает плату за фактически выполненную работу. Если операция отменена или завершилась неудачей из-за ошибки пользователя, с вас будет взиматься плата за достигнутый прогресс. Cloud Firestore не будет взимать плату за чтение или удаление документов, которые в конечном итоге не были удалены, например, документов, измененных после начала операции удаления. Стоимость будет начислена в день завершения операции.
Операции массового удаления не вызывают срабатывания оповещений о бюджете Google Cloud до их завершения. Аналогично, операции чтения и удаления, выполненные во время операции массового удаления, применяются к использованию вашего бесплатного уровня после завершения операции. Операции массового удаления не влияют на использование, отображаемое в разделе «Использование» консоли.
Просмотреть стоимость массового удаления
При операциях массового удаления к оплачиваемым операциям применяется метка goog-firestoremanaged:bulkdelete . На странице отчетов Cloud Billing вы можете использовать эту метку для просмотра затрат, связанных с операциями массового удаления.
Передовые методы
Избегайте пропуска удаленных данных, так как это может замедлить выполнение запросов.