Partage sécurisé des données entre les régions et les plates-formes Cloud

Global Snowflake utilise la réplication de bases de données pour permettre aux fournisseurs de données de partager en toute sécurité des données avec des consommateurs de données de différentes régions et plates-formes Cloud. Le partage de données entre régions est pris en charge pour les comptes Snowflake hébergés sur AWS, Google Cloud Platform ou Microsoft Azure.

Important

Si vous répliquez une base de données vers une région géographique différente ou un pays différent de la région/du pays dans laquelle ou lequel se trouve votre compte Snowflake source, vous devez confirmer que votre entreprise n’est soumise à aucune restriction légale ou réglementaire en ce qui concerne l’emplacement où vos données peuvent être transférées ou hébergées.

Dans ce chapitre :

Considérations relatives au partage des données

Diagram of data replcation and sharing between regions and clouds

Partage de données avec des consommateurs de données dans une région et une plate-forme Cloud différentes

Les fournisseurs de données Snowflake peuvent partager des données avec des consommateurs de données d’une autre région en quelques étapes simples.

Étape 1 : Configurer la réplication de données

Note

Avant de configurer la réplication de données, vous devez créer un compte dans une région où vous souhaitez partager des données et le lier à votre compte local. Pour plus d’informations, voir /LIMITEDACCESS/organizations.

La configuration de la réplication des données implique les tâches suivantes :

  1. Créez un rôle ORGADMIN dans l’un de vos comptes et liez les comptes pour la réplication. Pour plus d’informations, voir /LIMITEDACCESS/organizations.

  2. Promouvoir une base de données existante dans votre compte local en tant que base de données principale.

  3. Répliquer votre base de données existante dans l’autre région.

Pour des instructions détaillées, voir Réplication de bases de données sur plusieurs comptes.

Étape 2. Partage des données avec des consommateurs de données

Le partage de données avec un consommateur de données dans la même région implique les tâches suivantes :

  1. Créer un partage.

  2. Ajouter des objets au partage.

  3. Ajouter un ou plusieurs comptes de consommateur au partage.

Pour des instructions détaillées, voir Premiers pas avec le partage de données sécurisé.

Exemple 1

Acme, un fournisseur de données, souhaite partager des données avec des consommateurs de données d’une autre région.

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

Exemple de code

use role accountadmin;

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

-- Replicate your existing database to another 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;

Exemple 2

Acme, un fournisseur de données, souhaite partager un sous-ensemble de données avec des consommateurs de données d’une autre région. Pour réduire les coûts de réplication, ils souhaitent uniquement répliquer les lignes pertinentes de leur table principale. La réplication étant effectuée au niveau de la base de données, cet exemple explique comment Acme peut exploiter les flux et les tâches pour copier les lignes souhaitées de la base de données principale vers une nouvelle base de données et répliquer la nouvelle base de données. Dans ce scénario, la nouvelle base de données est désignée comme base de données principale pour la réplication de données.

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

Exemple de code

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 USER_ID, 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 METADATA$ACTION = 'INSERT';

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

-- Replicate your existing database to another 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;