Compartilhamento de dados de forma segura entre regiões e plataformas de nuvem¶
Este tópico fornece instruções sobre como usar a replicação de banco de dados para permitir que os provedores de dados compartilhem dados com segurança com consumidores de dados em diferentes regiões e plataformas de nuvem. A replicação do banco de dados agora faz parte da replicação de conta. Para obter instruções sobre replicação de compartilhamentos utilizando replicação de conta, consulte Replicação de compartilhamentos em regiões e plataformas de nuvem.
O compartilhamento de dados entre regiões é suportado por contas Snowflake hospedadas em qualquer uma das seguintes plataformas de nuvem:
Amazon Web Services (AWS)
Google Cloud Platform
Microsoft Azure
Importante
Atualmente, as funções do banco de dados não estão incluídas na replicação de um banco de dados primário. Como resultado, o compartilhamento de dados entre regiões não é suportado quando os objetos são concedidos a um compartilhamento via funções de banco de dados.
Se você replicar um banco de dados primário para contas em uma região geográfica ou país diferente daquele em que sua conta Snowflake de origem está localizada, deve confirmar que sua organização não tem nenhuma restrição legal ou regulamentar quanto ao local onde seus dados podem ser transferidos ou hospedados.
Neste tópico:
Considerações sobre o compartilhamento de dados¶
Como o compartilhamento de dados entre regiões utiliza a funcionalidade de replicação de dados do Snowflake, entenda como funciona a replicação de banco de dados no Snowflake como parte de seu processo de planejamento. Para obter mais informações, consulte:
Os provedores de dados só precisam criar uma cópia do conjunto de dados por região; e não uma cópia por consumidor.
Ao compartilhar uma exibição que faz referência a objetos em múltiplos bancos de dados (para instruções, consulte Compartilhamento de dados de vários bancos de dados), cada um desses outros bancos de dados deve ser replicado.
Os provedores de dados podem compartilhar dados com os consumidores em qualquer implantação pública multilocatário. Mas o compartilhamento de ou para Virtual Private Snowflake (VPS) atualmente não tem suporte.
Compartilhamento de dados com consumidores em uma região e plataforma de nuvem diferentes¶
Os provedores de dados do Snowflake podem compartilhar dados com consumidores de uma região diferente com algumas etapas simples.
Etapa 1: Configurar a replicação de dados¶
Nota
Antes de configurar a replicação de dados, você deve criar uma conta em uma região onde deseja compartilhar dados e vinculá-la à sua conta local. Para obter mais informações, consulte Gerenciamento de sua organização Snowflake.
A configuração da replicação de dados envolve as seguintes tarefas:
Crie uma função ORGADMIN em uma de suas contas e vincule as contas para replicação. Para obter mais informações, consulte Como começar com organizações.
Promova um banco de dados existente em sua conta local como primário.
Replique seu banco de dados existente para a outra região.
Para instruções detalhadas, consulte Replicação de bancos de dados em várias contas.
Exemplo 1¶
Um provedor de dados, Acme, quer compartilhar dados com consumidores em uma região diferente.
Executar a partir da conta de origem¶
Executar os seguintes comandos SQL para permitir a replicação de um banco de dados primário.
use role accountadmin;
-- Promote an existing database in your local account as primary
alter database PrimaryDB enable replication to accounts AZURE_EASTUS2.AcmeProviderAccount2;
Executar a partir da conta de destino¶
Execute os seguintes comandos SQL a partir da conta de destino na outra região.
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;
Exemplo 2¶
Um provedor de dados, Acme, quer compartilhar um subconjunto de dados com consumidores em uma região diferente. Para reduzir os custos de replicação, ele gostaria de replicar apenas as linhas relevantes de sua tabela mestre. Como a replicação é feita no nível do banco de dados, este exemplo descreve como a Acme pode aproveitar fluxos e tarefas para copiar as linhas desejadas do banco de dados primário para um novo banco de dados e replicar o novo banco de dados. Neste cenário, o novo banco de dados é designado como um banco de dados primário para replicação de dados.
Executar a partir da conta de origem¶
Use os seguintes comandos SQL para criar um novo banco de dados na conta de origem e permitir a replicação.
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;
Executar a partir da conta de destino¶
Execute os seguintes comandos SQL a partir da conta de destino na outra região.
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;