Daten nach AlloyDB exportieren (Reverse ETL)
Mit einem Reverse-ETL-Workflow (Reverse Extract, Transform, and Load) von BigQuery zu AlloyDB for PostgreSQL können Sie Daten aus BigQuery in eine AlloyDB-Datenbank verschieben. Mit der Anweisung EXPORT DATA können Sie die Daten vor dem Export mit einer Abfrage verarbeiten oder filtern. Alternativ können Sie Ihre BigQuery-Tabelle mit AlloyDB synchronisieren, um die gesamte Tabelle zu kopieren oder zu spiegeln.
Hinweis
Erstellen Sie einen AlloyDB-Cluster und eine AlloyDB-Instanz mit einer Datenbank, einem Schema und einer Tabelle, um die exportierten Daten zu empfangen. Sie müssen das Zielschema und die Zieltabelle haben, bevor Sie den Exportjob ausführen.
Die AlloyDB-Zielinstanz muss eine
PRIMARY-Instanz im StatusREADYsein.Erstellen Sie eine BigQuery-Verbindung, um eine Verbindung zu Ihrer AlloyDB-Instanz herzustellen. Die Verbindung muss mit einem Nutzernamen und einem Passwort authentifiziert werden. Der in der Verbindung angegebene Datenbanknutzer muss die Berechtigung
INSERTfür die Zieltabelle undUSAGEfür das Zielschema haben.Wenn Sie diese Funktion verwenden möchten, müssen Sie eine BigQuery Enterprise- oder Enterprise Plus-Reservierung erstellen. Exporte nach AlloyDB werden nur für Reservierungen mit einer
QUERY-Zuweisung unterstützt.Erteilen Sie IAM-Rollen (Identity and Access Management), die Nutzern die erforderlichen Berechtigungen zum Ausführen der einzelnen Aufgaben in diesem Dokument geben.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Exportieren von BigQuery-Daten nach AlloyDB benötigen:
-
Daten aus einer BigQuery-Tabelle exportieren: BigQuery-Datenbetrachter (
roles/bigquery.dataViewer) -
Extraktionsjob ausführen:
BigQuery-Nutzer (
roles/bigquery.user) -
BigQuery-Verbindung verwenden: BigQuery Connection User (
roles/bigquery.connectionUser) -
Verbindung zu einer AlloyDB-Instanz herstellen:
AlloyDB-Client (
roles/alloydb.client) – das Dienstkonto für die Verbindung
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Beschränkungen
AlloyDB-Exporte unterstützen nur Batch-Exporte. Sie können keine kontinuierlichen Abfragen verwenden, um Daten nach AlloyDB zu exportieren.
In AlloyDB exportierte Daten werden ausschließlich als neue Zeilen hinzugefügt. Beim Export werden vorhandene Einträge in AlloyDB nicht geändert oder gelöscht. Wenn für die Zieltabelle keine
PRIMARY KEY- oderUNIQUE-Einschränkungen definiert sind, führt der mehrmalige Export derselben Daten zu doppelten Einträgen.Um die Datenintegrität zu gewährleisten, empfehlen wir,
PRIMARY KEY- oderUNIQUE-Einschränkungen für Ihre AlloyDB-Tabellen zu definieren. Bei Exportjobs werden keine „Upserts“ ausgeführt, bei denen ein vorhandener Eintrag aktualisiert wird, wenn ein eindeutiger übereinstimmender Schlüssel vorhanden ist. Wenn eine eingehende Zeile gegen einePRIMARY KEY- oderUNIQUE-Einschränkung verstößt, schlägt der gesamte Exportjob fehl.Wir raten davon ab, mehrere gleichzeitige
EXPORT DATA-Jobs für dieselbe AlloyDB-Tabelle auszuführen. Dies kann zu unvorhersehbarem Verhalten wie Datenverlust oder Jobfehlern führen. Wir empfehlen, darauf zu achten, dass jeweils nur ein Exportjob in eine bestimmte Tabelle schreibt.Es wird nur die Authentifizierung mit Nutzername und Passwort über eine BigQuery-Verbindung unterstützt.
Die BigQuery-Datentypen
ARRAY,BYTES,GEOGRAPHY,INTERVALundSTRUCTwerden nicht unterstützt.Wenn in der BigQuery-Anweisung
SELECTSpalten weggelassen werden, die in der AlloyDB-Zieltabelle vorhanden sind, müssen diese Spalten entwederNULL-Werte zulassen oder in AlloyDB definierte Standardwerte haben. Wenn sie eineNOT NULL-Einschränkung und keinen Standardwert haben, schlägt der Export fehl.Exporte nach AlloyDB werden nur für die BigQuery Enterprise- oder Enterprise Plus-Versionen unterstützt. Die BigQuery Standard-Edition und On-Demand-Computing werden nicht unterstützt. Weitere Informationen finden Sie unter Verwaltungsfunktionen.
Ein BigQuery-Job, z. B. ein Extraktionsjob in AlloyDB, hat eine maximale Dauer von 6 Stunden. Bei sehr großen Exporten empfehlen wir, den Export in mehrere kleinere Jobs aufzuteilen.
Überlegungen zum Standort
Für den Export von Daten nach AlloyDB gelten bestimmte Anforderungen hinsichtlich des Standorts Ihres BigQuery-Datasets und Ihrer AlloyDB-Instanz:
Exporte in dieselbe Region: Die AlloyDB-Zielinstanz muss sich in genau derselben Cloud de Confiance by S3NS Region wie das BigQuery-Dataset befinden. Ein Dataset in
us-east1kann beispielsweise nur in eine AlloyDB-Instanz inus-east1exportiert werden.Multiregionale Exporte:
- Datasets in der Multiregion
USkönnen nur in eine AlloyDB-Instanz in der Regionus-central1exportiert werden. - Datasets in der Multiregion
EUkönnen nur in eine AlloyDB-Instanz in der Regioneurope-west4exportiert werden.
- Datasets in der Multiregion
Andere regionenübergreifende Exporte als die zuvor genannten Kombinationen werden nicht unterstützt.
Exporte mit alloydb_options konfigurieren
Mit der Option alloydb_options können Sie das AlloyDB-Zielschema, die Tabelle und die maximale Anzahl von Verbindungen angeben. Die Konfiguration wird als JSON-String ausgedrückt. Nur der Parameter table ist erforderlich. Alle anderen Parameter sind optional.
Beim Konfigurieren des Exports müssen die Spalten in der SELECT-Anweisung Aliase haben, die mit den Namen der Spalten in der AlloyDB-Zieltabelle übereinstimmen.
EXPORT DATA WITH CONNECTION `PROJECT_ID.LOCATION.CONNECTION_ID` OPTIONS( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/instances/INSTANCE_ID", alloydb_options="""{ "schema": "SCHEMA_NAME", "table": "TABLE_NAME", "max_parallel_connections":MAX_CONNECTIONS}""" ) AS SELECT * FROM `mydataset.table1`;
Ersetzen Sie Folgendes:
PROJECT_ID: Der Name Ihres Projekts in Cloud de Confiance by S3NS .LOCATION: der Standort Ihrer Verbindung und Zielinstanz.CONNECTION_ID: Der Name Ihrer BigQuery-Verbindung.CLUSTER_ID: der Name Ihres AlloyDB-Clusters.INSTANCE_ID: Der Name Ihrer AlloyDB-Zielinstanz.SCHEMA_NAME(optional): Der Name des Zielschemas in AlloyDB. Wenn nicht angegeben, wird das für den Datenbanknutzer konfigurierte Standardschema verwendet.TABLE_NAME: der Name einer vorhandenen Zieltabelle in AlloyDB ohne das Schemapräfix.MAX_CONNECTIONS(optional): Die maximale Anzahl gleichzeitiger paralleler Verbindungen von BigQuery-Workern zur AlloyDB-Instanz. Durch die Begrenzung von Verbindungen kann eine Überlastung der Zielinstanz bei großen Exporten verhindert werden.
Daten exportieren
Mit der Anweisung EXPORT DATA können Sie Daten aus einer BigQuery-Tabelle in eine AlloyDB-Tabelle exportieren.
Im folgenden Beispiel werden ausgewählte Felder aus einer Tabelle mit dem Namen mydataset.table1 in eine AlloyDB-Tabelle mit dem Namen my_target_table exportiert:
EXPORT DATA WITH CONNECTION `myproject.us-central1.my-alloydb-conn` OPTIONS ( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/myproject/locations/us-central1/clusters/my-cluster/instances/my-instance", alloydb_options="""{ "schema": "public", "table": "my_target_table" }""" ) AS SELECT col1 AS id, col2 AS name, col3 AS value FROM `mydataset.table1`;
Tabelle für den Export synchronisieren
Für vollständige Tabellenkopien oder automatisches Spiegeln ohne SQL-basierte Transformationen können Sie Ihre BigQuery-Tabelle direkt mit AlloyDB synchronisieren. Mit der EXPORT DATA-Anweisung können Sie eine SELECT-Abfrage verwenden, um Daten vor dem Verschieben zu verarbeiten, mit einem Alias zu versehen oder zu filtern. Mit Tabellensynchronisierungen können Sie eine BigQuery-Tabelle eins zu eins migrieren.
Tabellensynchronisierungen sind in den folgenden Modi verfügbar:
- Einmaliger Import: Erstellt eine beschreibbare, unabhängige Kopie einer BigQuery-Tabelle in AlloyDB.
- Regelmäßige Synchronisierung (Spiegelung): Erstellt eine lokale Tabelle mit Lesezugriff in AlloyDB, die automatisch nach einem festgelegten Zeitplan aus BigQuery aktualisiert wird.
Weitere Informationen finden Sie unter BigQuery-Daten mit AlloyDB synchronisieren.
Preise
Wenn Sie Daten mit der Anweisung EXPORT DATA nach AlloyDB exportieren, werden Ihnen die Kosten gemäß den BigQuery-Kapazitätsrechenpreisen in Rechnung gestellt.
Nachdem die Daten exportiert wurden, wird das Speichern der Daten in AlloyDB in Rechnung gestellt. Weitere Informationen finden Sie unter AlloyDB for PostgreSQL – Preise.