Sicheres Data Sharing über Regionen und Cloudplattformen hinweg¶
Unter diesem Thema finden Sie eine Anleitung für die Verwendung der Replikation, mit der Datenanbieter Daten sicher für Datenverbraucher in verschiedenen Regionen und auf verschiedenen Cloudplattformen freigeben können.
Bemerkung
Wenn Sie Daten für andere Konten freigeben, indem Sie Freigabeangebote für bestimmte Verbraucher oder auf Snowflake Marketplace bereitstellen, können Sie die Cloud-übergreifende automatische Ausführung verwenden, um Ihr Datenprodukt automatisch in anderen Regionen bereitzustellen. Die automatische Auftragsausführung wird für Angebote, die über eine Datenbörse freigegeben werden, nicht unterstützt.
Das regionsübergreifende Data Sharing wird bei Snowflake-Konten unterstützt, die auf einer der folgenden Cloudplattformen gehostet werden:
Amazon Web Services (AWS)
Google Cloud Platform (GCP)
Microsoft Azure (Azure)
Wichtig
Wenn Sie eine Primärdatenbank in Konten in einer geografische Region oder in einem Land replizieren, die/das sich von der Region/dem Land unterscheidet, in der/dem sich Ihr Snowflake-Quellkonto befindet, müssen Sie sicherstellen, dass Ihre Organisation keinen rechtlichen oder behördlichen Einschränkungen hinsichtlich des Speicherorts Ihrer Daten unterliegt.
Unter diesem Thema:
Hinweise zum Data Sharing¶
Da das regionsübergreifende Data Sharing die Snowflake-Datenreplikationsfunktion verwendet, müssen Sie verstehen, wie die Replikation in Snowflake als Teil Ihres Planungsprozesses funktioniert. Weitere Informationen dazu finden Sie unter:
Datenanbieter müssen nur eine Kopie des Datensatzes pro Region erstellen und keine Kopie pro Verbraucher.
Wenn Sie eine Ansicht freigeben, die auf Objekte in mehreren Datenbanken verweist, muss jede dieser anderen Datenbanken in der Replikationsgruppe enthalten sein. Das Freigeben von Daten aus mehr als einer Datenbank erfordert zusätzliche Schritte. Eine Anleitung dazu finden Sie unter Freigeben von Daten aus mehreren Datenbanken.
Sie können Inhalte mittels eines Freigabeangebots an ein Virtual Private Snowflake (VPS)-Konto weitergeben, wenn der VPS-Kunde die automatische Auftragsausführung aktiviert hat. Weitere Informationen dazu finden Sie unter Unterstützung der automatischen Auftragsausführung in Virtual Private Snowflake. Die Freigabe von und für VPS wird nicht unterstützt, wenn Sie eine direkte Freigabe verwenden.
Daten für Datenverbraucher in einer anderen Region und auf einer anderen Cloudplattform freigeben¶
Snowflake-Datenanbieter können in wenigen einfachen Schritten Daten mit Datenverbrauchern einer anderen Region austauschen.
Schritt 1: Datenreplikation einrichten¶
Bemerkung
Bevor Sie die Datenreplikation konfigurieren, müssen Sie ein Konto in einer Region erstellen, in der Sie Daten freigeben möchten, und es mit Ihrem lokalen Konto verknüpfen. Weitere Informationen dazu finden Sie unter Verwenden von Organisationen und Konten.
Das Einrichten der Datenreplikation umfasst die folgenden Aufgaben:
Aktivieren Sie die Replikation für Ihre Konten.
Ein Benutzer mit der Rolle ORGADMIN muss die Replikation für das Quellkonto, das die freizugebenden Daten enthält, und für die Zielkonten in den Regionen, in denen Sie Daten für Verbraucher freigeben möchten, aktivieren. Eine Anleitung zum Aktivieren der Replikation finden Sie unter Voraussetzung: Aktivieren Sie die Replikation für Konten der Organisation. Weitere Informationen zur Rolle ORGADMIN finden Sie unter Erste Schritte mit Organisationen.
Erstellen Sie eine Replikationsgruppe, und fügen Sie Datenbanken und Freigaben hinzu.
Replizieren Sie die Gruppe mit den Datenbanken und Freigaben in die Regionen, in denen Sie Daten für Verbraucher freigeben möchten.
Schritt 2: Daten für Datenverbrauchern freigeben¶
Das Freigeben von Daten für Datenverbraucher in derselben Region erfordert das Hinzufügen eines oder mehrerer Verbraucherkonten zu den sekundären Freigaben, die Sie vom Quellkonto repliziert haben.
Detaillierte Anweisungen finden Sie unter Erste Schritte für sichere Datenfreigaben.
Beispiel 1: Daten freigeben¶
Ein Datenanbieter, Acme, möchte Daten mit Datenverbrauchern in einer anderen Region teilen.
Von Quellkonto ausführen¶
Um eine Replikationsgruppe zu erstellen, die die Datenbanken und Freigaben für die Replikation in eine andere Region enthält, führen Sie die folgende SQL-Anweisung aus.
Bemerkung
Wenn Sie zuvor die Replikation für eine einzelne Datenbank aktiviert haben, müssen Sie die Datenbankreplikation für diese Datenbank deaktivieren, bevor Sie sie zu einer Replikationsgruppe hinzufügen. Weitere Details dazu finden Sie unter Umstellen von Datenbankreplikation auf gruppenbasierte Replikation.
Erstellen Sie eine Replikationsgruppe my_rg
, die die Datenbank db1
und die Freigabe share1
für die Replikation in das Konto account_2
der Organisation acme
enthält.
USE ROLE ACCOUNTADMIN;
CREATE REPLICATION GROUP my_rg
OBJECT_TYPES = databases, shares
ALLOWED_DATABASES = db1
ALLOWED_SHARES = share1
ALLOWED_ACCOUNTS = acme.account_2;
Von Zielkonto ausführen¶
Führen Sie die folgenden SQL-Anweisungen vom Zielkonto in der anderen Region aus.
Erstellen Sie dann in
account_2
eine sekundäre Replikationsgruppe:USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme.account1.my_rg;
CopyAktualisieren Sie die Replikationsgruppe manuell, um die Datenbanken und Freigaben zu
account_2
zu replizieren:ALTER REPLICATION GROUP my_rg REFRESH;
CopyFügen Sie ein oder mehrere Verbraucherkonten zu
share1
hinzu:ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
Sie können Aktualisierungsvorgänge automatisieren, indem Sie den Parameter REPLICATION_SCHEDULE für die primäre Replikationsgruppe mit dem Befehl ALTER REPLICATION GROUP im Quellkonto festlegen. Weitere Informationen dazu finden Sie unter Replikationsplan.
Beispiel 2: Teilmenge von Daten aus einer Datenbank freigeben¶
Ein Datenanbieter, Acme, möchte eine Teilmenge von Daten mit Datenverbrauchern in einer anderen Region teilen. Um die Replikationskosten zu senken, sollen nur die relevanten Zeilen aus der Mastertabelle repliziert werden. Da die Replikation auf Datenbankebene erfolgt, wird in diesem Beispiel beschrieben, wie Acme mithilfe von Streams und Aufgaben die gewünschten Zeilen aus der Hauptdatenbank in eine neue Datenbank kopiert, für die Ansicht eine Freigabe erstellt und Berechtigungen erteilt und dann beides in einer Replikationsgruppe in ein Konto in einer anderen Region für den Verbraucherzugriff repliziert. In diesem Szenario werden die neue Datenbank und die Freigabe als primäre Objekte für die Datenreplikation bezeichnet.
Von Quellkonto ausführen¶
Verwenden Sie die folgenden SQL-Befehle, um eine neue Datenbank im Quellkonto zu erstellen und die Replikation zu aktivieren.
Bemerkung
Wenn Sie zuvor die Replikation für eine einzelne Datenbank aktiviert haben, müssen Sie die Datenbankreplikation für diese Datenbank deaktivieren, bevor Sie sie zu einer Replikationsgruppe hinzufügen. Weitere Details dazu finden Sie unter Umstellen von Datenbankreplikation auf gruppenbasierte Replikation.
Erstellen Sie in Ihrem lokalen Konto eine Datenbank
db1
mit einer Teilmenge von Daten aus der Datenbank mit den Quelldaten:USE ROLE ACCOUNTADMIN; CREATE DATABASE db1; CREATE SCHEMA db1.sch; CREATE TABLE db1.sch.table_b AS SELECT customerid, user_order_count, total_spent FROM source_db.sch.table_a WHERE REGION='azure_eastus2';
CopyErstellen Sie eine sichere Ansicht mit den freizugebenden Daten:
CREATE SECURE VIEW db1.sch.view1 AS SELECT customerid, user_order_count, total_spent FROM db1.sch.table_b;
CopyErstellen Sie einen Stream, um Änderungen an der Quelltabelle zu erfassen:
CREATE STREAM mystream ON TABLE source_db.sch.table_a APPEND_ONLY = TRUE;
CopyErstellen Sie eine Aufgabe zum Einfügen von Daten in die Tabelle in
db1
mit Änderungen aus den Quelldaten:CREATE TASK mytask1 WAREHOUSE = mywh SCHEDULE = '5 minute' WHEN SYSTEM$STREAM_HAS_DATA('mystream') AS INSERT INTO table_b(CUSTOMERID, USER_ORDER_COUNT, TOTAL_SPENT) SELECT customerid, user_order_count, total_spent FROM mystream WHERE region='azure_eastus2' AND METADATA$ACTION = 'INSERT';
CopyStarten Sie die Aufgabe zum Aktualisieren der Daten:
ALTER TASK mytask1 RESUME;
CopyErstellen Sie eine Freigabe, und erteilen Sie der Freigabe die erforderlichen Berechtigungen:
CREATE SHARE share1; GRANT USAGE ON DATABASE db1 TO SHARE share1; GRANT USAGE ON SCHEMA db1.sch TO SHARE share1; GRANT SELECT ON VIEW db1.sch.view1 TO SHARE share1;
CopyErstellen Sie eine primäre Replikationsgruppe mit der Datenbank und der Freigabe:
CREATE REPLICATION GROUP my_rg OBJECT_TYPES = DATABASES, SHARES ALLOWED_DATABASES = db1 ALLOWED_SHARES = share1 ALLOWED_ACCOUNTS = acme_org.account_2;
Copy
Von Zielkonto ausführen¶
Führen Sie die folgenden SQL-Befehle vom Zielkonto in der anderen Region aus.
Erstellen Sie eine sekundäre Replikationsgruppe, um die Datenbanken und Freigaben des Quellkontos zu replizieren:
USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme_org.account_1.my_rg;
CopyAktualisieren Sie die Gruppe manuell, um Objekte in das aktuelle Konto zu replizieren:
ALTER REPLICATION GROUP my_rg REFRESH;
CopyFügen Sie mit ein oder mehrere Verbraucherkonten zur Freigabe hinzu:
ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
Sie können Aktualisierungsvorgänge automatisieren, indem Sie den Parameter REPLICATION_SCHEDULE für die primäre Replikationsgruppe mit dem Befehl ALTER REPLICATION GROUP im Quellkonto festlegen. Weitere Informationen dazu finden Sie unter Replikationsplan.
Beispiel 3: Daten aus mehreren Datenbanken freigeben¶
Ein Datenanbieter, Acme, möchte Daten aus mehreren Datenbanken für Datenverbraucher in einer anderen Region freigeben. Sie erstellen eine sichere Ansicht und eine Freigabe (eine Anleitung dazu finden Sie unter Freigeben von Daten aus mehreren Datenbanken) und replizieren dann alle Datenbanken und Freigaben einer Replikationsgruppe, um Daten zu Konten in anderen Regionen zu replizieren.
Von Quellkonto ausführen¶
Erstellen Sie eine Replikationsgruppe my_rg
, die die Datenbanken und die Freigabe von Beispiel 1: Sichere Ansicht in einer bestehenden Datenbank erstellen und freigeben für die Replikation nach account_2
der Organisation acme
enthält:
CREATE REPLICATION GROUP my_rg
OBJECT_TYPES = databases, shares
ALLOWED_DATABASES = database1, database2, database3
ALLOWED_SHARES = share1
ALLOWED_ACCOUNTS = acme.account_2;
Von Zielkonto ausführen¶
Führen Sie die folgenden SQL-Befehle vom Zielkonto in der anderen Region aus.
Erstellen Sie eine sekundäre Replikationsgruppe, um die Datenbanken und Freigaben des Quellkontos zu replizieren:
USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme_org.account_1.my_rg;
CopyAktualisieren Sie die Gruppe manuell, um Objekte in das aktuelle Konto zu replizieren:
ALTER REPLICATION GROUP my_rg REFRESH;
CopyFügen Sie mit ein oder mehrere Verbraucherkonten zur Freigabe hinzu:
ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
Sie können Aktualisierungsvorgänge automatisieren, indem Sie den Parameter REPLICATION_SCHEDULE für die primäre Replikationsgruppe mit dem Befehl ALTER REPLICATION GROUP im Quellkonto festlegen. Weitere Informationen dazu finden Sie unter Replikationsplan.