Sicheres Data Sharing über Regionen und Cloudplattformen hinweg

Unter diesem Thema finden Sie eine Anleitung für die Verwendung der Datenbankreplikation, mit der Datenanbieter Daten sicher für Datenverbraucher in verschiedenen Regionen und auf verschiedenen Cloudplattformen freigeben können. Die Datenbankreplikation ist jetzt Teil der Kontoreplikation. Eine Anleitung zur Replikation von Freigaben mithilfe der Kontoreplikation finden Sie unter Replizieren von Freigaben über Regionen und Cloudplattformen hinweg.

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

  • Microsoft 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. Erstellen Sie eine ORGADMIN-Rolle in einem Ihrer Konten, und verknüpfen Sie die Konten für die Replikation. Weitere Informationen dazu finden Sie unter Erste Schritte mit Organisationen.

  2. Stufen Sie eine vorhandene Datenbank in Ihrem lokalen Konto als primär ein.

  3. Replizieren Sie Ihre vorhandene Datenbank in die andere Region.

Ausführliche Anweisungen finden Sie unter Replizieren von Datenbanken über mehrere Konten.

Schritt 2: Daten für Datenverbrauchern freigeben

Das Freigeben von Daten für Datenverbraucher in derselben Region umfasst die folgenden Aufgaben:

  1. Erstellen Sie eine Freigabe.

  2. Fügen Sie Objekte zur Freigabe hinzu.

  3. Fügen Sie mit ein oder mehrere Verbraucherkonten zur Freigabe hinzu.

Detaillierte Anweisungen finden Sie unter Erste Schritte für sichere Datenfreigaben.

Beispiel 1

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

Führen Sie die folgenden SQL-Befehle aus, um die Replikation einer Primärdatenbank zu aktivieren.

use role accountadmin;

-- Promote an existing database in your local account as primary
alter database PrimaryDB enable replication to accounts AZURE_EASTUS2.AcmeProviderAccount2;
Copy

Von Zielkonto ausführen

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

use role accountadmin;

-- Replicate the existing database to a secondary database in the other region
create database SecondaryDB
as replica of AWS_US_WEST_2.AcmeProviderAccount1.PrimaryDB;

-- Create a database for stored procedures
create database SecondaryDB_SP;
use database SecondaryDB_SP;

-- Schedule refresh of the secondary database

create task refresh_SecondaryDB_task
  warehouse = mywh
  schedule = '10 minute'
as
  alter database SecondaryDB refresh;

alter task refresh_SecondaryDB_task resume;

-- Refresh the secondary database now (as an alternative to the scheduled refresh)

alter database SecondaryDB refresh;

-- Create a share
create share share1;

-- Add objects to the share
grant usage on database SecondaryDB to share share1;
grant usage on schema SecondaryDB.sch to share share1;

grant select on view SecondaryDB.sch.view1 to share share1;

-- Add one or more consumer accounts to the share
alter share share1 add accounts=ConsumerAccount;
Copy

Beispiel 2

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 Tasks die gewünschten Zeilen aus der Hauptdatenbank in eine neue Datenbank kopiert und die neue Datenbank repliziert. In diesem Szenario wird die neue Datenbank als primäre Datenbank für die Datenreplikation festgelegt.

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.

use role accountadmin;

-- In your local account, create a database with a subset of data
create database PrimaryDB;
create schema PrimaryDB.sch;
create table PrimaryDB.sch.tableB as select CUSTOMERID, USER_ORDER_COUNT, TOTAL_SPENT, TAGS from SourceDB.sch.tableA where REGION='azure_eastus2';
create secure view PrimaryDB.sch.view1 as select CUSTOMERID, USER_ORDER_COUNT, TOTAL_SPENT, TAGS from PrimaryDB.sch.tableB;

-- Set up a stream to record changes made to the source table
create stream mystream on table SourceDB.sch.tableA append_only = true;

-- Set up a task to lift the changes from the source database and insert them to the PrimaryDB database
CREATE TASK mytask1
  WAREHOUSE = mywh
  SCHEDULE = '5 minute'
WHEN
  SYSTEM$STREAM_HAS_DATA('mystream')
AS
  INSERT INTO tableB(CUSTOMERID, USER_ORDER_COUNT, TOTAL_SPENT, TAGS) select CUSTOMERID, USER_ORDER_COUNT, TOTAL_SPENT, TAGS FROM mystream WHERE REGION='azure_eastus2' AND METADATA$ACTION = 'INSERT';

-- Promote the new database as primary
alter database PrimaryDB enable replication to accounts AZURE_EASTUS2.AcmeProviderAccount2;
Copy

Von Zielkonto ausführen

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

use role accountadmin;

-- Replicate the existing database to a secondary database in the other region
create database SecondaryDB
  as replica of AWS_US_WEST_2.AcmeProviderAccount1.PrimaryDB;

-- Schedule refresh of the secondary database

create task refresh_SecondaryDB_task
  warehouse = mywh
  schedule = '10 minute'
as
  alter database SecondaryDB refresh;

alter task refresh_SecondaryDB_task resume;

-- Create a share
create share share1;

-- Add objects to the share:
grant usage on database SecondaryDB to share share1;
grant usage on schema SecondaryDB.sch to share share1;

grant select on view SecondaryDB.sch.view1 to share share1;

-- Add one or more consumer accounts to the share
alter share share1 add accounts=ConsumerAccount;
Copy