Exclusões
Neste documento, descrevemos como excluir dados armazenados nas tabelas do Bigtable, discutimos quando usar cada abordagem e fornecemos exemplos. Antes de ler esta página, familiarize-se com a visão geral do Bigtable e conheça os conceitos envolvidos no design do esquema.
Para consistência, as descrições nesta página referem-se aos métodos da API usados para cada tipo de solicitação. No entanto, recomendamos que você sempre use uma das bibliotecas de cliente do Bigtable para acessar as APIs do Bigtable, em vez de usar REST ou RPC.
Os exemplos nesta página usam dados de amostra semelhantes aos dados que podem ser armazenados no Bigtable.
Para saber quantas vezes você pode usar as operações descritas nesta página por dia, consulte Cotas e limites.
Como o Bigtable exclui dados
Quando você envia uma solicitação de exclusão, as células são marcadas para exclusão e não podem ser lidas. Os dados são removidos até uma semana depois, durante a compactação, um processo em segundo plano que otimiza continuamente a tabela. Os metadados de exclusão podem fazer com que os dados ocupem um pouco mais de espaço (vários kb por linha) por alguns dias após o envio de uma solicitação de exclusão, até que ocorra a próxima compactação.
É possível enviar uma solicitação de exclusão mesmo que o cluster tenha excedido o limite de armazenamento e que as leituras e gravações estejam bloqueadas.
Excluir um intervalo de linhas
Se você quiser excluir uma grande quantidade de dados armazenados em linhas contíguas, use dropRowRange
. Essa operação exclui todas as linhas de um intervalo de linhas identificadas por uma linha inicial e final ou um prefixo de chave de linha.
Os valores de chave de linha fornecidos ao excluir um intervalo de linhas são tratados como dados de serviço. Para informações sobre como os dados de serviço são tratados, consulte o Aviso de privacidade doGoogle Cloud .
Depois que uma exclusão é concluída e você recebe uma resposta, é possível gravar dados com segurança no mesmo intervalo de linhas.
A operação dropRowRange
tem as seguintes restrições:
- Não é possível descartar um intervalo de linhas de uma visualização autorizada.
- Não é possível chamar o método
dropRowRange
de forma assíncrona. Se você enviar uma solicitaçãodropRowRange
para uma tabela enquanto outra estiver em andamento, o Bigtable vai retornar um erroUNAVAILABLE
com a mensagemA DropRowRange operation is already ongoing
. Para resolver o erro, envie a solicitação novamente. - Em instâncias que usam replicação, o Bigtable pode levar muito tempo para concluir a operação devido ao aumento da latência de replicação e do uso da CPU. Para excluir dados de uma instância que usa replicação, use a API Data para ler e excluir seus dados.
Os exemplos de código a seguir mostram como descartar um intervalo de linhas que começam com o prefixo de chave de linha phone#5c10102
:
Java
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Excluir dados usando métodos da API Data
Se você precisa excluir pequenas quantidades de dados não contíguos, excluir os dados usando um método que chama a API Cloud Bigtable (API Data) geralmente é a melhor escolha. Use esses métodos se estiver excluindo MB, e não GB, de dados em uma solicitação. Usar a API Data é a única maneira de excluir dados de uma coluna (não do grupo de colunas).
Os métodos da API de dados chamam MutateRows
com um dos três tipos de mutação:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Uma solicitação de exclusão que usa a API Data é atômica: ou a solicitação é bem-sucedida e todos os dados são excluídos ou a solicitação falha e nenhum dado é removido.
Na maioria dos casos, evite usar métodos CheckAndMutate
para excluir dados. No caso raro de você precisar de consistência forte, convém usar essa abordagem, mas saiba que ela consome muitos recursos, e o desempenho pode ser afetado.
Para usar MutateRows
para excluir dados, envie uma solicitação readRows
com um filtro para determinar o que quer excluir e, em seguida, envie a solicitação de exclusão. Para ver uma lista dos filtros disponíveis, consulte Filtros.
As amostras nesta seção pressupõem que você já tenha determinado quais dados excluir.
Excluir de uma coluna
Os exemplos de código a seguir demonstram como excluir todas as células de uma coluna em uma linha:
Java
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Excluir de um grupo de colunas
Os exemplos de código a seguir demonstram como excluir células de um grupo de colunas em uma linha:
Java
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Excluir de uma linha
Os snippets de código a seguir demonstram como excluir todas as células de uma linha:
Java
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Excluir por streaming e em lotes
O streaming e o agrupamento em lote das solicitações de exclusão geralmente são a melhor maneira de excluir grandes quantidades de dados. Essa estratégia pode ser útil quando você tem requisitos de retenção de dados mais refinados do que o permitido pelas políticas de coleta de lixo.
Se o aplicativo for escrito em Java, você poderá ativar o controle de fluxo de gravação em lote ao enviar exclusões em lote para o Bigtable. Para mais informações, consulte Controle de fluxo de gravação em lote e Ativar o controle de fluxo de gravação em lote.
Os exemplos de código a seguir iniciam um stream de dados (leitura de linhas), os agrupam em lote e, em seguida, passam pelo lote e excluem todas as células da coluna data_plan_01gb1
no grupo de colunas cell_plan
:
Go
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Bigtable, consulte Bibliotecas de cliente do Bigtable.
Para autenticar no Bigtable, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Excluir dados em uma visualização autorizada
É possível excluir dados da tabela enviando uma solicitação de exclusão para uma visualização autorizada. Use uma das seguintes opções:
- CLI da gcloud
- Cliente Bigtable para Java
Ao excluir dados de uma visualização autorizada, você fornece o ID dela e o ID da tabela.
Os dados que podem ser excluídos de uma visualização autorizada são limitados pela definição dela. Só é possível excluir dados incluídos na visualização autorizada. Se você tentar excluir dados que estão fora da definição da visualização autorizada ou sujeitos às seguintes regras, um erro de PERMISSION_DENIED
será retornado:
- Não é possível excluir um intervalo de linhas de uma visualização autorizada usando
DropRowRange
na API Admin. - Não é possível excluir de uma linha.
- A exclusão de uma coluna é compatível desde que seja para linhas na visualização autorizada.
- A exclusão de um grupo de colunas só é permitida se ele estiver configurado para permitir todos os prefixos de qualificador de coluna (
qualifier_prefixes=""
) na visualização autorizada.
Por exemplo, se você tentar excluir de uma linha especificada e essa linha contiver colunas na tabela subjacente que não estão na sua visualização autorizada, a solicitação vai falhar.