Crie e faça a gestão de vistas lógicas

No Bigtable, uma vista lógica é o resultado de uma consulta SQL que funciona como uma tabela virtual que pode ser consultada por outras consultas SQL. Os dados permanecem na tabela de origem.

Este documento descreve as vistas lógicas e como criar e realizar operações nas mesmas. Para uma comparação com as vistas materializadas contínuas e as vistas autorizadas, consulte o artigo Tabelas e vistas.

As vistas lógicas permitem-lhe fazer o seguinte com os seus dados do Bigtable:

  • Evite a repetição de consultas: pode armazenar e desenvolver o mapeamento de colunas e a lógica de conversão de tipos numa vista lógica, que as vistas lógicas adicionais podem usar em vez de copiar e colar essa lógica ou precisar de a compreender.
  • Integre com sistemas concebidos para ler a partir de bases de dados relacionais: as vistas lógicas permitem-lhe fazer com que os seus dados do Bigtable sejam lidos como uma tabela de base de dados relacional ou uma tabela do Cassandra.
  • Executar a mesma vista lógica em várias tabelas: ao modificar a cláusula FROM, pode usar a mesma vista para consultar qualquer tabela na sua instância do Bigtable.
  • Oferecer uma interface consistente: a sua aplicação pode usar uma vista lógica, mesmo que a tabela de origem seja alterada.
  • Limitar o acesso de leitura a colunas ou linhas específicas: pode expor apenas os dados que quer permitir que os utilizadores leiam, sem lhes dar acesso à tabela inteira.

Uma vista lógica é um recurso ao nível da instância. Pode criar uma vista lógica através da Google Cloud CLI ou do editor de consultas do Bigtable Studio na Google Cloud consola. Para consultar uma vista lógica, pode usar o editor de consultas do Bigtable Studio ou qualquer uma das bibliotecas de cliente do Bigtable que suportam SQL.

Uma vista lógica tem as seguintes características:

  • Tem de usar funcionalidades SQL suportadas pelo GoogleSQL para Bigtable
  • Só de leitura
  • Tem de ser lido com SQL em vez de com uma chamada para ReadRows
  • Podem ser consultadas através de qualquer uma das bibliotecas cliente do Bigtable que suportam SQL
  • Usa direitos do definidor. Pode consultar uma vista lógica se tiver autorizações para ler a partir da mesma, mesmo que não tenha autorização para ler a partir da tabela de origem.

A chave da linha, o qualificador da coluna e os valores da coluna que usa para definir uma vista lógica são tratados como dados de serviço. Por este motivo, não crie uma vista lógica com a chave da linha, o qualificador da coluna ou os valores das colunas que contenham informações confidenciais. Para obter informações sobre como os dados de serviço são processados, consulte o Google Cloud Aviso de Privacidade.

Antes de começar

Siga os passos seguintes se planear usar a CLI gcloud:

  1. Install the Google Cloud CLI.

  2. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  3. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init

Funções necessárias

Para trabalhar com visualizações lógicas, precisa das seguintes autorizações:

Para gerir vistas lógicas:

  • Para criar, atualizar ou eliminar vistas lógicas, precisa da função Bigtable Admin (roles/bigtable.admin) na instância.
  • Em alternativa, pode pedir ao administrador que lhe conceda as seguintes autorizações ao nível da instância:
    • Criado: bigtable.logicalViews.create
    • Atualização: bigtable.logicalViews.update
    • Eliminar: bigtable.logicalViews.delete

Para ver e consultar vistas lógicas:

  • Para listar ou descrever visualizações lógicas, precisa da função Bigtable Reader (roles/bigtable.reader) na instância.
  • Em alternativa, pode pedir ao administrador que lhe conceda as seguintes autorizações ao nível da instância:

    • Lista: bigtable.logicalViews.list
    • Descrever: bigtable.logicalViews.get
  • Para consultar uma visualização lógica, precisa da autorização bigtable.logicalViews.readRows na visualização lógica.

Para criar uma vista lógica:

  • Tem de ter, pelo menos, autorização bigtable.tables.readRows na tabela de origem.

