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 para permitir que os provedores de dados compartilhem dados com segurança com consumidores de dados em diferentes regiões e plataformas de nuvem.
Nota
Se você compartilhar dados com outras contas usando listagens oferecidas a consumidores específicos ou no Snowflake Marketplace, poderá usar o preenchimento automático entre nuvens para enviar automaticamente seu produto de dados para outras regiões. O preenchimento automático não é compatível com listagens compartilhadas com uma troca de dados.
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 (GCP)
Microsoft Azure (Azure)
Importante
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 Data Sharing¶
Como o compartilhamento de dados entre regiões utiliza a funcionalidade de replicação de dados do Snowflake, entenda como funciona a replicação 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, cada um desses outros bancos de dados deve ser incluído no grupo de replicação. O compartilhamento de dados de mais de um banco de dados exige etapas adicionais. Para obter instruções, consulte Compartilhamento de dados a partir de diversos bancos de dados.
Você pode compartilhar conteúdo com um Virtual Private Snowflake (VPS) usando uma listagem se o cliente VPS tiver ativado o preenchimento automático. Consulte Suporte ao preenchimento automático no Virtual Private Snowflake para obter mais detalhes. O compartilhamento de e para VPS não é compatível com compartilhamento direto.
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 Como trabalhar com organizações e contas.
A configuração da replicação de dados envolve as seguintes tarefas:
Habilite a replicação para suas contas.
Um usuário com a função ORGADMIN deve ativar a replicação para a conta de origem que contém os dados a serem compartilhados e as contas de destino nas regiões onde você deseja compartilhar dados com os consumidores. Para obter instruções sobre como ativar a replicação, consulte Pré-requisito: Habilitar a replicação para contas na organização. Para obter mais informações sobre a função ORGADMIN, consulte Como começar com organizações.
Crie um grupo de replicação e adicione bancos de dados e compartilhamentos.
Replique o grupo com os bancos de dados e compartilhamentos para as regiões onde deseja compartilhar dados com os consumidores.
Etapa 2. Compartilhar dados com consumidores de dados¶
Compartilhar dados com consumidores de dados na mesma região envolve adicionar uma ou mais contas de consumidores aos compartilhamentos secundários que você replicou da conta de origem.
Para obter instruções detalhadas, consulte Como começar com Secure Data Sharing.
Exemplo 1: compartilhar dados¶
Um provedor de dados, Acme, quer compartilhar dados com consumidores em uma região diferente.
Executar a partir da conta de origem¶
Para criar um grupo de replicação que contenha os bancos de dados e os compartilhamentos para replicar em outra região, execute a instrução SQL a seguir.
Nota
Se você tiver habilitado anteriormente a replicação para um banco de dados individual, deverá desabilitar a replicação do banco de dados antes de adicioná-lo a um grupo de replicação. Para obter mais detalhes, consulte Transição da replicação de banco de dados para a replicação baseada em grupos.
Crie um grupo de replicação my_rg
que inclua o banco de dados db1
e compartilhamento share1
para replicar para a conta account_2
na organização acme
.
USE ROLE ACCOUNTADMIN;
CREATE REPLICATION GROUP my_rg
OBJECT_TYPES = databases, shares
ALLOWED_DATABASES = db1
ALLOWED_SHARES = share1
ALLOWED_ACCOUNTS = acme.account_2;
Executar a partir da conta de destino¶
Da conta de destino na outra região, execute as seguintes instruções SQL.
Crie um grupo secundário de replicação em
account_2
:USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme.account1.my_rg;
CopyAtualize manualmente o grupo de replicação para replicar os bancos de dados e compartilhamentos para
account_2
:ALTER REPLICATION GROUP my_rg REFRESH;
CopyAdicione uma ou mais contas de consumidor a
share1
:ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
Você pode automatizar operações de atualização definindo o parâmetro REPLICATION_SCHEDULE para o grupo de replicação primário usando o comando ALTER REPLICATION GROUP na conta de origem. Para obter mais informações, consulte Cronograma de replicação.
Exemplo 2: compartilhar um subconjunto de dados de um banco de dados¶
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 usar fluxos e tarefas para copiar as linhas desejadas do banco de dados principal para um novo banco de dados, criar um compartilhamento e conceder privilégios na exibição e replicar ambos em um grupo de replicação para uma conta em uma região diferente para acesso do consumidor. Neste cenário, o novo banco de dados e o compartilhamento são designados como objetos primários 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.
Nota
Se você tiver habilitado anteriormente a replicação para um banco de dados individual, deverá desabilitar a replicação do banco de dados antes de adicioná-lo a um grupo de replicação. Para obter mais detalhes, consulte Transição da replicação de banco de dados para a replicação baseada em grupos.
Na sua conta local, crie um banco de dados
db1
com um subconjunto de dados do banco de dados com os dados de origem: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';
CopyCrie uma exibição segura com os dados a serem compartilhados:
CREATE SECURE VIEW db1.sch.view1 AS SELECT customerid, user_order_count, total_spent FROM db1.sch.table_b;
CopyCrie um fluxo para registrar as alterações feitas na tabela de origem:
CREATE STREAM mystream ON TABLE source_db.sch.table_a APPEND_ONLY = TRUE;
CopyCrie uma tarefa para inserir dados na tabela em
db1
com alterações dos dados de origem: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';
CopyInicie a tarefa para atualizar os dados:
ALTER TASK mytask1 RESUME;
CopyCrie um compartilhamento e conceda privilégios ao compartilhamento:
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;
CopyCrie um grupo de replicação primário com o banco de dados e compartilhamento:
CREATE REPLICATION GROUP my_rg OBJECT_TYPES = DATABASES, SHARES ALLOWED_DATABASES = db1 ALLOWED_SHARES = share1 ALLOWED_ACCOUNTS = acme_org.account_2;
Copy
Executar a partir da conta de destino¶
Execute os seguintes comandos SQL a partir da conta de destino na outra região.
Crie um grupo de replicação secundário para replicar os bancos de dados e compartilhamentos da conta de origem:
USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme_org.account_1.my_rg;
CopyAtualize manualmente o grupo para replicar objetos para a conta atual:
ALTER REPLICATION GROUP my_rg REFRESH;
CopyAdicione uma ou mais contas de consumidor ao compartilhamento:
ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
Você pode automatizar operações de atualização definindo o parâmetro REPLICATION_SCHEDULE para o grupo de replicação primário usando o comando ALTER REPLICATION GROUP na conta de origem. Para obter mais informações, consulte Cronograma de replicação.
Exemplo 3: compartilhar dados de vários bancos de dados¶
Um provedor de dados, Acme, quer compartilhar dados de vários bancos de dados com consumidores de dados em uma região diferente. Eles criam uma exibição e compartilhamento seguros (para obter instruções, consulte Compartilhamento de dados a partir de diversos bancos de dados), depois replicam todos os bancos de dados e compartilham em um grupo de replicação para replicar dados para contas em outras regiões.
Executar a partir da conta de origem¶
Crie um grupo de replicação my_rg
que inclua os bancos de dados e compartilhamento de Exemplo 1: criar e compartilhar uma exibição segura em um banco de dados existente para replicar para account_2
na organização acme
:
CREATE REPLICATION GROUP my_rg
OBJECT_TYPES = databases, shares
ALLOWED_DATABASES = database1, database2, database3
ALLOWED_SHARES = share1
ALLOWED_ACCOUNTS = acme.account_2;
Executar a partir da conta de destino¶
Execute os seguintes comandos SQL a partir da conta de destino na outra região.
Crie um grupo de replicação secundário para replicar os bancos de dados e compartilhamentos da conta de origem:
USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme_org.account_1.my_rg;
CopyAtualize manualmente o grupo para replicar objetos para a conta atual:
ALTER REPLICATION GROUP my_rg REFRESH;
CopyAdicione uma ou mais contas de consumidor ao compartilhamento:
ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
Você pode automatizar operações de atualização definindo o parâmetro REPLICATION_SCHEDULE para o grupo de replicação primário usando o comando ALTER REPLICATION GROUP na conta de origem. Para obter mais informações, consulte Cronograma de replicação.