Connettiti a Spanner

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

Prima di iniziare

Creare connessioni Spanner

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, fai clic su Aggiungi e poi seleziona Connessioni a un'origine dati esterna.

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

    • Per Tipo di connessione, seleziona Cloud Spanner.
    • In ID connessione, inserisci un identificatore per la connessione. risorsa. Sono consentiti numeri, lettere e trattini bassi.
    • In Tipo di località, seleziona un'istanza BigQuery località (o regione) compatibile con la regione esterna dell'origine dati.
    • (Facoltativo) In Nome semplice, inserisci un nome semplice per il come My connection resource. Il nome visualizzato può essere qualsiasi valore che ti aiuti a identificare la risorsa di connessione se devi modificarla in un secondo momento.
    • (Facoltativo) Per Descrizione, inserisci una descrizione. risorsa di connessione.
    • In Nome database, inserisci il nome dello Spanner nel seguente formato: "projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE"
    • (Facoltativo) Per eseguire letture in parallelo, seleziona Leggi i dati in parallelo. Spanner può suddividere alcune query partizioni o partizioni più piccole e recupera le partizioni in parallelo. Per ulteriori informazioni, consulta Leggere i dati in parallelo nella documentazione di Spanner. Questa opzione è è limitata alle query il cui primo operatore nel piano di esecuzione è Un'unione distribuita dell'operatore telefonico. Le altre query restituiscono un errore. Per visualizzare l'esecuzione della query per una query Spanner, consulta Informazioni su come Spanner esegue le query.
    • (Facoltativo) Per Ruolo database, inserisci il nome di un ruolo database Spanner. Se non è vuoto, questa connessione esegue query su Spanner utilizzando questo ruolo database per impostazione predefinita. Utenti di Spanner con controllo granulare degli accessi che inviano query tramite questa connessione deve aver ricevuto l'accesso a questo ruolo dall'amministratore, e il ruolo del database deve avere il privilegio SELECT per tutti gli schemi per gli oggetti specificati nelle query esterne. Per informazioni su sul controllo granulare, consulta Informazioni sul controllo dell'accesso granulare.
    • (Facoltativo) Per attivare Data Boost, seleziona Usa Spanner Data Boost. Data Boost consente di eseguire query di analisi ed esportazioni di dati con un impatto quasi nullo sui carichi di lavoro esistenti nell'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 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 viene eseguita letture parallele

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

    • "database_role": (facoltativo) se non è vuoto, questa connessione esegue query su Spanner utilizzando questo ruolo del database per impostazione predefinita. Utenti di Spanner con controllo granulare degli accessi che inviano query tramite questa connessione deve aver ricevuto l'accesso a questo ruolo dall'amministratore, e il ruolo del database deve avere il privilegio SELECT per tutti gli schemi per gli oggetti specificati nelle query esterne.

      Se non specificato, la connessione si autentica con i ruoli IAM predefiniti per Spanner e all'entità che esegue 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 una capacità di calcolo separata, indipendente e distinta dalle istanze di cui è stato eseguito il provisioning, per evitare di influire sui carichi di lavoro esistenti. Per attivare il potenziamento dei dati, imposta "useDataBoost" su true e "use_parallelism" su true.

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

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

  • CONNECTION_ID: un identificatore per la risorsa connessione

    L'ID connessione può contenere lettere, numeri e trattini bassi. Se non fornisci 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 di il servizio ConnectionService.

Condividere le connessioni con gli utenti

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

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

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

Per ulteriori informazioni su ruoli e autorizzazioni IAM in BigQuery, vedi 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 denominato 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 il connessione con altre entità aggiungendo o modificando tra cui scegliere.

    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.

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 Java riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.

Per autenticarti a BigQuery, configura le credenziali predefinite dell'applicazione. Per saperne di più, 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: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");
    }
  }
}

Passaggi successivi