Borra datos de forma masiva

Puedes usar el servicio de eliminación masiva administrado de Firestore para borrar datos de tu base de datos. Esta función admite la eliminación de uno o más grupos de colecciones.

En esta página, se describe cómo borrar documentos de Firestore de forma masiva con el servicio de eliminación masiva administrado. El servicio de eliminación masiva administrado de Firestore está disponible a través de la herramienta de línea de comandos de gcloud y las APIs (de REST y de RPC) de Firestore.

Antes de comenzar

Antes de usar el servicio administrado de eliminación masiva, debes completar las siguientes tareas:

  1. Habilita la facturación para tu proyecto de Google Cloud. Solo los proyectos de Google Cloud con facturación habilitada pueden usar la función de eliminación masiva.
  2. Asegúrate de que tu cuenta tenga los permisos necesarios para Firestore. Si eres el propietario del proyecto, tu cuenta ya tiene los permisos necesarios. De lo contrario, los siguientes roles otorgan los permisos necesarios para las operaciones de eliminación masiva:

    • Funciones de Firestore: Owner, Cloud Datastore Owner o Cloud Datastore Bulk Admin

Configura gcloud para tu proyecto

Puedes iniciar operaciones de eliminación masiva a través de la consola de Google Cloud o la herramienta de línea de comandos de gcloud. Para usar gcloud, configura la herramienta de línea de comandos y conecta tu proyecto de una de las siguientes maneras:

Cómo borrar datos de forma masiva

Una operación de eliminación masiva primero encuentra todos los documentos aplicables en tu base de datos y los borra por lotes. Puedes consultar o leer estos documentos, aunque los resultados pueden variar según el progreso realizado. La eliminación masiva no borrará los documentos que se agreguen o modifiquen después de que comience la operación.

Cómo borrar de forma masiva grupos de colecciones específicos

gcloud

Para borrar de forma masiva grupos de colecciones específicos, usa la marca --collection-ids. Con esta operación, se borran solo los grupos de colecciones que tienen los IDs especificados. Un grupo de colecciones incluye todos los documentos y documentos anidados (ubicados en cualquier ruta) con los grupos de colecciones especificados.

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]
Por ejemplo, imagina varios documentos que representan restaurantes en la colección restaurants de nivel superior de la base de datos cymbal. En cada documento de restaurante, hay varias subcolecciones anidadas, como ratings, reviews y outlets. Para borrar de forma masiva los grupos de colecciones restaurants y reviews, tu comando se verá de la siguiente manera:

gcloud beta firestore bulk-delete \
--collection-ids=restaurants,reviews \
--database='cymbal'

Administra las operaciones de eliminación masiva

Después de iniciar una operación de eliminación masiva, Firestore le asigna un nombre único. Puedes usar el nombre de la operación para borrarla, cancelarla o verificar su estado.

Los nombres de las operaciones incluyen el prefijo projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/. Por ejemplo:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Sin embargo, puedes omitir el prefijo cuando especifiques el nombre de una operación para los comandos describe, cancel, y delete.

Cómo enumerar todas las operaciones de eliminación masiva

gcloud

Para ver todas las operaciones en ejecución y las que se completaron recientemente, incluidas las operaciones de eliminación masiva, usa el comando operations list:

gcloud firestore operations list

Verifica el estado de la operación

gcloud

Usa el comando operations describe para mostrar el estado de una operación de eliminación masiva.

gcloud firestore operations describe [OPERATION_NAME]

Calcula el tiempo de finalización

Una solicitud del estado de una operación de larga duración muestra las métricas workEstimated y workCompleted. Cada una de estas métricas se muestra en cantidad de bytes y de documentos:

  • workEstimated muestra la cantidad total estimada de bytes y documentos que se procesarán en una operación. Es posible que Firestore omita esta métrica si no puede hacer una estimación.

  • workCompleted muestra la cantidad de bytes y documentos que se borraron hasta el momento. Cuando la operación se completa, el valor muestra la cantidad total real de bytes y documentos que se procesaron. Es posible que sea mayor que la del valor de workEstimated.

Divide workCompleted entre workEstimated para obtener una estimación aproximada del progreso. Es posible que esta estimación sea inexacta, ya que depende de la demora en la recopilación de estadísticas.

Cancela una operación

gcloud

Para detener una operación en curso, usa el comando operations cancel:

gcloud firestore operations cancel [OPERATION_NAME]

Cancelar una operación en curso no deshace su progreso. Si cancelas una operación de eliminación masiva, no se recuperarán los documentos borrados.

Borra una operación

Usa el comando gcloud firestore operations delete para quitar una operación completada de la lista de operaciones recientes. Para cancelar una operación en ejecución, usa la operación de cancelación anterior.

gcloud firestore operations delete [OPERATION_NAME]

Facturación y precios de las operaciones de eliminación masiva

Es obligatorio que habilites la facturación en tu proyecto de Google Cloud antes de usar el servicio administrado de eliminación masiva.

Las operaciones de eliminación masiva se cobran según las lecturas y eliminaciones de documentos con las tarifas que se indican en los precios de Firestore. Las operaciones de eliminación masiva generan una operación de lectura de entrada de índice por documento encontrado y una operación de eliminación por documento borrado. Se te cobra una operación de lectura por hasta 1,000 entradas de índice leídas. Por ejemplo, en el caso de una operación de eliminación masiva que borró 1,500 documentos, se te cobrarán 2 lecturas de documentos y 1,500 eliminaciones de documentos.

Ten en cuenta que Firestore cobra por el trabajo realizado. Si la operación se cancela o falla debido a un error del usuario, se te cobrará el progreso realizado. Firestore no cobrará por las operaciones de lectura ni eliminación de los documentos que no se borren (por ejemplo, los documentos que se modifiquen después de que se inicie la operación de eliminación). El costo se atribuirá el día en que se complete la operación.

Las operaciones de eliminación masiva no activarán las alertas de presupuesto de Google Cloud hasta que se completen. Del mismo modo, las operaciones de lectura y eliminación que se realizan durante una operación de eliminación masiva se aplican a tu cuota o uso sin cargo una vez que la operación se completa. Las operaciones de eliminación masiva no afectarán el uso que se muestra en la sección de uso de la consola.

Consulta los costos de la eliminación masiva

En las operaciones de eliminación masiva, se aplica la etiqueta goog-firestoremanaged:bulkdelete a las operaciones facturadas. En la página de informes de Facturación de Cloud, puedes usar esta etiqueta para ver los costos relacionados con las operaciones de eliminación masiva.

Prácticas recomendadas

Evita omitir los datos borrados, ya que esto podría ralentizar las consultas.