Externe Spanner-Datasets erstellen
In diesem Dokument wird beschrieben, wie Sie in BigQuery ein externes Dataset (auch als föderiertes Dataset bezeichnet) erstellen, das mit einer vorhandenen Datenbank in Spanner verknüpft ist.
Ein externes Dataset ist eine Verbindung zwischen BigQuery und einer externen Datenquelle auf Dataset-Ebene. Damit können Sie transaktionale Daten in Spanner-Datenbanken mit GoogleSQL abfragen, ohne alle Daten aus Spanner in den BigQuery-Speicher kopieren oder importieren zu müssen. Diese Abfrageergebnisse werden in BigQuery gespeichert.
Die Tabellen in einem externen Dataset werden automatisch aus den Tabellen in der entsprechenden externen Datenquelle gefüllt. Sie können diese Tabellen direkt in BigQuery abfragen, aber keine Änderungen vornehmen, etwas hinzufügen oder löschen. Alle Aktualisierungen, die Sie in der externen Datenquelle vornehmen, werden jedoch automatisch in BigQuery übernommen.
Wenn Sie Spanner abfragen, werden die Abfrageergebnisse standardmäßig in temporären Tabellen gespeichert. Sie können optional auch als neue BigQuery-Tabelle gespeichert, mit anderen Tabellen verknüpft oder mit vorhandenen Tabellen zusammengeführt werden. Dazu verwenden Sie DML.
Erforderliche Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Nutzer (roles/bigquery.user
) zuzuweisen, um die Berechtigung zu erhalten, die Sie zum Erstellen eines externen Datasets benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigung bigquery.datasets.create
, die zum Erstellen eines externen Datasets erforderlich ist.
Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.
CLOUD_RESOURCE
-Verbindung verwenden
Optional können für externe Spanner-Datasets eine CLOUD_RESOURCE
-Verbindung verwendet werden, um mit Ihrer Spanner-Datenbank zu interagieren. So können Sie einem Nutzer über BigQuery Zugriff auf Spanner-Daten gewähren, ohne ihm direkten Zugriff auf die Spanner-Datenbank zu geben. Da das Dienstkonto aus der CLOUD_RESOURCE
-Verbindung das Abrufen von Daten aus Spanner übernimmt, müssen Sie Nutzern nur Zugriff auf das externe Spanner-Dataset gewähren.
Führen Sie vor dem Erstellen externer Cloud Spanner-Datasets mit einer CLOUD_RESOURCE
-Verbindung die folgenden Schritte aus:
Verbindung herstellen
Sie können eine CLOUD_RESOURCE
-Verbindung erstellen oder eine vorhandene verwenden, um eine Verbindung zu Spanner herzustellen. Folgen Sie zum Erstellen der Cloud-Ressourcenverbindung der Anleitung auf der Seite Cloud-Ressourcenverbindung erstellen.
Nachdem Sie die Verbindung erstellt haben, öffnen Sie sie und kopieren Sie im Bereich Verbindungsinformationen die Dienstkonto-ID. Sie benötigen diese ID, wenn Sie Berechtigungen für die Verbindung konfigurieren. Wenn Sie eine Verbindungsressource erstellen, erstellt BigQuery ein eindeutiges Systemdienstkonto und ordnet es der Verbindung zu.
Zugriff einrichten
Sie müssen der neuen Verbindung Lesezugriff auf Ihre Spanner-Instanz oder -Datenbank gewähren. Es wird empfohlen, die vordefinierte IAM-Rolle „Cloud Spanner Database Reader with DataBoost“ (roles/spanner.databaseReaderWithDataBoost
) zu verwenden.
So gewähren Sie Zugriff auf Rollen auf Datenbankebene für das Dienstkonto, das Sie zuvor aus der Verbindung kopiert haben:
Rufen Sie die Spanner-Seite Instanzen auf.
Klicken Sie auf den Namen der Instanz, die Ihre Datenbank enthält, um die Seite Instanzdetails aufzurufen.
Klicken Sie auf dem Tab Übersicht das Kästchen der Datenbank an.
Das Infofeld wird angezeigt.Klicken Sie auf Hauptkonto hinzufügen.
Geben Sie im Bereich Hauptkonten hinzufügen unter Neue Hauptkonten die Dienstkonto-ID ein, die Sie zuvor kopiert haben.
Wählen Sie im Feld Rolle auswählen die Option Cloud Spanner-Datenbankleser mit DataBoost-Rolle aus.
Klicken Sie auf Speichern.
Externes Dataset erstellen
So erstellen Sie ein externes Dataset:
Console
Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.
Wählen Sie im Bereich Explorer das Projekt aus, in dem Sie das Dataset erstellen möchten.
Maximieren Sie die Option
Aktionen und klicken Sie auf Dataset erstellen.Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:
- Geben Sie für Dataset-ID einen eindeutigen Dataset-Namen ein.
- Wählen Sie unter Standorttyp einen Standort für das Dataset aus, z. B.
us-central1
oderus
. Nachdem Sie ein Dataset erstellt haben, kann der Standort nicht mehr geändert werden. Gehen Sie für Externes Dataset so vor:
- Klicken Sie auf das Kästchen neben Link zu einem externen Dataset.
- Wählen Sie für Typ des externen Datasets die Option
Spanner
aus. - Geben Sie unter Externe Quelle die vollständige ID Ihrer Spanner-Datenbank im folgenden Format ein:
projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE
. Beispiel:projects/my_project/instances/my_instance/databases/my_database
. - Geben Sie optional unter Datenbankrolle den Namen einer Spanner-Datenbankrolle ein. Weitere Informationen finden Sie unter Datenbankrollen zum Erstellen von Spanner-Verbindungen.
- Optional können Sie das Kästchen neben Cloud-Ressourcenverbindung verwenden aktivieren, um das externe Dataset mit einer Verbindung zu erstellen.
Übernehmen Sie die anderen Einstellungen.
Klicken Sie auf Dataset erstellen.
SQL
Verwenden Sie die Datendefinitionssprachen-Anweisung (DDL) CREATE EXTERNAL SCHEMA
.
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Geben Sie im Abfrageeditor die folgende Anweisung ein:
CREATE EXTERNAL SCHEMA DATASET_NAME OPTIONS ( external_source = 'SPANNER_EXTERNAL_SOURCE', location = 'LOCATION'); /* Alternatively, create with a connection: */ CREATE EXTERNAL SCHEMA DATASET_NAME WITH CONNECTION
PROJECT_ID.LOCATION.CONNECTION_NAME
OPTIONS ( external_source = 'SPANNER_EXTERNAL_SOURCE', location = 'LOCATION');Ersetzen Sie Folgendes:
DATASET_NAME
: der Name Ihres neuen Datasets in BigQuery.SPANNER_EXTERNAL_SOURCE
: Der vollständige, qualifizierte Spanner-Datenbankname mit einem Präfix, das die Quelle identifiziert, im folgenden Format:google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE
. Beispiel:google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database
odergoogle-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database
.LOCATION
: der Speicherort Ihres neuen Datasets in BigQuery, z. B.us-central1
. Nachdem Sie ein Dataset erstellt haben, können Sie seinen Standort nicht mehr ändern.- Optional:
CONNECTION_NAME
: der Name Ihrer Cloud-Ressourcenverbindung.
Klicken Sie auf
Ausführen.
Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.
bq
Erstellen Sie in einer Befehlszeilenumgebung ein externes Dataset mit dem Befehl bq mk
:
bq --location=LOCATION mk --dataset \ --external_source SPANNER_EXTERNAL_SOURCE \ DATASET_NAME
Alternativ können Sie auch eine Verbindung erstellen:
bq --location=LOCATION mk --dataset \ --external_source SPANNER_EXTERNAL_SOURCE \ --connection_id PROJECT_ID.LOCATION.CONNECTION_NAME \ DATASET_NAME
Ersetzen Sie Folgendes:
LOCATION
: der Standort Ihres neuen Datasets in BigQuery, z. B.us-central1
. Nachdem Sie ein Dataset erstellt haben, können Sie seinen Standort nicht mehr ändern. Mit der Datei.bigqueryrc
können Sie einen Standardwert für den Standort festlegen.SPANNER_EXTERNAL_SOURCE
: Der vollständige, qualifizierte Spanner-Datenbankname mit einem Präfix, das die Quelle identifiziert, im folgenden Format:google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE
. Beispiel:google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database
odergoogle-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database
.DATASET_NAME
: der Name Ihres neuen Datasets in BigQuery. Wenn Sie ein Dataset in einem anderen Projekt als dem Standardprojekt erstellen möchten, fügen Sie die Projekt-ID im FormatPROJECT_ID
:DATASET_NAME
dem Dataset-Namen hinzu.- Optional:
CONNECTION_NAME
: der Name Ihrer Cloud-Ressourcenverbindung.
Terraform
Verwenden Sie die Ressource google_bigquery_dataset
:
Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Im folgenden Beispiel wird ein externes Spanner-Dataset erstellt:
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
API
Rufen Sie die Methode datasets.insert
mit einer definierten Dataset-Ressource und dem Feld externalDatasetReference
für Ihre Spanner-Datenbank auf.
Bei den Namen der Tabellen in den externen Datasets wird die Groß-/Kleinschreibung nicht berücksichtigt.
Wenn Sie die externen Datasets mit einer CLOUD_RESOURCE
-Verbindung erstellen, benötigen Sie die Berechtigung bigquery.connections.delegate
(über die Rolle „BigQuery Connection Admin“ verfügbar) für die Verbindung, die von den externen Datasets verwendet wird.
Zugriff auf Tabellen steuern
Externe Spanner-Datasets unterstützen Endnutzeranmeldedaten. Das bedeutet, dass der Zugriff auf die Spanner-Tabellen über externe Datasets von Spanner gesteuert wird. Nutzer können diese Tabellen nur abfragen, wenn sie in Spanner Zugriff haben.
Externe Spanner-Datasets unterstützen auch die Zugriffsdelegierung. Durch die Zugriffsdelegation wird der Zugriff auf die Spanner-Tabellen von externen Datasets und dem direkten Zugriff auf die zugrunde liegenden Spanner-Tabellen entkoppelt. Für den Verbindungsaufbau zu Spanner wird eine Cloud-Ressourcenverbindung verwendet, die mit einem Dienstkonto verknüpft ist. Nutzer können diese Spanner-Tabellen aus externen Datasets abfragen, auch wenn sie in Spanner keinen Zugriff haben.
Tabellen in einem externen Dataset auflisten
Informationen zum Auflisten der Tabellen, die in Ihrem externen Dataset für Abfragen verfügbar sind, finden Sie unter Datasets auflisten.
Tabelleninformationen abrufen
Informationen zu den Tabellen in Ihrem externen Dataset, z. B. Schemadetails, finden Sie unter Tabelleninformationen abrufen.
Spanner-Daten abfragen
Tabellen in externen Datasets abzufragen funktioniert genauso wie das Abfragen von Tabellen in anderen BigQuery-Datasets. Datenänderungsvorgänge (DML) werden jedoch nicht unterstützt.
Für Abfragen für Tabellen in externen Spanner-Datasets wird standardmäßig Data Boost verwendet. Das kann nicht geändert werden. Daher benötigen Sie zusätzliche Berechtigungen, um solche Abfragen auszuführen.
Ansicht in einem externen Dataset erstellen
Sie können keine Ansicht in einem externen Dataset erstellen. Sie können jedoch eine Ansicht in einem Standard-Dataset erstellen, die auf einer Tabelle in einem externen Dataset basiert. Weitere Informationen finden Sie unter Ansichten erstellen.
Externes Dataset löschen
Das Löschen eines externen Datasets entspricht dem Löschen eines beliebigen anderen BigQuery-Datasets. Das Löschen externer Datasets hat keine Auswirkungen auf Tabellen in der Spanner-Datenbank. Weitere Informationen finden Sie unter Datasets löschen.
Beschränkungen
- Es gelten die Einschränkungen für föderierte BigQuery-Abfragen.
- In BigQuery sind nur Tabellen aus einem Standard-Spanner-Schema zugänglich. Tabellen aus benannten Schemas werden nicht unterstützt.
- Primär- und Fremdschlüssel, die in der Spanner-Datenbank definiert sind, sind in BigQuery nicht sichtbar.
- Wenn eine Tabelle in der Spanner-Datenbank eine Spalte mit einem Typ enthält, der von BigQuery nicht unterstützt wird, ist diese Spalte in BigQuery nicht verfügbar.
- Sie können in Tabellen in einem externen Spanner-Dataset keine Daten oder Metadaten hinzufügen, löschen oder aktualisieren.
- Sie können in einem externen Spanner-Dataset keine neuen Tabellen, Ansichten oder materialisierten Ansichten erstellen.
INFORMATION_SCHEMA
-Aufrufe werden nicht unterstützt.- Metadaten-Caching wird nicht unterstützt.
- Einstellungen auf Dataset-Ebene, die sich auf Standardeinstellungen für die Tabellenerstellung beziehen, wirken sich nicht auf externe Datasets aus, da Tabellen nicht manuell erstellt werden können.
- Spanner-Datenbanken, die den PostgreSQL-Dialekt verwenden, werden nicht unterstützt.
- Die Write API und die Read API werden nicht unterstützt.
- Sicherheit auf Zeilen- und Spaltenebene sowie Datenmaskierung werden nicht unterstützt.
- Materialisierte Ansichten, die auf Tabellen aus externen Spanner-Datasets basieren, werden nicht unterstützt.
- Die Integration in Dataplex Universal Catalog wird nicht unterstützt. Datenprofile und Datenqualitätsscans werden beispielsweise nicht unterstützt.
- Tags auf Tabellenebene werden nicht unterstützt.
- Die automatische Vervollständigung von SQL funktioniert nicht mit externen Spanner-Tabellen, wenn Sie Abfragen schreiben.
- Die Funktion Mit Schutz sensibler Daten scannen wird für externe Datasets nicht unterstützt.
- Die Freigabe über BigQuery Sharing (früher Analytics Hub) wird für externe Datasets nicht unterstützt.
- Wenn für das externe Cloud Spanner-Dataset Endnutzeranmeldedaten verwendet werden, können Sie eine autorisierte Ansicht erstellen, die auf das externe Dataset verweist. Wenn diese Ansicht jedoch abgefragt wird, werden die Endnutzer-Cookies der Person, die eine Abfrage ausführt, an Spanner gesendet.
- Wenn für das externe Cloud Spanner-Dataset eine Cloud-Ressourcenverbindung für die Zugriffsdelegierung verwendet wird, können Sie eine autorisierte Ansicht oder eine autorisierte Routine erstellen, die auf das externe Dataset verweist.