Eliminaciones
En este documento se describe cómo eliminar datos almacenados en tablas de Bigtable, se explica cuándo debe usar cada método y se proporcionan ejemplos. Antes de leer esta página, debes familiarizarte con la descripción general de Bigtable y entender los conceptos relacionados con el diseño de esquemas.
Para mantener la coherencia, en las descripciones de esta página se hace referencia a los métodos de la API que se usan en cada tipo de solicitud. Sin embargo, te recomendamos que siempre uses una de las bibliotecas de cliente de Bigtable para acceder a las APIs de Bigtable en lugar de usar REST o RPC.
En los ejemplos de esta página se usan datos de muestra similares a los que puede almacenar en Bigtable.
Para saber cuántas veces puedes usar al día las operaciones descritas en esta página, consulta Cuotas y límites.
Cómo elimina datos Bigtable
Cuando envías una solicitud de eliminación, las celdas se marcan para eliminarse y no se pueden leer. Los datos se eliminan hasta una semana después durante la compresión, un proceso en segundo plano que optimiza continuamente la tabla. Los metadatos de eliminación pueden hacer que tus datos ocupen un poco más de espacio (varios KB por fila) durante unos días después de enviar una solicitud de eliminación, hasta que se produzca la siguiente compactación.
Siempre puedes enviar una solicitud de eliminación, aunque tu clúster haya superado el límite de almacenamiento y las lecturas y escrituras estén bloqueadas.
Eliminar un intervalo de filas
Si quieres eliminar una gran cantidad de datos almacenados en filas contiguas, usa dropRowRange
. Esta operación elimina todas las filas de un intervalo de filas identificado por una fila inicial y una final, o por un prefijo de clave de fila.
Los valores de clave de fila que proporciones al eliminar un intervalo de filas se tratarán como datos de servicio. Para obtener información sobre cómo se tratan los datos del servicio, consulta el Google Cloud Aviso de Privacidad.
Una vez que se haya completado la eliminación y hayas recibido una respuesta, podrás escribir datos en el mismo intervalo de filas sin problemas.
La operación dropRowRange
tiene las siguientes restricciones:
- No puedes eliminar un intervalo de filas de una vista autorizada.
- No puedes llamar al método
dropRowRange
de forma asíncrona. Si envías una solicituddropRowRange
a una tabla mientras se está procesando otra solicitud, Bigtable devuelve un errorUNAVAILABLE
con el mensajeA DropRowRange operation is already ongoing
. Para resolver el error, vuelve a enviar la solicitud. - En las instancias que usan la replicación, ten en cuenta que Bigtable puede tardar mucho en completar la operación debido al aumento de la latencia de replicación y del uso de la CPU. Para eliminar datos de una instancia que usa la replicación, usa la API Data para leer y, a continuación, eliminar tus datos.
En los siguientes ejemplos de código se muestra cómo eliminar un intervalo de filas que empiezan por el prefijo de clave de fila phone#5c10102
:
Java
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Eliminar datos con métodos de la API Data
Si necesitas eliminar pequeñas cantidades de datos no contiguos, lo mejor suele ser usar un método que llame a la API Cloud Bigtable (API Data). Usa estos métodos si vas a eliminar MB de datos en una solicitud, no GB. Usar la API Data es la única forma de eliminar datos de una columna (no de una familia de columnas).
Los métodos de la API Data llaman a MutateRows
con uno de estos tres tipos de mutación:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Las solicitudes de eliminación que usan la API Data son atómicas: o se realizan correctamente y se eliminan todos los datos, o no se realizan y no se elimina ningún dato.
En la mayoría de los casos, no utilices métodos CheckAndMutate
para eliminar datos. En el caso poco probable de que necesites una coherencia sólida, puedes usar este enfoque, pero ten en cuenta que requiere muchos recursos y que el rendimiento puede verse afectado.
Para usar MutateRows
y eliminar datos, envía una solicitud readRows
con un filtro para determinar qué quieres eliminar y, a continuación, envía la solicitud de eliminación. Para ver una lista de los filtros disponibles, consulta Filtros.
En los ejemplos de esta sección se presupone que ya has determinado qué datos quieres eliminar.
Eliminar datos de una columna
En los siguientes ejemplos de código se muestra cómo eliminar todas las celdas de una columna de una fila:
Java
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python asyncio
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Eliminar de una familia de columnas
En los siguientes ejemplos de código se muestra cómo eliminar celdas de una familia de columnas de una fila:
Java
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python asyncio
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Eliminar de una fila
En los siguientes fragmentos de código se muestra cómo eliminar todas las celdas de una fila:
Java
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python asyncio
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Eliminar por streaming y por lotes
A menudo, la mejor forma de eliminar grandes cantidades de datos es transmitir y agrupar en lotes las solicitudes de eliminación. Esta estrategia puede ser útil cuando tengas requisitos de conservación de datos más detallados que los que permiten las políticas de recogida de elementos no utilizados.
Si tu aplicación está escrita en Java, puedes habilitar el control del flujo de escritura por lotes cuando envíes eliminaciones por lotes a Bigtable. Para obtener más información, consulta Control de flujo de escritura por lotes y Habilitar el control de flujo de escritura por lotes.
En los siguientes ejemplos de código se inicia un flujo de datos (lectura de filas), se agrupan en lotes y, a continuación, se recorre el lote y se eliminan todas las celdas de la columna data_plan_01gb1
de la familia de columnas cell_plan
:
Go
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python asyncio
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Bigtable, consulta el artículo Bibliotecas de cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Eliminar datos de una vista autorizada
Puede eliminar datos de una tabla enviando una solicitud de eliminación a una vista autorizada. Debes usar uno de los siguientes elementos:
- CLI de gcloud
- Cliente de Bigtable para Java
Cuando elimina datos de una vista autorizada, debe proporcionar el ID de la vista autorizada, además del ID de la tabla.
Los datos que puedes eliminar de una vista autorizada están limitados por la definición de la vista autorizada. Solo puedes eliminar los datos que se incluyan en la vista autorizada. Si intentas eliminar datos que no se ajustan a la definición de la vista autorizada o que están sujetos a las siguientes reglas, se devolverá un error PERMISSION_DENIED
:
- No se puede eliminar un intervalo de filas de una vista autorizada mediante
DropRowRange
en la API Admin. - No se puede eliminar contenido de una fila.
- Se puede eliminar contenido de una columna siempre que se trate de filas que estén en la vista autorizada.
- Solo se permite eliminar datos de una familia de columnas si esta se ha configurado para permitir todos los prefijos de calificador de columna (
qualifier_prefixes=""
) en la vista autorizada.
Por ejemplo, si intentas eliminar datos de una fila específica y esa fila contiene columnas de la tabla subyacente que no están en tu vista autorizada, la solicitud fallará.