Eliminaciones
En este documento, se describe cómo borrar datos almacenados en tablas de Bigtable, se explica cuándo debes usar cada enfoque y se proporcionan ejemplos. Antes de leer esta página, debes familiarizarte con la descripción general de Bigtable y comprender los conceptos relacionados con el diseño de esquemas.
Para garantizar la coherencia, las descripciones de esta página hacen referencia a los métodos de API que se usan para cada tipo de solicitud. Sin embargo, te recomendamos que siempre uses una de las bibliotecas 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 podrías almacenar en Bigtable.
Para conocer la cantidad de veces que puedes usar las operaciones que se describen en esta página por día, consulta Cuotas y límites.
Cómo borra datos Bigtable
Cuando envías una solicitud de eliminación, las celdas se marcan para su eliminación y no se pueden leer. Los datos se quitan hasta una semana después durante la compactació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 que envíes una solicitud de eliminación, hasta que se produzca la próxima compactación.
Siempre puedes enviar una solicitud de eliminación, incluso si tu clúster superó el límite de almacenamiento y se bloquearon las operaciones de lectura y escritura.
Cómo borrar un rango de filas
Si deseas borrar una gran cantidad de datos almacenados en filas contiguas, usa dropRowRange
. Esta operación borra todas las filas de un rango identificado por una fila inicial y una final, o bien por un prefijo de clave de fila.
Los valores de clave de fila que proporcionas cuando borras un rango de filas se tratan como datos de servicio. Para obtener información sobre cómo se manejan los datos de servicio, consulta el Google Cloud Aviso de Privacidad.
Una vez que se complete la eliminación correctamente y recibas una respuesta, podrás escribir datos de forma segura en el mismo rango de filas.
La operación dropRowRange
tiene las siguientes restricciones:
- No puedes descartar un rango 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 otra solicitud está en curso, Bigtable devuelve un errorUNAVAILABLE
con el mensajeA DropRowRange operation is already ongoing
. Para resolver el error, vuelve a enviar la solicitud. - En el caso de las instancias que usan la replicación, ten en cuenta que Bigtable podría tardar mucho en completar la operación debido al aumento de la latencia de replicación y el uso de CPU. Para borrar datos de una instancia que usa replicación, usa la API de Data para leer y, luego, borrar tus datos.
En las siguientes muestras de código, se indica cómo descartar un rango de filas que comienzan con el prefijo de clave de fila phone#5c10102
:
Java
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Borra datos con los métodos de la API de Data
Si necesitas borrar pequeñas cantidades de datos no contiguos, borrar datos con un método que llame a la API de Cloud Bigtable (API de Data) suele ser la mejor opción. Usa estos métodos si borras MB, no GB, de datos en una solicitud. Usar la API de Data es la única forma de borrar datos de una columna (no de una familia de columnas).
Los métodos de la API de Data llaman a MutateRows
con uno de los tres tipos de mutación:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Una solicitud de eliminación que usa la API de Data es atómica: o bien la solicitud se realiza correctamente y se borran todos los datos, o bien la solicitud falla y no se quitan datos.
En la mayoría de los casos, evita usar los métodos CheckAndMutate
para borrar datos. En el caso poco frecuente de que necesites una coherencia sólida, tal vez quieras usar este enfoque, pero ten en cuenta que requiere muchos recursos y que el rendimiento podría verse afectado.
Para usar MutateRows
y borrar datos, debes enviar una solicitud readRows
con un filtro para determinar qué quieres borrar y, luego, enviar la solicitud de eliminación. Para obtener una lista de los filtros disponibles, consulta Filtros.
En los ejemplos de esta sección, se supone que ya determinaste qué datos borrar.
Borrar de una columna
En las siguientes muestras de código, se muestra cómo borrar todas las celdas de una columna en una fila:
Java
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python asyncio
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Borra de una familia de columnas
En los siguientes ejemplos de código, se muestra cómo borrar celdas de una familia de columnas en una fila:
Java
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python asyncio
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Borrar de una fila
En los siguientes fragmentos de código, se muestra cómo borrar todas las celdas de una fila:
Java
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python asyncio
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Borrado por transmisión y procesamiento por lotes
Transmitir y procesar por lotes tus solicitudes de eliminación suele ser la mejor manera de borrar grandes cantidades de datos. Esta estrategia puede ser útil cuando tienes requisitos de retención de datos más detallados de lo que permiten las políticas de recopilación de elementos no utilizados.
Si tu aplicación está escrita en Java, puedes habilitar el control de 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 Cómo habilitar el control de flujo de escritura por lotes.
En las siguientes muestras de código, se inicia una transmisión de datos (lectura de filas), se agrupan en lotes y, luego, se recorre el lote y se borran todas las celdas de la columna data_plan_01gb1
en la familia de columnas cell_plan
:
Go
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python asyncio
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Si quieres obtener información para instalar y usar la biblioteca cliente de Bigtable, consulta las bibliotecas cliente de Bigtable.
Para autenticarte en Bigtable, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Borra datos en una vista autorizada
Puedes borrar datos de la tabla enviando una solicitud de eliminación a una vista autorizada. Debes usar una de las siguientes opciones:
- gcloud CLI
- Cliente de Bigtable para Java
Cuando borras datos de una vista autorizada, debes proporcionar el ID de la vista autorizada además del ID de la tabla.
Los datos que puedes borrar de una vista autorizada están limitados por la definición de la vista autorizada. Solo puedes borrar los datos que se incluyen en la vista autorizada. Si intentas borrar datos que están fuera de la definición de la vista autorizada o que están sujetos a las siguientes reglas, se mostrará un error de PERMISSION_DENIED
:
- No se admite el borrado de un rango de filas de una vista autorizada con
DropRowRange
en la API de Admin. - No se admite el borrado de una fila.
- Se admite el borrado de una columna siempre y cuando se realice en filas que se encuentren en la vista autorizada.
- Solo se permite borrar de una familia de columnas si esta se configuró para permitir todos los prefijos de calificadores de columna (
qualifier_prefixes=""
) en la vista autorizada.
Por ejemplo, si intentas borrar una fila específica y esta contiene columnas en la tabla subyacente que no están en tu vista autorizada, la solicitud fallará.