Verbindung zu Cloud Spanner herstellen

Als BigQuery-Administrator können Sie eine Verbindung erstellen, um auf Cloud Spanner-Daten zuzugreifen. Über diese Verbindung können Datenanalysten Daten in Cloud Spanner abfragen.

Hinweis

Spanner-Verbindungen erstellen

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Wählen Sie im Menü Daten hinzufügen die Option Verbindung zur externen Datenquelle aus.

  3. Geben Sie im Bereich Externe Datenquelle die folgenden Informationen ein:

    • Wählen Sie als Verbindungstyp die Option Spanner aus.
    • Geben Sie unter Verbindungs-ID eine Kennung für die Verbindungsressource ein. Buchstaben, Ziffern und Unterstriche sind zulässig.
    • Wählen Sie unter Datenstandort einen BigQuery-Standort (oder eine Region) aus, der mit Ihrer externen Region für die Datenquellen kompatibel ist.
    • Optional: Geben Sie unter Anzeigename einen nutzerfreundlichen Namen für die Verbindung ein, z. B. My connection resource. Der Anzeigename kann ein beliebiger Wert sein, mit dem Sie die Verbindungsressource identifizieren können, wenn Sie sie später ändern müssen.
    • Optional: Sie können unter Beschreibung eine Beschreibung für diese Verbindungsressource eingeben.
    • Geben Sie unter Datenbankname den Namen der Spanner-Datenbank im folgenden Format ein: "projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE"
    • Optional: Wählen Sie Parallele Lesevorgänge lesen aus, um parallele Lesevorgänge durchzuführen. Spanner kann bestimmte Abfragen in kleinere Teile oder Partitionen aufteilen und die Partitionen parallel abrufen. Weitere Informationen finden Sie unter Daten parallel lesen in der Spanner-Dokumentation. Diese Option ist jedoch auf Abfragen beschränkt, deren erster Operator im Ausführungsplan der Operator Distributed Union ist. Andere Abfragen geben einen Fehler zurück. Informationen zum Abfrageausführungsplan für eine Spanner-Abfrage finden Sie unter Informationen zur Ausführung von Abfragen in Cloud Spanner.
    • Optional: Geben Sie unter Datenbankrolle den Namen einer Spanner-Datenbankrolle ein. Wenn nicht leer, fragt diese Verbindung standardmäßig Spanner mithilfe dieser Datenbankrolle ab. Nutzer der fein abgestimmten Zugriffssteuerung, die Abfragen über diese Verbindung senden, müssen von ihrem Administrator Zugriff auf diese Rolle erhalten haben und die Datenbankrolle muss die SELECT-Berechtigung für alle Schemaobjekte haben, die in externen Abfragen angegeben sind. Informationen zur detaillierten Zugriffssteuerung finden Sie unter Detaillierte Zugriffssteuerung.
    • Optional: Wählen Sie Data Boost aus, um Data Boost zu aktivieren. Mit Data Boost können Sie Analyseabfragen und Datenexporte nahezu ohne Auswirkungen auf vorhandene Arbeitslasten auf der bereitgestellten BigQuery-Instanz ausführen. Wählen Sie Data Boost und Daten parallel lesen aus, um Data Boost zu aktivieren.
  4. Klicken Sie auf Verbindung erstellen.

bq

Verwenden Sie zum Erstellen der Verbindung den Befehl bq mk mit dem Flag --connection.

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

