Auf dieser Seite wird beschrieben, wie Sie mit Lakehouse Federation über eine AlloyDB for PostgreSQL-Schnittstelle auf Daten zugreifen, die in BigQuery gespeichert sind oder über BigQuery zugänglich sind.
Der Foreign Data Wrapper unterstützt eine Vielzahl von BigQuery-Ressourcen, sodass Sie Folgendes abfragen können:
- Native Tabellen und materialisierte Ansichten
- BigQuery-Ansichten(logische Ansichten)
- Externe BigLake-Tabellen, einschließlich der Tabellen für verwaltete Apache Iceberg-Tabellen
- Standardmäßige externe Tabellen
Mit dieser Integration können Sie BigQuery-Datasets als lokale Tabellen in Ihrer PostgreSQL-Umgebung behandeln, um analysen über mehrere Engines hinweg durchzuführen. Weitere Informationen finden Sie unter Lakehouse Federation in AlloyDB – Übersicht.
Auf dieser Seite wird davon ausgegangen, dass Sie einen AlloyDB-Cluster und eine primäre Instanz sowie ein BigQuery-Dataset und ‑Tabellen haben. Weitere Informationen finden Sie unter Datasets erstellen und Tabellen erstellen und verwenden.
Hinweis
- Achten Sie darauf, dass das Flag
bigquery_fdw.enabledfür die AlloyDB for PostgreSQL-Instanz konfiguriert ist. - Machen Sie sich mit den unterstützten BigQuery-Datentypen und Spaltenzuordnungen vertraut.
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Aktivieren Sie die Cloud APIs, die zum Erstellen einer Verbindung zu AlloyDB for PostgreSQL erforderlich sind.
Klicken Sie im Schritt Projekt bestätigen auf Weiter, um den Namen des Projekts zu bestätigen, an dem Sie Änderungen vornehmen möchten.
Klicken Sie im Schritt APIs aktivieren auf Aktivieren, um Folgendes zu aktivieren:
- AlloyDB API
- Compute Engine API
- Cloud Resource Manager API
- Service Networking API
- BigQuery Storage API
- BigQuery API
Die Service Networking API ist erforderlich, wenn Sie die Netzwerkkonnektivität zu AlloyDB mit einem VPC-Netzwerk konfigurieren möchten, das sich im selben Google Cloud Projekt wie AlloyDB befindet.
Die Compute Engine API und die Cloud Resource Manager API sind erforderlich, wenn Sie die Netzwerkverbindung zu AlloyDB über ein VPC-Netzwerk konfigurieren möchten, das sich in einem anderen Google Cloud -Projekt befindet.
Erforderliche Rollen
Damit Sie dem AlloyDB-Cluster-Dienstkonto Lesezugriff auf das BigQuery-Dataset gewähren können, benötigen Sie die folgenden Berechtigungen. Weitere Informationen finden Sie unter AlloyDB-Zugriff auf das BigQuery-Dataset gewähren.
- Rolle „BigQuery-Datenbetrachter“ (
roles/bigquery.dataViewer) oder eine benutzerdefinierte Rolle mit den Berechtigungenbigquery.tables.getundbigquery.tables.getData. Wenn diese Rolle für eine Tabelle oder Ansicht gewährt wird, bietet sie Berechtigungen zum Lesen von Daten und Metadaten aus der Tabelle oder Ansicht. - BigQuery-Lesesitzungsnutzer
(
roles/bigquery.readSessionUser) oder eine beliebige benutzerdefinierte Rolle mit den Berechtigungenbigquery.readsessions.createundbigquery.readsessions.getData. Ermöglicht das Erstellen und Verwenden von Lesesitzungen. - BigQuery-Jobnutzer (
roles/bigquery.jobUser) oder eine benutzerdefinierte Rolle mit den Berechtigungenbigquery.jobs.create. Berechtigungen zum Ausführen von Jobs, einschließlich Abfragen, innerhalb des Projekts über die BigQuery API. Diese Rolle kann nur für Resource Manager-Ressourcen (Projekte, Ordner und Organisationen) gewährt werden. - Storage-Objekt-Betrachter (
roles/storage.objectViewer) oder eine benutzerdefinierte Rolle mit den Berechtigungenstorage.objects.get. Bietet Berechtigungen für den Zugriff auf externe BigQuery-Tabellen. Muss auf Projekt- oder Bucket-Ebene gewährt werden.
AlloyDB-Zugriff auf das BigQuery-Dataset gewähren
Nachdem die Lakehouse Federation-Funktion in Ihrem AlloyDB-Cluster aktiviert wurde, müssen Sie dem Dienstkonto des AlloyDB-Clusters Zugriff auf das BigQuery-Dataset gewähren.
In der Google Cloud Konsole werden dem Dienstkonto des Clusters automatisch die erforderlichen Berechtigungen gewährt, wenn Sie eine BigQuery-Tabelle über AlloyDB Studio verbinden.
So gewähren Sie Zugriff mit der gcloud CLI:
gcloud
Wenn Sie die gcloud CLI verwenden möchten, können Sie die Google Cloud CLI installieren und initialisieren oder Cloud Shell verwenden.
Öffnen Sie die gcloud CLI. Wenn die gcloud CLI nicht installiert ist, installieren und initialisieren Sie die gcloud CLI oder verwenden Sie Cloud Shell.
Führen Sie den Befehl
gcloud beta alloydb clusters describeaus:gcloud beta alloydb clusters describe CLUSTER --region=REGIONErsetzen Sie Folgendes:
CLUSTER: Die AlloyDB-Cluster-ID.REGION: Der Standort des AlloyDB-Clusters, z. B.asia-east1,us-east1. Eine vollständige Liste der Regionen finden Sie unter Instanzstandorte verwalten.
Die Ausgabe enthält das Feld
serviceAccountEmail, das das Dienstkonto für diesen Cluster ist. Sie finden das Dienstkonto auch auf der Seite Clusterübersicht.Erforderliche Berechtigungen erteilen Weitere Informationen finden Sie unter Zugriff auf Ressourcen mit IAM steuern.
Wenn das Dienstkonto des Clusters nicht die erforderlichen Berechtigungen hat, werden beim Ausführen einer Abfrage für die BigQuery-Tabelle die folgenden Fehler angezeigt:
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
Erweiterung konfigurieren
So konfigurieren Sie die Erweiterung:
Console
Zur Clusterseite.
Klicken Sie auf die ID des Clusters, den Sie verwenden möchten.
Klicken Sie im Navigationsmenü auf AlloyDB Studio.
Melden Sie sich in Ihrer Datenbank an.
Maximieren Sie im Bereich Explorer das entsprechende Schema.
Klicken Sie neben BigQuery-Tabellen auf das Menü Aktionen und dann auf BigQuery-Tabelle verbinden.
Wählen Sie im Bereich BigQuery-Tabelle verbinden ein Quellprojekt, ein Quelldataset und eine Tabelle aus.
In der Tabelle Spalten überprüfen und auswählen werden die Spalten aus der ausgewählten Tabelle angezeigt. Wählen Sie die Spalten aus, die Sie zuordnen möchten.
Geben Sie im Feld Tabellenname einen Namen für die externe Tabelle ein.
Optional: Klicken Sie auf SQL-Befehl ansehen, um den generierten Befehl aufzurufen.
Klicken Sie auf Tabelle verbinden. Ein Dialogfeld mit dem Fortschritt wird angezeigt. Nach Abschluss des Vorgangs können Sie die Tabelle wie jede andere Tabelle in AlloyDB abfragen.
psql
Erstellen Sie die Erweiterung.
- Stellen Sie über den psql-Client eine Verbindung zur AlloyDB-Instanz her. Folgen Sie dazu der Anleitung unter psql-Client mit einer Instanz verbinden. Alternativ können Sie AlloyDB Studio verwenden. Weitere Informationen finden Sie unter Daten mit der Google Cloud Console verwalten.
Führen Sie dazu diesen Befehl aus:
CREATE EXTENSION bigquery_fdw;
Erstellen Sie einen externen Server, um die Verbindungsparameter für das Remote-BigQuery-Dataset zu definieren.
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;Ersetzen Sie Folgendes:
BIGQUERY_SERVER_NAME: Eindeutige Kennung für den fremden Server. Definieren Sie dies einmal in einer bestimmten Datenbank. Sie könnenBIGQUERY_SERVER_NAMEdurch den Namen Ihres Servers ersetzen.
Erstellen Sie die Nutzerzuordnung, indem Sie den Befehl
CREATE USER MAPPINGausführen. Dadurch wird ein lokaler PostgreSQL-Nutzer, mit dem Sie eine Verbindung zum externen Server herstellen möchten, zugeordnet.CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;Ersetzen Sie Folgendes:
USERNAME: Ein Datenbanknutzername oder ein IAM-Nutzer, der auf die externe Tabelle zugreift.BIGQUERY_SERVER_NAME: Eindeutige Kennung für den von Ihnen erstellten ausländischen Server.
Definieren Sie mit dem Befehl
CREATE FOREIGN TABLEexterne Tabellen, die den Tabellen entsprechen, auf die Sie in BigQuery zugreifen möchten. Mit diesem Befehl können Sie die Struktur einer Remotetabelle definieren. Die Fremdtabelle kann entweder alle oder eine Teilmenge der Spalten in der Quelltabelle in BigQuery enthalten.CREATE FOREIGN TABLE TABLENAME ( COLUMN1_NAME DATA_TYPE, COLUMN2_NAME DATA_TYPE, ... ) SERVER BIGQUERY_SERVER_NAME OPTIONS (project BIGQUERY_PROJECT_ID, dataset BIGQUERY_DATASET_NAME, table BIGQUERY_TABLE_NAME [, mode EXECUTION_MODE]);Ersetzen Sie Folgendes:
TABLENAME: der Name der externen Tabelle in der lokalen AlloyDB-Datenbank.COLUMNX_NAME: Der Name der AlloyDB-Spalte. Der Spaltenname muss genau mit dem Namen der entsprechenden Spalte in der BigQuery-Quelltabelle übereinstimmen.Xgibt an, dass die Tabelle mit mehreren Spalten erstellt werden kann. Der Name muss auch der Groß-/Kleinschreibung der BigQuery-Spalte entsprechen. Wenn der Name der BigQuery-Spalte Großbuchstaben enthält (z. B.employeeID), muss die AlloyDB-Kennung in doppelte Anführungszeichen gesetzt werden (z. B."employeeID"), damit Großbuchstaben erhalten bleiben.DATA_TYPE: Der Datentyp der Spalte.BIGQUERY_SERVER_NAME: Eindeutige Kennung für den von Ihnen erstellten ausländischen Server.BIGQUERY_PROJECT_ID: ID des Projekts, in dem sich das BigQuery-Dataset befindet.BIGQUERY_DATASET_NAME: Name des BigQuery-Datasets für die Tabelle.BIGQUERY_TABLE_NAME: Name der BigQuery-Tabelle.EXECUTION_MODE: Optional. Die Optionmodekannquerysein, um die BigQuery API für komplexe Abfragen zu verwenden,storage, um die BigQuery Storage API für schnellere Bulk-Lesevorgänge zu verwenden, oderauto, um automatisch zwischen den Modi zu wählen.autoist die Standardeinstellung. Weitere Informationen finden Sie unter Ausführungsmodi für BigQuery Foreign Data Wrappers.
Nachdem die externe Tabelle erstellt wurde, können Sie sie genauso abfragen wie jede andere Tabelle in AlloyDB.
Ausführungsmodi für BigQuery-Foreign-Data-Wrapper
Der Ausführungsmodus bestimmt, wie AlloyDB for PostgreSQL mit BigQuery interagiert, um Daten abzurufen. Der BigQuery-Wrapper für externe Daten unterstützt zwei Ausführungsmodi: query und storage. Die Auswahl des richtigen Modus ist entscheidend, da jeder Modus eigene Leistungsmerkmale und Preise hat. Weitere Informationen finden Sie unter BigQuery-Preise.
Modus Abfrage
In diesem Modus wird die BigQuery API verwendet, um Daten aus BigQuery abzurufen. Dabei wird die Compute-Engine von BigQuery verwendet, um komplexe Abfragen auszuführen, indem Filter und Aggregationen per Push-down-Verfahren übertragen werden. Das bedeutet, dass WHERE-Klauseln, GROUP BY-Klauseln und Aggregationen in BigQuery ausgeführt werden, bevor Daten an PostgreSQL zurückgesendet werden. In diesem Modus können auch BigQuery-Ansichten und externe Tabellen abgefragt werden.
Da diese API strukturierte, paginierte Zeilenantworten für kleine Ergebnismengen bietet, unterliegt das Lesen großer Datasets Durchsatzbeschränkungen und es treten höhere Latenzen auf als bei der Streaming-Alternative der BigQuery Storage API.
Speichermodus
In diesem Modus werden Daten mit der BigQuery Storage API aus BigQuery abgerufen. Sie ermöglicht Lesevorgänge mit hohem Durchsatz, indem strukturierte Daten in einem binären Serialisierungsformat übertragen werden. Dies ist der bevorzugte Modus zum Scannen großer Tabellen in BigQuery.
Dieser Modus hat jedoch einige Einschränkungen. Nicht alle komplexen SQL-Vorgänge können an die BigQuery Storage API übertragen werden. Aggregationen können beispielsweise nicht an BigQuery übertragen werden und müssen in AlloyDB ausgeführt werden. In diesem Modus können auch keine BigQuery-Ansichten und externen Tabellen abgefragt werden.
Automatikmodus
Der Standardmodus ist auf auto gesetzt, wenn Sie den Modus im Befehl CREATE FOREIGN TABLE nicht festlegen.
Wenn Sie den auto-Modus verwenden, wählt AlloyDB die zugrunde liegende API aus, um die Leistung zu optimieren und die Anzahl der SQL-Vorgänge zu maximieren, die an BigQuery übertragen werden.
Nächste Schritte
- BigQuery- und Iceberg-Daten mit AlloyDB synchronisieren
- Unterstützte BigQuery-Datentypen und Spaltenzuordnungen