Eliminações
Este documento descreve como eliminar dados armazenados em tabelas do Bigtable, aborda quando deve usar cada abordagem e fornece exemplos. Antes de ler esta página, deve conhecer a vista geral do Bigtable e compreender os conceitos envolvidos na estrutura do esquema.
Para consistência, as descrições nesta página referem-se aos métodos da API que são usados para cada tipo de pedido. No entanto, recomendamos vivamente que use sempre uma das bibliotecas de cliente do Bigtable para aceder às APIs Bigtable em vez de usar REST ou RPC.
Os exemplos nesta página usam dados de amostra semelhantes aos dados que pode armazenar no Bigtable.
Para saber o número de vezes que pode usar as operações descritas nesta página por dia, consulte Quotas e limites.
Como o Bigtable elimina dados
Quando envia uma solicitação de eliminação, as células são marcadas para eliminação e não podem ser lidas. Os dados são removidos até uma semana mais tarde durante a compactação, um processo em segundo plano que otimiza continuamente a tabela. Os metadados de eliminação podem fazer com que os seus dados ocupem ligeiramente mais espaço (vários KB por linha) durante alguns dias após o envio de um pedido de eliminação, até ocorrer a próxima compactação.
Pode sempre enviar um pedido de eliminação, mesmo que o cluster tenha excedido o limite de armazenamento e as leituras e escritas estejam bloqueadas.
Elimine um intervalo de linhas
Se quiser eliminar uma grande quantidade de dados armazenados em linhas contíguas, use
dropRowRange
. Esta operação elimina todas as linhas de um intervalo de linhas identificado
por uma linha inicial e uma linha final ou um prefixo de chave de linha.
Os valores das chaves das linhas que fornece quando elimina um intervalo de linhas são tratados como dados de serviço. Para ver informações sobre como os dados de serviço são processados, consulte o Google Cloud Aviso de Privacidade.
Após a conclusão de uma eliminação bem-sucedida e a receção de uma resposta, pode escrever dados em segurança no mesmo intervalo de linhas.
A operação dropRowRange
tem as seguintes restrições:
- Não pode eliminar um intervalo de linhas de uma vista autorizada.
- Não pode chamar o método
dropRowRange
de forma assíncrona. Se enviar um pedido a uma tabela enquanto outro pedido está em curso, o Bigtable devolve um erroUNAVAILABLE
com a mensagemA DropRowRange operation is already ongoing
.dropRowRange
Para resolver o erro, envie o pedido novamente. - Com instâncias que usam a replicação, tenha em atenção que o Bigtable pode demorar muito tempo a concluir a operação devido ao aumento da latência de replicação e da utilização da CPU. Para eliminar dados de uma instância que usa a replicação, use a API Data para ler e, em seguida, eliminar os seus dados.
Os exemplos de código seguintes mostram como eliminar um intervalo de linhas que começam com o prefixo da chave de linha phone#5c10102
:
Java
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Elimine dados através de métodos da API Data
Se precisar de eliminar pequenas quantidades de dados não contíguos, a eliminação de dados através de um método que chama a Cloud Bigtable API (API de dados) é, muitas vezes, a melhor opção. Use estes métodos se estiver a eliminar MB e não GB de dados num pedido. A utilização da API Data é a única forma de eliminar dados de uma coluna (e não de uma família de colunas).
Os métodos da API Data chamam MutateRows
com um de três tipos de mutação:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
Um pedido de eliminação através da API Data é atómico: o pedido é bem-sucedido e todos os dados são eliminados, ou o pedido falha e não são removidos dados.
Na maioria dos casos, evite usar métodos CheckAndMutate
para eliminar dados. No caso raro de precisar de uma forte consistência, pode usar esta abordagem, mas tenha em atenção que requer muitos recursos e o desempenho pode ser afetado.
Para usar MutateRows
para eliminar dados, envia um pedido readRows
com um filtro para determinar o que quer eliminar e, em seguida, envia o pedido de eliminação. Para ver uma lista dos filtros disponíveis, consulte a secção
Filtros.
Os exemplos nesta secção partem do princípio de que já determinou que dados quer eliminar.
Elimine a partir de uma coluna
Os exemplos de código seguintes demonstram como eliminar todas as células de uma coluna numa linha:
Java
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Elimine de uma família de colunas
Os exemplos de código seguintes demonstram como eliminar células de uma família de colunas numa linha:
Java
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Elimine a partir de uma linha
Os fragmentos de código seguintes demonstram como eliminar todas as células de uma linha:
Java
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Elimine por streaming e processamento em lote
A transmissão e o processamento em lote dos pedidos de eliminação são, muitas vezes, a melhor forma de eliminar grandes quantidades de dados. Esta estratégia pode ser útil quando tem requisitos de retenção de dados mais detalhados do que as políticas de recolha de lixo permitem.
Se a sua aplicação estiver escrita em Java, pode ativar o controlo do fluxo de escrita em lote quando envia eliminações em lote para o Bigtable. Para mais informações, consulte os artigos Controlo de fluxo de gravação em lote e Ative o controlo de fluxo de gravação em lote.
Os seguintes exemplos de código iniciam um fluxo de dados (leitura de linhas), agrupam-nos e, em seguida, percorrem o lote e eliminam todas as células na coluna data_plan_01gb1
na família de colunas cell_plan
:
Go
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python asyncio
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca cliente do Bigtable, consulte o artigo Bibliotecas cliente do Bigtable.
Para se autenticar no Bigtable, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Elimine dados numa vista autorizada
Pode eliminar dados de tabelas enviando um pedido de eliminação para uma vista autorizada. Tem de usar um dos seguintes elementos:
- CLI gcloud
- Cliente do Bigtable para Java
Quando elimina dados de uma vista autorizada, fornece o ID da vista autorizada, além do ID da tabela.
Os dados que pode eliminar de uma visualização autorizada estão limitados pela definição da visualização autorizada. Só pode eliminar dados incluídos na vista autorizada. Se tentar eliminar dados que estejam fora da definição da vista autorizada ou que estejam sujeitos às seguintes regras, é devolvido um erro PERMISSION_DENIED
:
- A eliminação de um intervalo de linhas de uma vista autorizada através de
DropRowRange
na API Admin não é suportada. - A eliminação de uma linha não é suportada.
- A eliminação de dados de uma coluna é suportada desde que seja para linhas que estejam na vista autorizada.
- A eliminação de uma família de colunas só é permitida se a família de colunas especificada estiver configurada para permitir todos os prefixos de qualificador de coluna (
qualifier_prefixes=""
) na vista autorizada.
Por exemplo, se tentar eliminar a partir de uma linha especificada e essa linha contiver colunas na tabela subjacente que não estão na sua vista autorizada, o pedido falha.