Para conceder acesso de leitura a uma vista específica:

Pode conceder a um utilizador autorização para ler uma visualização lógica específica, mesmo que não tenha outras autorizações do Bigtable. Para o fazer, use uma condição do IAM para conceder a autorização bigtable.logicalViews.readRows apenas nessa visualização de propriedade:

  1. Conceda ao utilizador a função de bigtable.reader no projeto.
  2. Crie uma condição de IAM que limite a autorização bigtable.logicalViews.readRows à vista lógica específica. Por exemplo:

    resource.name == projects/PROJECT_ID/instances/INSTANCE_ID/logicalViews/VIEW
    

    Substitua o seguinte:

    • PROJECT_ID: o Google Cloud projeto em que a sua instância do Bigtable se encontra.
    • VIEW: um ID com um máximo de 128 carateres para a nova vista lógica. O ID tem de ser exclusivo entre os IDs de tabelas e os IDs de vistas na instância.
    • INSTANCE_ID: o ID da instância na qual criar a vista lógica.

    Para mais informações, consulte o artigo Faça a gestão do acesso aos recursos através das condições do IAM.

Para mais informações sobre todas as funções e autorizações disponíveis, consulte o artigo Controlo de acesso do Bigtable com a IAM.

Crie uma vista lógica

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra a lista de instâncias

  2. Selecione uma instância.

  3. No painel de navegação, clique em Bigtable Studio.

  4. Abra um novo separador clicando em e, de seguida, escolhendo Editor.

    1. No editor de consultas, escreva a sua consulta. Se a consulta for SQL válida, é apresentada a mensagem Válido.

    2. Opcional: para formatar a declaração no estilo SQL, clique em Formatar.

    3. Clique em Executar. Os resultados da consulta aparecem na tabela Resultados.

    4. Quando estiver tudo pronto, clique em Guardar e, de seguida, escolha Guardar vista.

    Para mais informações sobre a utilização do editor de consultas, consulte o artigo Faça a gestão dos seus dados com o Bigtable Studio.

gcloud

Para criar uma vista lógica, use o comando gcloud bigtable logical-views create.

gcloud bigtable logical-views create VIEW \
  --instance=INSTANCE --query=QUERY

Substitua o seguinte:

  • VIEW: um ID com um máximo de 128 carateres para a nova vista lógica. O ID tem de ser exclusivo entre os IDs de tabelas e os IDs de vistas na instância.
  • QUERY: um GoogleSQL válido para uma consulta do Bigtable
  • INSTANCE: o ID da instância na qual criar a vista lógica

Opcional:

  • Para proteger a vista lógica contra a eliminação, acrescente o comando com a flag --deletion-protection. Se não aplicar esta definição, a vista lógica pode ser eliminada. Também pode permitir explicitamente a eliminação da vista lógica anexando --no-deletion-protection. Para mais informações, consulte a secção Modifique a proteção contra eliminação deste documento.

Atualize uma vista lógica

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra a lista de instâncias

  2. Selecione uma instância na lista.

  3. No painel de navegação, clique em Bigtable Studio. É apresentada uma lista de vistas no explorador.

  4. Opcional: são apresentadas as primeiras 10 visualizações na instância. Para ver mais 10, clique em Mostrar mais.

  5. Junto à vista que quer atualizar, clique no menu de ações more_vert e, de seguida, clique em Ver definição.

  6. Modifique a consulta.

  7. Clique em Executar.

  8. Depois de verificar que o painel de resultados mostra os dados que devem ser incluídos na vista, clique em Guardar como.

  9. Na caixa de diálogo, introduza o ID da vista que modificou.

    A caixa de diálogo apresenta uma mensagem de aviso a indicar que está a substituir a vista existente.

  10. Clique em Guardar.

gcloud

Para atualizar uma vista lógica para executar uma consulta diferente, use o comando gcloud bigtable logical-views update.

gcloud bigtable logical-views update VIEW  \
    --instance=INSTANCE --query=QUERY

Substitua o seguinte:

  • VIEW: o ID da vista lógica a atualizar
  • QUERY: uma consulta GoogleSQL válida
  • INSTANCE: o ID da instância que contém a vista lógica

