리전 및 클라우드 플랫폼 전체에서 안전하게 데이터 공유하기

이 항목에서는 복제 를 사용하여 데이터 공급자가 다양한 리전클라우드 플랫폼 에 걸쳐 데이터를 데이터 컨슈머와 안전하게 공유할 수 있도록 하는 지침을 제공합니다.

참고

특정 컨슈머에게 제공되는 목록을 사용하거나 Snowflake Marketplace 에서 다른 계정과 데이터를 공유하는 경우 클라우드 간 자동 복제 를 사용하여 데이터 제품을 다른 리전으로 자동 복제할 수 있습니다. 데이터 교환으로 공유된 목록에는 자동 복제가 지원되지 않습니다.

리전 간 데이터 공유는 다음과 같은 클라우드 플랫폼에서 호스팅되는 Snowflake 계정에서 지원됩니다.

  • Amazon Web Services(AWS)

  • GCP(Google Cloud Platform)

  • Microsoft Azure(Azure)

중요

원본 Snowflake 계정이 있는 위치와 다른 지리적 리전 또는 국가의 계정으로 기본 데이터베이스를 복제하는 경우 조직에 데이터를 전송하거나 호스팅할 수 있는 위치에 대한 법적 또는 규제적 제한이 없는지 확인해야 합니다.

이 항목의 내용:

데이터 공유 고려 사항

Diagram of data replication and sharing between regions and clouds

다른 리전 및 클라우드 플랫폼의 데이터 컨슈머와 데이터 공유하기

Snowflake 데이터 공급자는 몇 가지 간단한 단계를 통해 다른 리전의 데이터 컨슈머와 데이터를 공유할 수 있습니다.

1단계: 데이터 복제 설정

참고

데이터 복제를 구성하기 전, 데이터를 공유할 리전에서 계정을 생성한 후 이를 로컬 계정에 연결해야 합니다. 자세한 내용은 조직 및 계정 작업하기 섹션을 참조하십시오.

데이터 복제 설정에 포함되는 작업은 다음과 같습니다.

  1. 계정에 대한 복제를 활성화합니다.

    ORGADMIN 역할을 가진 사용자는 공유할 데이터가 포함된 원본 계정과 컨슈머와 데이터를 공유하려는 리전의 대상 계정에 대해 복제를 활성화해야 합니다. 복제 활성화에 대한 지침은 전제 조건: 조직의 계정에 대한 복제 활성화 섹션을 참조하십시오. ORGADMIN 역할에 대한 자세한 내용은 조직 시작하기 섹션을 참조하십시오.

  2. 복제 그룹을 생성하고 데이터베이스 및 공유를 추가합니다.

  3. 데이터베이스 및 공유가 포함된 그룹을 컨슈머와 데이터를 공유하려는 리전에 복제합니다.

2단계. 데이터 컨슈머와 데이터 공유

동일한 리전의 데이터 컨슈머와 데이터를 공유하려면 원본 계정에서 복제한 보조 공유에 하나 이상의 컨슈머 계정을 추가해야 합니다.

자세한 지침은 Secure Data Sharing 시작하기 를 참조하십시오.

예 1: 데이터 공유하기

데이터 공급자인 Acme는 다른 리전의 데이터 컨슈머와 데이터를 공유하려고 합니다.

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

원본 계정에서 실행하기

다른 리전으로 복제할 데이터베이스와 공유가 포함된 복제 그룹을 생성하려면 다음 SQL 문을 실행하십시오.

참고

이전에 개별 데이터베이스에 대해 복제를 활성화한 경우 데이터베이스에 대한 데이터베이스 복제를 비활성화한 후에 복제 그룹에 추가해야 합니다. 자세한 내용은 데이터베이스 복제에서 그룹 기반 복제로 전환하기 섹션을 참조하십시오.

데이터베이스 db1 을 포함하는 복제 그룹 my_rg 를 생성하고 share1 을 공유하여 acme 조직의 계정 account_2 에 복제합니다.

USE ROLE ACCOUNTADMIN;

CREATE REPLICATION GROUP my_rg
  OBJECT_TYPES = databases, shares
  ALLOWED_DATABASES = db1
  ALLOWED_SHARES = share1
  ALLOWED_ACCOUNTS = acme.account_2;
Copy

대상 계정에서 실행하기

다른 리전의 대상 계정에서 다음 SQL 문을 실행합니다.

  1. account_2 에 보조 복제 그룹을 생성합니다.

    USE ROLE ACCOUNTADMIN;
    
    CREATE REPLICATION GROUP my_rg
      AS REPLICA OF acme.account1.my_rg;
    
    Copy
  2. 데이터베이스와 공유를 account_2 에 복제하려면 복제 그룹을 수동으로 새로 고치십시오.

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. 1개 이상의 컨슈머 계정을 share1 에 추가합니다.

    ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
    
    Copy

원본 계정에서 ALTER REPLICATION GROUP 명령을 사용하여 기본 복제 그룹에 대한 REPLICATION_SCHEDULE 매개 변수를 설정하면 새로 고침 작업을 자동화할 수 있습니다. 자세한 내용은 복제 일정 섹션을 참조하십시오.

예 2: 데이터베이스의 데이터 서브세트 공유하기

