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

Diagrama de replicação e compartilhamento de dados entre regiões e nuvens

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:

  1. 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.

  2. Crie um grupo de replicação e adicione bancos de dados e compartilhamentos.

  3. 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.

Diagrama de um exemplo básico de como compartilhar dados entre regiões

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;
Copy

Executar a partir da conta de destino

Da conta de destino na outra região, execute as seguintes instruções SQL.

  1. 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;
    
    Copy
  2. Atualize manualmente o grupo de replicação para replicar os bancos de dados e compartilhamentos para account_2:

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Adicione 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.

Diagrama de um exemplo avançado sobre como compartilhar dados entre regiões

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.

  1. 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';
    
    Copy
  2. Crie 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;
    
    Copy
  3. Crie 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;
    
    Copy
  4. Crie 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';
    
    Copy
  5. Inicie a tarefa para atualizar os dados:

    ALTER TASK mytask1 RESUME;
    
    Copy
  6. Crie 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;
    
    Copy
  7. Crie 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.

  1. 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;
    
    Copy
  2. Atualize manualmente o grupo para replicar objetos para a conta atual:

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Adicione 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;
Copy

Executar a partir da conta de destino

Execute os seguintes comandos SQL a partir da conta de destino na outra região.

  1. 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;
    
    Copy
  2. Atualize manualmente o grupo para replicar objetos para a conta atual:

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. Adicione 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.