Para atualizar uma vista lógica de modo a modificar a proteção contra eliminação, consulte a secção Modificar a proteção contra eliminação deste documento.

Elimine uma visualização lógica

Esta ação é permanente.

Se uma vista lógica tiver a proteção contra eliminação ativada, não pode eliminá-la. Para eliminar uma vista lógica com a proteção contra eliminação ativada, tem de atualizar a vista lógica para desativar a proteção contra eliminação. Para mais informações, consulte a secção Modifique a proteção contra eliminação deste documento.

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra a lista de instâncias

  2. Selecione uma instância na lista.

  3. No painel de navegação, clique em Bigtable Studio. É apresentada uma lista de vistas no explorador.

  4. Opcional: são apresentadas as primeiras 10 visualizações na instância. Para ver mais 10, clique em Mostrar mais.

  5. Expanda Visualizações.

  6. Junto à vista que quer eliminar, clique no menu de ações more_vert e, de seguida, clique em Eliminar.

gcloud

Para eliminar uma vista lógica, use o comando gcloud bigtable logical-views delete.

  gcloud bigtable logical-views delete VIEW \
    --instance=INSTANCE

Substitua o seguinte:

  • VIEW: o ID da vista lógica a atualizar
  • INSTANCE: o ID da instância que contém a vista lógica

Obtenha uma lista de vistas lógicas para uma instância

Pode ver uma lista de vistas lógicas para uma instância.

Consola

  1. Abra a lista de instâncias do Bigtable na Google Cloud consola.

    Abra a lista de instâncias

  2. Selecione uma instância na lista.

  3. No painel de navegação, clique em Bigtable Studio. É apresentada uma lista de vistas no explorador.

  4. Opcional: são apresentadas as primeiras 10 visualizações na instância. Para ver mais 10, clique em Mostrar mais.

gcloud

Para ver uma lista de vistas lógicas de uma instância, use o comando gcloud bigtable logical-views list.

gcloud bigtable logical-views list --instance=INSTANCE

Substitua INSTANCE pelo ID da instância.

Descreva uma vista lógica

Para obter detalhes sobre uma vista lógica, use o comando gcloud bigtable logical-views describe.

  gcloud bigtable logical-views describe VIEW \
      --instance=INSTANCE

O terminal apresenta detalhes semelhantes aos seguintes:

  createTime: '2025-03-07T19:49:56.316578Z'
  etag: W/"/v1/17919275593532352351"
  name: projects/my-project/instances/my-instance/logicalViews/my-view
  query: SELECT street FROM addresses
  updateTime: '2025-03-07T19:49:56.316578Z'
  deletion_protection: true

Consultar uma vista lógica

Depois de criar uma vista lógica, pode consultá-la através de SQL, tal como consulta uma tabela normal. Pode usar vistas lógicas na cláusula FROM de declarações SELECT.

No editor de consultas, introduza uma consulta GoogleSQL que faça referência ao nome da vista. Por exemplo, se a vista se chamar MyLogicalView:

SELECT *
FROM MyLogicalView
LIMIT 100;

Para mais informações sobre a execução de consultas SQL no Bigtable, consulte o artigo Consultar os dados com SQL no editor de consultas.

Modifique a proteção contra eliminação

A proteção contra eliminação impede a eliminação da vista lógica. Para ativar ou desativar a proteção contra eliminação de uma vista lógica, precisa das autorizações necessárias. Para mais informações, consulte a secção Funções necessárias deste documento.

gcloud

Para ativar a proteção contra eliminação para uma vista lógica, execute o comando gcloud bigtable logical-views update:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --deletion-protection

Para desativar a proteção contra eliminação de uma vista lógica, execute o seguinte comando:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --no-deletion-protection

Substitua o seguinte:

  • VIEW: um ID com um máximo de 128 carateres para a vista lógica. O ID tem de ser exclusivo entre os IDs de tabelas e visualizações na instância.
  • INSTANCE: o ID da instância na qual a vista lógica vai ser atualizada.

O que se segue?