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

Diagram of data replication and sharing between regions and clouds

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:

  1. 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.

  2. Erstellen Sie eine Replikationsgruppe, und fügen Sie Datenbanken und Freigaben hinzu.

  3. 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.

Diagram of a basic example on how to share data between regions

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;
Copy

Von Zielkonto ausführen

Führen Sie die folgenden SQL-Anweisungen vom Zielkonto in der anderen Region aus.

  1. 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;
    
    Copy
  2. Aktualisieren Sie die Replikationsgruppe manuell, um die Datenbanken und Freigaben zu account_2 zu replizieren:

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Fü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.

Diagram of an advanced example on how to share data between regions

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.

  1. 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';
    
    Copy
  2. Erstellen 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;
    
    Copy
  3. Erstellen Sie einen Stream, um Änderungen an der Quelltabelle zu erfassen:

    CREATE STREAM mystream ON TABLE source_db.sch.table_a APPEND_ONLY = TRUE;
    
    Copy
  4. Erstellen 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';
    
    Copy
  5. Starten Sie die Aufgabe zum Aktualisieren der Daten:

    ALTER TASK mytask1 RESUME;
    
    Copy
  6. Erstellen 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;
    
    Copy
  7. Erstellen 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.

  1. 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;
    
    Copy
  2. Aktualisieren Sie die Gruppe manuell, um Objekte in das aktuelle Konto zu replizieren:

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Fü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;
Copy

Von Zielkonto ausführen

Führen Sie die folgenden SQL-Befehle vom Zielkonto in der anderen Region aus.

  1. 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;
    
    Copy
  2. Aktualisieren Sie die Gruppe manuell, um Objekte in das aktuelle Konto zu replizieren:

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Fü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.