Partage sécurisé des données entre les régions et les plates-formes Cloud¶
Ce chapitre fournit des instructions sur l’utilisation de 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 à travers différentes régions et plates-formes Cloud. La réplication des bases de données fait désormais partie de la réplication des comptes. Pour obtenir des instructions sur la réplication de partages à l’aide de la réplication de comptes, voir Réplication des partages entre les régions et les plates-formes Cloud.
Le partage de données entre régions est pris en charge par les comptes Snowflake hébergés sur l’une des plateformes Cloud suivantes :
Amazon Web Services (AWS)
Google Cloud Platform
Microsoft Azure
Important
Actuellement, les rôles de bases de données ne sont pas inclus dans la réplication d’une base de données principale. Par conséquent, le partage de données inter-régional n’est pas pris en charge lorsque des objets sont accordés à un partage via des rôles de base de données.
Si vous répliquez une base de données primaire vers des comptes dans 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¶
Étant donné que le partage de données entre régions utilise la fonctionnalité de réplication de données Snowflake, comprenez comment fonctionne la réplication de bases de données dans Snowflake dans le cadre de votre processus de planification. Pour plus d’informations, voir :
Les fournisseurs de données n’ont besoin que de créer une copie de l’ensemble de données par région ; et non une copie par consommateur.
Lors du partage d’une vue faisant référence à des objets dans plusieurs bases de données (pour obtenir des instructions, voir Partage de données de plusieurs bases de données), chacune de ces autres bases de données doit être répliquée.
Les fournisseurs de données peuvent partager des données avec les consommateurs sur tout déploiement public à plusieurs clients. Cependant, le partage vers ou depuis Virtual Private Snowflake (VPS) n’est actuellement pas pris en charge.
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 Gestion des organisations et des comptes.
La configuration de la réplication des données implique les tâches suivantes :
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 Premiers pas avec les organisations.
Promouvoir une base de données existante dans votre compte local en tant que base de données principale.
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.
Exemple 1¶
Acme, un fournisseur de données, souhaite partager des données avec des consommateurs de données d’une autre région.
Exécuter à partir du compte source¶
Exécutez les commandes SQL suivantes pour activer la réplication d’une base de données principale.
use role accountadmin;
-- Promote an existing database in your local account as primary
alter database PrimaryDB enable replication to accounts AZURE_EASTUS2.AcmeProviderAccount2;
Exécuter à partir du compte cible¶
Exécutez les commandes SQL suivantes depuis le compte cible dans l’autre région.
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;
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.
Exécuter à partir du compte source¶
Utilisez les commandes SQL suivantes pour créer une nouvelle base de données dans le compte source et activer la réplication.
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;
Exécuter à partir du compte cible¶
Exécutez les commandes SQL suivantes depuis le compte cible dans l’autre région.
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;