Filtros

Ao ler dados do Bigtable, você pode ler linhas ou intervalos de linhas específicos. No entanto, nem sempre é necessário ter todos os dados em todas as linhas. Talvez você precise apenas de linhas que contenham um valor específico na chave de linha ou células em um grupo de colunas específico.

Para limitar os resultados de uma solicitação de leitura, inclua filtros na solicitação. Um filtro é aplicado aos dados antes que a resposta seja enviada, reduzindo a quantidade de dados retornados. Como resultado, o uso de filtros pode reduzir os custos de rede e aumentar a capacidade. Nesta página, você encontrará uma visão geral de como os filtros do Bigtable funcionam e uma lista de filtros disponíveis.

Para ver detalhes e amostras de código de cada filtro, consulte Exemplos de filtros.

Como funcionam os filtros

Quando a solicitação de leitura inclui um filtro, o Bigtable recupera uma linha ou um intervalo de linhas da tabela. Para cada uma das linhas de entrada recuperadas, o Bigtable avalia a linha usando o filtro e gera uma linha de saída com base nos resultados do filtro.

O Bigtable fornece vários tipos de filtro, conforme descrito nas seções a seguir. Os filtros básicos se enquadram em duas categorias: limitadores e de modificação. Você pode combinar filtros básicos para formar filtros compostos.

Na maioria dos casos, um filtro é aplicado a todas as linhas, a menos que você especifique a chave de linha, o intervalo de linhas ou o número de linhas em que o filtro precisa ser aplicado. Uma exceção é o filtro de regex de chave de linha, que pode restringir o intervalo de linhas em alguns casos se o regex for um prefixo fixo. Em geral, para evitar a lentidão de uma verificação completa de tabela, sempre especifique as linhas de um filtro.

Filtros limitadores

Um filtro limitador controla quais linhas ou células são incluídas na resposta conforme a correspondência a critérios específicos. Por exemplo, você pode determinar que a resposta deve incluir apenas linhas em que a chave de linha corresponda a uma expressão regular ou que você queira apenas células de um grupo de colunas específico.

Muitos filtros limitadores podem excluir células de uma linha de saída. Se todas as células forem excluídas de uma linha de saída, a linha não será incluída na resposta.

Veja uma lista completa de filtros limitadores no Resumo de filtros.

Filtros de modificação

Um filtro de modificação afeta os dados ou metadados de células individuais.

O Bigtable fornece os seguintes filtros de modificação:

  • O filtro de retirar valor, que substitui o valor de cada célula por uma string vazia. Esse filtro é útil quando você só precisa do número de linhas ou da lista de chaves de linha que atendem aos seus critérios, e não dos dados dessas linhas.

  • O filtro de aplicação de rótulo, que aplica um rótulo a cada célula para identificar qual filtro produziu cada célula na resposta. Seu aplicativo pode usar esses rótulos para realizar mais filtragens no lado do cliente.

Filtros compostos

Um filtro composto permite combinar vários filtros básicos em um, o que permite aplicar mais de um filtro a uma única solicitação de leitura. Por exemplo, para receber dados de uso da CPU dos servidores, é possível usar um filtro para incluir apenas linhas em que a chave de linha começa com SERVER, seguida por um segundo filtro que inclua apenas células dentro do grupo de colunas CPU.

O Bigtable fornece os seguintes filtros de composição:

  • Uma cadeia, que aplica uma sequência de filtros a cada linha de entrada e retorna uma linha de saída. Um filtro de cadeia equivale a usar um AND lógico.
  • Uma intercalação, que envia cada linha de entrada por meio de vários filtros e combina todos os resultados de filtro da linha de entrada em uma única linha de saída. Um filtro intercalado equivale a usar um OR lógico.
  • Uma condição, que gera uma linha de saída ao aplicar um de dois filtros possíveis à linha de entrada. O filtro é escolhido aplicando um filtro de predicado à linha de entrada e verificando se a linha de saída do filtro de predicado contém células.

Filtros e desempenho

Os filtros permitem que você recupere apenas os dados necessários. Como resultado, os filtros podem melhorar o desempenho reduzindo a quantidade de dados enviados para seu aplicativo.

No entanto, os filtros não são uma solução universal para todos os problemas de desempenho. Em geral, os filtros devem ser usados para controlar a eficiência da capacidade, e não para reduzir a latência entre o envio de uma solicitação e o recebimento de uma resposta. Se usados corretamente, os filtros podem ser eficazes em uma estratégia para melhorar o desempenho de leitura.

O filtro das condições, em especial, pode aumentar a latência, porque as condições são muito mais lentas do que os outros filtros. Se sua solicitação de leitura for extremamente sensível ao desempenho, não use as condições na solicitação.

Resumo dos filtros

As tabelas a seguir listam os filtros oferecidos pelo Bigtable, incluindo links para detalhes e amostras de código de cada um.

Filtros limitadores
Bloquear tudo Não emitir células. Útil principalmente para depuração.
Limite de células por coluna Incluir apenas as N versões mais recentes de uma coluna em uma linha.
Limite de células por linha Incluir apenas as primeiras N células de uma linha.
Deslocamento de células por linha Omitir as primeiras N células de uma linha.
Grupo de colunas com regex Incluir apenas células cujo grupo de colunas corresponda a uma expressão regular RE2.
Qualificador de coluna com regex Incluir apenas células cujo qualificador de coluna corresponda a uma expressão regular.
Intervalo de colunas Incluir apenas células de um grupo de colunas específico cujo qualificador de coluna esteja dentro de um intervalo específico.
Passar tudo Emitir todas as células de entrada. Útil principalmente para depuração.
Chave de linha com regex Incluir apenas células cuja chave de linha corresponda a uma expressão regular.
Amostra de linha Recuperar uma amostra aleatória de linhas.
Sink Incluir células na linha de saída final e impedir que elas sejam modificadas ou removidas por um filtro subsequente.
Intervalo de carimbo de data/hora Incluir apenas células cujo carimbo de data/hora esteja dentro de um intervalo específico.
Intervalo de valor Incluir apenas células cujo valor esteja dentro de um intervalo específico.
Valor regex Incluir apenas células cujo valor corresponda a uma expressão regular.
Filtros de modificação
Aplicar rótulo Adicionar um rótulo a todas as células.
Retirar valor Retornar uma string vazia para cada valor de célula.
Filtros compostos
Cadeia Aplicar vários filtros em ordem.
Condição Aplicar um de dois filtros possíveis a uma linha.
Intercalar Combinar linhas de saída de vários filtros em uma única linha de saída.

A seguir