데이터 공급자인 Acme는 다른 리전의 데이터 컨슈머와 데이터의 하위 세트를 공유하려고 합니다. 복제 비용을 줄이기 위해 Acme는 마스터 테이블에서 관련 행만 복제하려고 합니다. 복제는 데이터베이스 수준에서 수행되므로 이 예에서는 Acme가 스트림과 작업을 사용하여 주 데이터베이스에서 새 데이터베이스로 원하는 행을 복사하고, 공유를 생성하고 뷰에 대한 권한을 부여하고, 컨슈머 액세스를 위해 복제 그룹에서 두 가지를 모두 다른 리전의 계정으로 복제하는 방법을 설명합니다. 이 시나리오에서는 새 데이터베이스와 공유가 데이터 복제의 기본 오브젝트로 지정됩니다.

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

원본 계정에서 실행하기

다음 SQL 명령을 사용하여 원본 계정에 새 데이터베이스를 만들고 복제를 활성화합니다.

참고

이전에 개별 데이터베이스에 대해 복제를 활성화한 경우 데이터베이스에 대한 데이터베이스 복제를 비활성화한 후에 복제 그룹에 추가해야 합니다. 자세한 내용은 데이터베이스 복제에서 그룹 기반 복제로 전환하기 섹션을 참조하십시오.

  1. 로컬 계정에서 원본 데이터가 포함된 데이터베이스의 데이터 서브세트로 데이터베이스 db1 을 만듭니다.

    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. 공유할 데이터로 보안 뷰를 만듭니다.

    CREATE SECURE VIEW db1.sch.view1 AS
      SELECT customerid, user_order_count, total_spent
      FROM db1.sch.table_b;
    
    Copy
  3. 원본 테이블에 대한 변경 사항을 기록하는 스트림을 만듭니다.

    CREATE STREAM mystream ON TABLE source_db.sch.table_a APPEND_ONLY = TRUE;
    
    Copy
  4. 원본 데이터의 변경 사항을 사용하여 db1 의 테이블에 데이터를 삽입하는 작업을 만듭니다.

    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. 데이터 업데이트 작업을 시작합니다.

    ALTER TASK mytask1 RESUME;
    
    Copy
  6. 공유를 만들고 공유에 대한 권한을 부여합니다.

    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. 데이터베이스와 공유를 포함한 기본 복제 그룹을 만듭니다.

    CREATE REPLICATION GROUP my_rg
      OBJECT_TYPES = DATABASES, SHARES
      ALLOWED_DATABASES = db1
      ALLOWED_SHARES = share1
      ALLOWED_ACCOUNTS = acme_org.account_2;
    
    Copy

대상 계정에서 실행하기

다른 리전의 대상 계정에서 다음 SQL 명령을 실행합니다.

  1. 원본 계정에서 데이터베이스와 공유를 복제하기 위한 보조 복제 그룹을 만듭니다.

    USE ROLE ACCOUNTADMIN;
    
    CREATE REPLICATION GROUP my_rg
      AS REPLICA OF acme_org.account_1.my_rg;
    
    Copy
  2. 그룹을 수동으로 새로 고쳐 오브젝트를 현재 계정에 복제합니다.

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. 하나 이상의 컨슈머 계정을 공유에 추가합니다.

    ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
    
    Copy

원본 계정에서 ALTER REPLICATION GROUP 명령을 사용하여 기본 복제 그룹에 대한 REPLICATION_SCHEDULE 매개 변수를 설정하면 새로 고침 작업을 자동화할 수 있습니다. 자세한 내용은 복제 일정 섹션을 참조하십시오.

예 3: 여러 데이터베이스의 데이터 공유하기

데이터 공급자인 Acme는 다른 리전의 데이터 컨슈머와 여러 데이터베이스의 데이터를 공유하려고 합니다. 보안 뷰와 공유를 만든 다음(지침은 여러 데이터베이스에서 데이터 공유하기 참조), 모든 데이터베이스를 복제하고 데이터를 다른 리전의 계정에 복제하도록 복제 그룹에 공유합니다.

원본 계정에서 실행하기

데이터베이스를 포함하는 복제 그룹 my_rg 를 생성하고 예 1: 기존 데이터베이스에서 보안 뷰 생성 및 공유 에서 공유하여 acme 조직의 account_2 에 복제합니다.

CREATE REPLICATION GROUP my_rg
  OBJECT_TYPES = databases, shares
  ALLOWED_DATABASES = database1, database2, database3
  ALLOWED_SHARES = share1
  ALLOWED_ACCOUNTS = acme.account_2;
Copy

대상 계정에서 실행하기

다른 리전의 대상 계정에서 다음 SQL 명령을 실행합니다.

  1. 원본 계정에서 데이터베이스와 공유를 복제하기 위한 보조 복제 그룹을 만듭니다.

    USE ROLE ACCOUNTADMIN;
    
    CREATE REPLICATION GROUP my_rg
      AS REPLICA OF acme_org.account_1.my_rg;
    
    Copy
  2. 그룹을 수동으로 새로 고쳐 오브젝트를 현재 계정에 복제합니다.

    ALTER REPLICATION GROUP my_rg REFRESH;
    
    Copy
  3. 하나 이상의 컨슈머 계정을 공유에 추가합니다.

    ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
    
    Copy

원본 계정에서 ALTER REPLICATION GROUP 명령을 사용하여 기본 복제 그룹에 대한 REPLICATION_SCHEDULE 매개 변수를 설정하면 새로 고침 작업을 자동화할 수 있습니다. 자세한 내용은 복제 일정 섹션을 참조하십시오.