Associe ao Spanner

Como administrador do BigQuery, pode criar uma associação para aceder aos dados do Spanner. Esta ligação permite aos analistas de dados consultar dados no Spanner.

Antes de começar

Crie ligações do Spanner

Selecione uma das seguintes opções:

Consola

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. No painel Explorador, clique em Adicionar dados.

    É apresentada a caixa de diálogo Adicionar dados.

  3. No painel Filtrar por, na secção Tipo de origem de dados, selecione Bases de dados.

    Em alternativa, no campo Pesquisar origens de dados, pode introduzir Spanner.

  4. Na secção Origens de dados em destaque, clique em Google Cloud Spanner.

  5. Clique no cartão da solução Google Cloud Spanner: federação do BigQuery.

  6. No painel Origem de dados externa, introduza as seguintes informações:

    • Em Tipo de ligação, selecione Cloud Spanner.
    • Para o ID da ligação, introduza um identificador para o recurso de ligação. São permitidas letras, números e sublinhados.
    • Para o Tipo de localização, selecione uma localização (ou uma região) do BigQuery compatível com a região da sua origem de dados externa.
    • Opcional: para Nome amigável, introduza um nome amigável para a ligação, como My connection resource. O nome amigável pode ser qualquer valor que ajude a identificar o recurso de associação se precisar de o modificar mais tarde.
    • Opcional: em Descrição, introduza uma descrição para este recurso de ligação.
    • Para Nome da base de dados, introduza o nome da base de dados do Spanner no seguinte formato: "projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE"
    • Opcional: para realizar leituras paralelas, selecione Ler dados em paralelo. O Spanner pode dividir determinadas consultas em partes mais pequenas, ou partições, e obter as partições em paralelo. Para mais informações, consulte o artigo Leia dados em paralelo na documentação do Spanner. Esta opção está restrita a consultas cujo primeiro operador no plano de execução seja um operador de união distribuída. Outras consultas devolvem um erro. Para ver o plano de execução de consultas para uma consulta do Spanner, consulte o artigo Compreenda como o Spanner executa consultas.
    • Opcional: para Função da base de dados, introduza o nome de uma função da base de dados do Spanner. Se não estiver vazio, esta ligação consulta o Spanner usando esta função de base de dados por predefinição. Os utilizadores do controlo de acesso detalhado do Spanner que enviam consultas através desta ligação têm de ter recebido acesso a esta função por parte do respetivo administrador, e a função de base de dados tem de ter o privilégio SELECT em todos os objetos de esquema especificados em consultas externas. Para informações sobre o controlo de acesso detalhado, consulte o artigo Acerca do controlo de acesso detalhado.
    • Opcional: para ativar o Data Boost, selecione Usar Data Boost do Spanner. O Data Boost permite-lhe executar consultas de estatísticas e exportações de dados com um impacto quase nulo nas cargas de trabalho existentes na instância do BigQuery aprovisionada. Para ativar o Aumento de dados, selecione Aumento de dados e Ler dados em paralelo.
  7. Clique em Criar associação.

bq

Para criar a associação, use o comando bq mk com a flag --connection.

bq mk --connection \
    --connection_type=CLOUD_SPANNER \
    --properties='PROPERTIES' \
    --location=LOCATION \
    --display_name='FRIENDLY_NAME' \
    --description 'DESCRIPTION' \
    CONNECTION_ID

Substitua o seguinte:

  • PROPERTIES: um objeto JSON com os seguintes campos:

    • "database": a base de dados do Spanner para a associação

      Especifique como uma string com o seguinte formato: "projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE".

    • "use_parallelism": (opcional) se true, esta ligação faz leituras paralelas

      O valor predefinido é false. O Spanner pode dividir determinadas consultas em partes mais pequenas ou partições e obter as partições em paralelo. Para mais informações, consulte o artigo Leia dados em paralelo na documentação do Spanner. Esta opção está restrita a consultas cujo primeiro operador no plano de execução é um operador de união distribuída. Outras consultas devolvem um erro. Para ver o plano de execução de consultas para uma consulta do Spanner, consulte o artigo Compreenda como o Spanner executa consultas.

    • "database_role": (Opcional) Se não estiver vazio, esta associação consulta o Spanner com esta função de base de dados por predefinição. Os utilizadores do controlo de acesso detalhado do Spanner que enviam consultas através desta ligação têm de ter recebido acesso a esta função por parte do respetivo administrador, e a função de base de dados tem de ter o privilégio SELECT em todos os objetos de esquema especificados em consultas externas.

      Se não for especificado, a ligação é autenticada com as funções predefinidas do IAM para o Spanner, e o principal que executa consultas com esta ligação tem de ter recebido a função do IAM roles/spanner.databaseReader.

      Para informações sobre o controlo de acesso detalhado, consulte o artigo Acerca do controlo de acesso detalhado.

    • "useDataBoost": (Opcional) Se true, esta associação permite que os utilizadores usem o Aumento de dados. O Data Boost permite que os utilizadores executem consultas federadas em capacidade de computação separada, independente e distinta das instâncias aprovisionadas para evitar afetar as cargas de trabalho existentes. Para ativar o Aumento de dados, defina "useDataBoost" como true e "use_parallelism" como true.

      Para usar o aumento de dados, o principal que executa consultas com esta ligação tem de ter recebido a autorização spanner.databases.useDataBoost. Esta autorização está incluída por predefinição nas funções roles/spanner.admin e roles/spanner.databaseAdmin.

  • LOCATION: uma localização do BigQuery que seja compatível com a região da sua origem de dados externa.

  • CONNECTION_ID: um identificador para o recurso de ligação

    O ID da associação pode conter letras, números e sublinhados. Se não fornecer um ID de ligação, o BigQuery gera automaticamente um ID exclusivo.

    O exemplo seguinte cria um novo recurso de associação com o nome my_connection_id.

    bq mk --connection \
      --connection_type='CLOUD_SPANNER' \
      --properties='{"database":"projects/my_project/instances/my_instance/databases/database1"}' \
      --project_id=federation-test \
      --location=us \
      my_connection_id

API

Chame o método CreateConnection no serviço ConnectionService.

Partilhe ligações com utilizadores

Pode conceder as seguintes funções para permitir que os utilizadores consultem dados e geram ligações:

  • roles/bigquery.connectionUser: permite que os utilizadores usem associações para estabelecer ligação a origens de dados externas e executar consultas nas mesmas.

  • roles/bigquery.connectionAdmin: permite que os utilizadores geram associações.

Para mais informações sobre as funções e as autorizações do IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.

Selecione uma das seguintes opções:

Consola

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

    As associações são apresentadas no seu projeto, num grupo denominado Associações externas.

  2. No painel Explorador, clique no nome do projeto > Ligações externas > ligação.

  3. No painel Detalhes, clique em Partilhar para partilhar uma associação. Depois, faça o seguinte:

    1. Na caixa de diálogo Autorizações de ligação, partilhe a ligação com outros responsáveis adicionando ou editando responsáveis.

    2. Clique em Guardar.

bq

Não pode partilhar uma ligação com a ferramenta de linhas de comando bq. Para partilhar uma associação, use a Trusted Cloud consola ou o método da API BigQuery Connections para partilhar uma associação.

API

Use o método projects.locations.connections.setIAM na secção de referência da API REST BigQuery Connections e forneça uma instância do recurso policy.

Java

Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

O que se segue?