Dabei gilt:

  • PROPERTIES: Ein JSON-Objekt mit den folgenden Feldern:

    • "database": Die Spanner-Datenbank für die Verbindung.

      Geben Sie einen String im folgenden Format an: "projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE".

    • "use_parallelism": (Optional) Bei true führt diese Verbindung parallele Lesevorgänge aus.

      Der Standardwert ist false. Spanner kann bestimmte Abfragen in kleinere Teile oder Partitionen aufteilen und die Partitionen parallel abrufen. Weitere Informationen finden Sie unter Daten parallel lesen in der Spanner-Dokumentation. Diese Option ist jedoch auf Abfragen beschränkt, deren erster Operator im Ausführungsplan der Operator Distributed Union ist. Andere Abfragen geben einen Fehler zurück. Informationen zum Abfrageausführungsplan für eine Spanner-Abfrage finden Sie unter Informationen zur Ausführung von Abfragen in Cloud Spanner.

    • "database_role": (Optional) Wenn nicht leer, fragt diese Verbindung standardmäßig Spanner mithilfe dieser Datenbankrolle ab. Nutzer der fein abgestimmten Zugriffssteuerung, die Abfragen über diese Verbindung senden, müssen von ihrem Administrator Zugriff auf diese Rolle erhalten haben und die Datenbankrolle muss die SELECT-Berechtigung für alle Schemaobjekte haben, die in externen Abfragen angegeben sind.

      Wenn nicht angegeben, wird die Verbindung mit vordefinierten IAM-Rollen für Spanner authentifiziert und dem Hauptkonto, das Abfragen mit dieser Verbindung ausführt, muss die IAM-Rolle roles/spanner.databaseReader zugewiesen worden sein.

      Informationen zur detaillierten Zugriffssteuerung finden Sie unter Detaillierte Zugriffssteuerung.

    • "useDataBoost": (Optional) Wenn true, können Nutzer über diese Verbindung Data Boost verwenden. Mit Data Boost können Nutzer föderierte Abfragen in separater, unabhängiger Rechenkapazität ausführen, die von bereitgestellten Instanzen getrennt ist, um vorhandene Arbeitslasten nicht zu beeinträchtigen. Setzen Sie "useDataBoost" auf true und "use_parallelism" auf true, um Data Boost zu aktivieren.

      Damit Sie Data Boost verwenden können, muss dem Hauptkonto, das Abfragen mit dieser Verbindung ausführt, die Berechtigung spanner.databases.useDataBoost erteilt worden sein. Diese Berechtigung ist standardmäßig in den Rollen roles/spanner.admin und roles/spanner.databaseAdmin enthalten.

  • LOCATION: Ein BigQuery-Standort, der mit Ihrer externen Datenquellenregion kompatibel ist.

  • CONNECTION_ID: Eine Kennzeichnung für die Verbindungsressource.

    Die Verbindungs-ID kann Buchstaben, Ziffern und Unterstriche enthalten. Wenn Sie keine Verbindungs-ID angeben, generiert BigQuery automatisch eine eindeutige ID.

    Im folgenden Beispiel wird eine neue Verbindungsressource mit dem Namen my_connection_id erstellt.

    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

Rufen Sie die Methode CreateConnection im Dienst ConnectionService auf.

Verbindungen für Nutzer freigeben

Sie können die folgenden Rollen zuweisen, damit Nutzer Daten abfragen und Verbindungen verwalten können:

  • roles/bigquery.connectionUser: Nutzer können Verbindungen nutzen, um sich mit externen Datenquellen zu verbinden und diese abzufragen.

  • roles/bigquery.connectionAdmin: Nutzer können Verbindungen verwalten.

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

    Verbindungen werden in Ihrem Projekt in einer Gruppe namens Externe Verbindungen aufgeführt.

  2. Klicken Sie im Bereich Explorer auf Ihren Projektnamen > Externe Verbindungen > Verbindung.

  3. Klicken Sie im Bereich Details auf Freigeben, um eine Verbindung freizugeben. Führen Sie anschließend folgende Schritte aus:

    1. Geben Sie im Dialogfeld Verbindungsberechtigungen die Verbindung für andere Hauptkonten frei, indem Sie Hauptkonten hinzufügen oder bearbeiten.

    2. Klicken Sie auf Speichern.

bq

Sie können keine Verbindung mit dem bq-Befehlszeilentool freigeben. Verwenden Sie zum Freigeben einer Verbindung die Google Cloud Console oder die Methode der BigQuery Connections API.

API

Verwenden Sie die Methode projects.locations.connections.setIAM in dem Referenzabschnitt zur BigQuery Connections REST API und geben Sie eine Instanz der Ressource policy an.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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");
    }
  }
}

Nächste Schritte