Eliminar entidades en bloque

Usa el servicio de eliminación en bloque gestionado para eliminar datos de tu base de datos. Esta función admite la eliminación de uno o varios tipos.

En esta página se describe cómo eliminar entidades en bloque mediante el servicio de eliminación en bloque gestionado. El servicio de eliminación masiva gestionado en modo Datastore está disponible a través de la herramienta de línea de comandos gcloud y de la API REST de Firestore.

Antes de empezar

Para poder usar el servicio de eliminación en bloque gestionada, debes completar las siguientes tareas:

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

    • Roles del modo de Datastore: Owner, Cloud Datastore Owner o Cloud Datastore Bulk Admin

Configurar gcloud en tu proyecto

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

Eliminar datos en bloque

Una operación de eliminación en bloque primero busca todas las entidades aplicables en tu base de datos y las elimina en lotes. Puedes seguir consultando o leyendo estas entidades, aunque los resultados pueden variar en función del progreso que se haya hecho. La eliminación en bloque no elimina ninguna entidad añadida o modificada después de que se inicie la operación.

Eliminar tipos específicos en bloque

gcloud

Para eliminar en bloque tipos específicos, usa la marca --collection-ids. La marca usa la terminología de Firestore, pero un ID de grupo de colecciones es lo mismo que un ID de tipo. La operación solo elimina los tipos con los IDs proporcionados. Un tipo incluye todas las entidades y las entidades anidadas (en cualquier ruta) con los tipos especificados.

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]

Gestionar operaciones de eliminación en bloque

Cuando inicias una operación de eliminación en bloque, el modo Datastore le asigna un nombre único. Puedes usar el nombre de la operación para eliminarla, cancelarla o consultar su estado.

Los nombres de las operaciones van precedidos de projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, por ejemplo:

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

Sin embargo, puedes omitir el prefijo al especificar un nombre de operación para los comandos describe, cancel y delete.

Mostrar todas las operaciones de eliminación en bloque

gcloud

Usa el comando operations list para ver todas las operaciones en curso y las que se han completado recientemente, incluidas las operaciones de eliminación en bloque:

gcloud firestore operations list

Comprobar el estado de la operación

gcloud

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

gcloud firestore operations describe [OPERATION_NAME]

Estimar el tiempo de finalización

Una solicitud del estado de una operación de larga duración devuelve las métricas workEstimated y workCompleted. Cada una de estas métricas se devuelve tanto en número de bytes como en número de entidades:

  • workEstimated muestra el número total estimado de bytes y entidades que procesará una operación. Es posible que el modo Datastore omita esta métrica si no puede hacer una estimación.

  • workCompleted muestra el número de bytes y entidades eliminados hasta el momento. Una vez completada la operación, el valor muestra el número total de bytes y entidades que se han procesado, que puede ser superior al valor de workEstimated.

Divide workCompleted entre workEstimated para obtener una estimación aproximada del progreso. Esta estimación puede ser imprecisa, ya que depende de la recogida de estadísticas con retraso.

Cancelar una operación

gcloud

Usa el comando operations cancel para detener una operación en curso:

gcloud firestore operations cancel [OPERATION_NAME]

Cancelar una operación en curso no deshace la operación. Si cancelas una operación de eliminación en bloque, no se recuperarán las entidades eliminadas.

Eliminar 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 curso, usa la operación de cancelación anterior.

gcloud firestore operations delete [OPERATION_NAME]

Facturación y precios de las operaciones de eliminación en bloque

Debes habilitar la facturación de tu Google Cloud proyecto para poder usar el servicio de eliminación masiva gestionado.

Las operaciones de eliminación por lotes se cobran por lecturas y eliminaciones de entidades según las tarifas indicadas en la página de precios del modo Datastore. Las operaciones de eliminación en bloque conllevan una lectura de entrada de índice por cada entidad encontrada y una operación de eliminación por cada entidad eliminada. Se te cobra una operación de lectura por cada 1000 entradas de índice leídas. Por ejemplo, en una operación de eliminación en bloque que haya eliminado 1500 entidades, se te cobrarán 2 lecturas de entidades y 1500 eliminaciones de entidades.

Ten en cuenta que el modo Datastore cobra por el trabajo real realizado. Si la operación se cancela o falla debido a un error del usuario, se te cobrará por el progreso realizado. En el modo Datastore no se cobrarán las lecturas ni las eliminaciones de las entidades que no se eliminen finalmente, como las entidades que se modifiquen después de que se haya iniciado la operación de eliminación. El coste se atribuirá el día en que se complete la operación.

Las operaciones de eliminación en bloque no activan las alertas de Google Cloud presupuesto hasta que se completan. Del mismo modo, las lecturas y las eliminaciones que se realicen durante una operación de eliminación en bloque se aplicarán al uso de tu nivel gratuito una vez que se haya completado la operación. Las operaciones de eliminación en bloque no afectan al uso que se muestra en la sección de uso de la consola.

Ver los costes de la eliminación en bloque

Las operaciones de eliminación en bloque aplican la etiqueta goog-firestoremanaged:bulkdelete a las operaciones facturadas. En la página de informes de Facturación de Cloud, puede usar esta etiqueta para ver los costes relacionados con las operaciones de eliminación en bloque.

Prácticas recomendadas

No omitas los datos eliminados, ya que esto podría ralentizar las consultas.

Otra opción

Dataflow es un servicio gestionado para desarrollar y ejecutar flujos de trabajo de procesamiento de datos, que también pueden eliminar datos en bloque. Dataflow proporciona una plantilla de eliminación de Datastore que puedes usar para eliminar entidades seleccionadas por una consulta GQL.

Para obtener más información, consulta la documentación de Dataflow sobre cómo ejecutar la plantilla de eliminación masiva de Datastore.

Si su caso práctico implica la conservación de datos, consulte Gestionar la conservación de datos con políticas de TTL.