In diesem Dokument wird erläutert, wie Sie die Lakehouse-Föderation implementieren. Mit dieser Funktion können Sie Live-Daten in BigQuery direkt aus AlloyDB abfragen, ohne komplexe ETL-Migrationen (Extrahieren, Transformieren, Laden) durchführen zu müssen. Die Lakehouse-Föderation vereint Ihre Betriebs- und Analysedatenspeicher und macht komplexe und fehleranfällige Datenpipelines überflüssig. Weitere Informationen finden Sie unter Übersicht über den Zugriff auf Echtzeitdaten.
Durch die Integration von AlloyDB und BigQuery können Sie einen nahtlosen Datenfluss zwischen Ihrer Transaktionsdatenbank und Ihrem Data Warehouse erzielen. Dies unterstützt Echtzeitanalysen und hilft Ihnen, leistungsstarke interaktive Anwendungen zu entwickeln.
Mit dieser Integration können Sie Abfragen in AlloyDB ausführen, die in Echtzeit auf BigQuery-Daten zugreifen. Sie können Joins zwischen Tabellen in AlloyDB und externen Tabellen ausführen, die auf Ihre BigQuery-Datasets verweisen. Das ist nützlich, wenn Sie die aktuellsten Daten aus BigQuery benötigen, ohne sie verschieben zu müssen.
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, siehe Datasets erstellen und Tabellen erstellen und verwenden.
Hinweis
- Aktivieren Sie das
bigquery_fdw.enabledFlag in der AlloyDB for PostgreSQL-Instanz. - Machen Sie sich mit den unterstützten Datentypen vertraut.
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Google Cloud-Kunde sind, erstellen Sie ein Konto, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. 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
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Aktivieren Sie die Cloud APIs, die zum Erstellen und Verbinden mit AlloyDB 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 Netzwerkkonnektivität zu AlloyDB mit einem VPC Netzwerk konfigurieren möchten, das sich in einem anderen Google Cloud Projekt befindet.
Erforderliche Rollen
Um dem Dienstkonto des AlloyDB-Clusters Leseberechtigung für das BigQuery-Dataset zu erteilen, benötigen Sie die folgenden Berechtigungen. Weitere Informationen finden Sie unter AlloyDB-Zugriff auf das BigQuery-Dataset gewähren.
- 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 erteilt wird, bietet sie Berechtigungen zum Lesen von Daten und Metadaten aus der Tabelle oder Ansicht. - BigQuery-Lesesitzungsnutzer
(
roles/bigquery.readSessionUser) oder eine 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 der Berechtigungbigquery.jobs.create. Bietet Berechtigungen zum Ausführen von Jobs, einschließlich Abfragen, im Projekt mit der BigQuery API. Diese Rolle kann nur für Resource Manager-Ressourcen (Projekte, Ordner und Organisationen) erteilt werden. Wenn Sie ein separates Laufzeitprojekt angeben, wird der Job in diesem Projekt und nicht im Datenprojekt ausgeführt. Das bedeutet, dass Sie die Rolle „Jobnutzer“ für das Laufzeitprojekt erteilen müssen.Storage-Objekt-Betrachter (
roles/storage.objectViewer) oder eine benutzerdefinierte Rolle mit der Berechtigungstorage.objects.get. Bietet Berechtigungen für den Zugriff auf externe BigQuery-Tabellen. Muss auf Projekt- oder Bucketebene erteilt werden.
AlloyDB-Zugriff auf das BigQuery-Dataset gewähren
Nachdem Sie die erforderlichen Rollen und Berechtigungen für die Lakehouse-Föderation aktiviert haben, müssen Sie dem Dienstkonto des AlloyDB-Clusters Zugriff auf das BigQuery-Dataset gewähren.
Die Google Cloud console erteilt dem Dienstkonto des Clusters automatisch die erforderlichen Berechtigungen, wenn Sie eine BigQuery-Tabelle mit 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 sie oder verwenden Sie Cloud Shell.
Führen Sie den
gcloud beta alloydb clusters describeBefehl aus: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 AlloyDB-Standorte.
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.Erteilen Sie die erforderlichen Berechtigungen. 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 Dreipunkt-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. In einem Dialogfeld wird der Fortschritt angezeigt. Nach Abschluss des Vorgangs können Sie die Tabelle wie jede andere Tabelle in AlloyDB abfragen.
psql
Erstellen Sie die Erweiterung.
- Stellen Sie mit dem 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 externe BigQuery-Dataset zu definieren.
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw OPTIONS (runtime_project 'RUNTIME_PROJECT_ID');Ersetzen Sie Folgendes:
BIGQUERY_SERVER_NAME: eindeutige Kennung für den externen Server. Definieren Sie diese einmal in einer bestimmten Datenbank. Sie könnenBIGQUERY_SERVER_NAMEdurch Ihren Servernamen ersetzen.RUNTIME_PROJECT_ID: optional. Die ID des Google Cloud Projekts, in dem die Abfrage verarbeitet wird und in dem Rechenkosten anfallen. Wenn Sie diese ID weglassen, werden die Abfragen dem Projekt in Rechnung gestellt, in dem die Daten gespeichert sind.
Erstellen Sie die Nutzerzuordnung, indem Sie den
CREATE USER MAPPINGBefehl ausführen, wodurch ein lokaler PostgreSQL-Nutzer zugeordnet wird, den Sie mit dem externen Server verbinden möchten.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 externen 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 externen Tabelle definieren. Die externe Tabelle kann alle oder eine Teilmenge der Spalten in der Quelltabelle in BigQuery haben.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', runtime_project 'RUNTIME_PROJECT_ID' );Ersetzen Sie Folgendes:
TABLENAME: der Name der externen Tabelle in der lokalen AlloyDB-Datenbank.COLUMNX_NAME: der AlloyDB-Spaltenname. 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 genau der Groß-/Kleinschreibung der BigQuery-Spalte entsprechen. Wenn der BigQuery Spaltenname Großbuchstaben enthält (z. B.employeeID), muss die AlloyDB-Kennung in doppelten Anführungszeichen stehen (z. B."employeeID"), um gemischte oder Großbuchstaben beizubehalten.DATA_TYPE: der Datentyp der Spalte. Wenn Sie denDATA_TYPEfür jede Spalte in Ihrer externen Tabelle definieren, prüfen Sie, ob es sich um einen kompatiblen PostgreSQL-Typ handelt. Weitere Informationen zur Konvertierung von BigQuery-Typen finden Sie unter Datentypzuordnungen.BIGQUERY_SERVER_NAME: eindeutige Kennung für den von Ihnen erstellten externen 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.RUNTIME_PROJECT_ID: optional. Die ID des Google Cloud Projekts, das für die Abfrageausführung in Rechnung gestellt wird. Wenn Sie diese Einstellung auf Tabellenebene festlegen, wird das auf Serverebene definierte Laufzeitprojekt überschrieben.
Nachdem die externe Tabelle erstellt wurde, können Sie sie genauso abfragen wie jede andere Tabelle in AlloyDB.
Datentypzuordnungen
In der folgenden Tabelle finden Sie Informationen zu Datentypzuordnungen zwischen BigQuery und AlloyDB. Weitere Informationen finden Sie unter Überlegungen zu Datentypen für föderierte Abfragen.
Die folgende Tabelle enthält die Datentypzuordnungen zwischen BigQuery und AlloyDB.
| Datentypen für BigQuery-Tabelle Daten | Empfohlene Datentypen für externe PostgreSQL-Tabellen data types |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Weitere Informationen finden Sie unter PostGIS_Geography. |
|
|
|
Weitere Informationen finden Sie unter |
Nächste Schritte
- Wählen Sie aus, wie Sie auf BigQuery-Daten zugreifen möchten.
- Übersicht über den Zugriff auf Echtzeitdaten.