Connetti a Spanner

In qualità di amministratore BigQuery, puoi creare una connessione per accedere ai dati di Spanner. Questa connessione consente agli analisti di dati di eseguire query sui dati in Spanner.

Prima di iniziare

Creazione di connessioni Spanner

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, fai clic su Aggiungi, quindi seleziona Connessioni all'origine dati esterna.

  3. Nel riquadro Origine dati esterna, inserisci le seguenti informazioni:

    • In Tipo di connessione, seleziona Cloud Spanner.
    • In ID connessione, inserisci un identificatore per la risorsa di connessione. Sono consentiti lettere, numeri e trattini bassi.
    • Per Tipo di località, seleziona una località (o regione) BigQuery compatibile con la regione dell'origine dati esterna.
    • (Facoltativo) Per Nome semplice, inserisci un nome facile da usare per la connessione, ad esempio My connection resource. Il nome descrittivo può essere qualsiasi valore che ti aiuti a identificare la risorsa di connessione se devi modificarla in un secondo momento.
    • (Facoltativo) In Descrizione, inserisci una descrizione per questa risorsa di connessione.
    • In Nome database, inserisci il nome del database Spanner nel seguente formato: "projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE"
    • (Facoltativo) Per eseguire letture parallele, seleziona Lettura dei dati in parallelo. Spanner può suddividere determinate query in parti più piccole, o partizioni, e recuperare le partizioni in parallelo. Per saperne di più, consulta Leggere i dati in parallelo nella documentazione di Spanner. Questa opzione è limitata alle query il cui primo operatore nel piano di esecuzione è un operatore di unione distribuita. Le altre query restituiscono un errore. Per visualizzare il piano di esecuzione di una query Spanner, consulta Informazioni su come Spanner esegue le query.
    • (Facoltativo) Per Ruolo database, inserisci il nome di un ruolo del database Spanner. Se non è vuoto, questa connessione esegue una query su Spanner utilizzando questo ruolo di database per impostazione predefinita. Agli utenti con controllo dell'accesso granulare di Spanner che inviano query tramite questa connessione deve essere stato concesso l'accesso a questo ruolo dall'amministratore e il ruolo del database deve disporre del privilegio SELECT su tutti gli oggetti schema specificati nelle query esterne. Per informazioni sul controllo dell'accesso granulare, consulta Informazioni sul controllo dell'accesso granulare.
    • (Facoltativo) Per abilitare Data Boost, seleziona Utilizza Spanner Data Boost. Data Boost ti consente di eseguire query di analisi ed esportazioni di dati con un impatto prossimo allo zero sui carichi di lavoro esistenti sull'istanza BigQuery di cui è stato eseguito il provisioning. Per attivare Data Boost, seleziona Data Boost e Leggi i dati in parallelo.
  4. Fai clic su Crea connessione.

bq

Per creare la connessione, utilizza il comando bq mk con il flag --connection.

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

Sostituisci quanto segue:

  • PROPERTIES: un oggetto JSON con i seguenti campi:

    • "database": il database Spanner per la connessione

      Specifica come stringa con il seguente formato: "projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE".

    • "use_parallelism": (facoltativo) se true, questa connessione esegue letture parallele

      Il valore predefinito è false. Spanner può suddividere determinate query in parti più piccole, o partizioni, e recuperare le partizioni in parallelo. Per saperne di più, consulta Leggere i dati in parallelo nella documentazione di Spanner. Questa opzione è limitata alle query il cui primo operatore nel piano di esecuzione è un operatore di unione distribuita. Le altre query restituiscono un errore. Per visualizzare il piano di esecuzione di una query Spanner, consulta Informazioni su come Spanner esegue le query.

    • "database_role": (facoltativo) se non è vuoto, questa connessione esegue una query su Spanner utilizzando questo ruolo database per impostazione predefinita. Agli utenti con controllo dell'accesso granulare di Spanner che inviano query tramite questa connessione deve essere stato concesso l'accesso a questo ruolo dall'amministratore e il ruolo del database deve disporre del privilegio SELECT su tutti gli oggetti schema specificati nelle query esterne.

      Se non specificato, la connessione viene autenticata con i ruoli IAM predefiniti per Spanner e all'entità che esegue le query con questa connessione deve essere stato concesso il ruolo IAM roles/spanner.databaseReader.

      Per informazioni sul controllo dell'accesso granulare, consulta Informazioni sul controllo dell'accesso granulare.

    • "useDataBoost": (facoltativo) se true, questa connessione consente agli utenti di utilizzare Data Boost. Data Boost consente agli utenti di eseguire query federate in capacità di calcolo separate e indipendenti dalle istanze di cui è stato eseguito il provisioning, per evitare ripercussioni sui carichi di lavoro esistenti. Per attivare Data Boost, imposta "useDataBoost" su true e "use_parallelism" su true.

      Per utilizzare Data Boost, all'entità che esegue query con questa connessione deve essere concessa l'autorizzazione spanner.databases.useDataBoost. Questa autorizzazione è inclusa per impostazione predefinita nei ruoli roles/spanner.admin e roles/spanner.databaseAdmin.

  • LOCATION: una località BigQuery compatibile con la regione dell'origine dati esterna.

  • CONNECTION_ID: un identificatore per la risorsa di connessione

    L'ID connessione può contenere lettere, numeri e trattini bassi. Se non specifichi un ID connessione, BigQuery genera automaticamente un ID univoco.

    L'esempio seguente crea una nuova risorsa di connessione denominata 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

Chiama il metodo CreateConnection all'interno del servizio ConnectionService.

Condividere i contatti con gli utenti

Puoi concedere i ruoli seguenti per consentire agli utenti di eseguire query sui dati e gestire le connessioni:

  • roles/bigquery.connectionUser: consente agli utenti di utilizzare le connessioni per connettersi a origini dati esterne ed eseguire query su di esse.

  • roles/bigquery.connectionAdmin: consente agli utenti di gestire le connessioni.

Per ulteriori informazioni sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Autorizzazioni e ruoli predefiniti.

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

    Le connessioni sono elencate nel progetto in un gruppo chiamato Connessioni esterne.

  2. Nel riquadro Explorer, fai clic sul nome del progetto > Connessioni esterne > connessione.

  3. Nel riquadro Dettagli, fai clic su Condividi per condividere una connessione. Quindi:

    1. Nella finestra di dialogo Autorizzazioni di connessione, condividi la connessione con altre entità aggiungendo o modificando entità.

    2. Fai clic su Salva.

bq

Non puoi condividere una connessione con lo strumento a riga di comando bq. Per condividere una connessione, utilizza la console Google Cloud o il metodo dell'API BigQuery Connections per condividere una connessione.

API

Utilizza il metodo projects.locations.connections.setIAM nella sezione di riferimento dell'API REST BigQuery Connections e fornisci un'istanza della risorsa policy.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

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:[email protected]")
              .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");
    }
  }
}

Passaggi successivi