리전 및 클라우드 플랫폼 전체에서 안전하게 데이터 공유하기¶
이 항목에서는 복제 를 사용하여 데이터 공급자가 다양한 리전 및 클라우드 플랫폼 에 걸쳐 데이터를 데이터 컨슈머와 안전하게 공유할 수 있도록 하는 지침을 제공합니다.
참고
특정 컨슈머에게 제공되는 목록을 사용하거나 Snowflake Marketplace 에서 다른 계정과 데이터를 공유하는 경우 클라우드 간 자동 복제 를 사용하여 데이터 제품을 다른 리전으로 자동 복제할 수 있습니다. 데이터 교환으로 공유된 목록에는 자동 복제가 지원되지 않습니다.
리전 간 데이터 공유는 다음과 같은 클라우드 플랫폼에서 호스팅되는 Snowflake 계정에서 지원됩니다.
Amazon Web Services(AWS)
GCP(Google Cloud Platform)
Microsoft Azure(Azure)
중요
원본 Snowflake 계정이 있는 위치와 다른 지리적 리전 또는 국가의 계정으로 기본 데이터베이스를 복제하는 경우 조직에 데이터를 전송하거나 호스팅할 수 있는 위치에 대한 법적 또는 규제적 제한이 없는지 확인해야 합니다.
이 항목의 내용:
데이터 공유 고려 사항¶
리전 간 데이터 공유에서는 Snowflake 데이터 복제 기능을 사용하므로 계획 프로세스의 일부로 Snowflake에서 복제가 작동하는 방식을 이해해야 합니다. 자세한 내용은 다음을 참조하십시오.
데이터 공급자는 컨슈머당 복사본이 아닌 리전당 데이터 세트의 복사본을 1개만 생성하면 됩니다.
여러 데이터베이스의 오브젝트를 참조하는 뷰를 공유하는 경우, 이러한 다른 데이터베이스 각각을 복제 그룹에 포함해야 합니다. 둘 이상의 데이터베이스에서 데이터를 공유하려면 추가 단계가 필요합니다. 자세한 지침은 여러 데이터베이스에서 데이터 공유하기 섹션을 참조하십시오.
VPS 고객이 자동 복제를 활성화한 경우 목록 을 사용하여 Virtual Private Snowflake(VPS) 에 콘텐츠를 공유할 수 있습니다. 자세한 내용은 Virtual Private Snowflake에서의 자동 복제 지원 을 참조하십시오. 직접 공유를 사용하면 VPS와의 공유가 지원되지 않습니다.
다른 리전 및 클라우드 플랫폼의 데이터 컨슈머와 데이터 공유하기¶
Snowflake 데이터 공급자는 몇 가지 간단한 단계를 통해 다른 리전의 데이터 컨슈머와 데이터를 공유할 수 있습니다.
1단계: 데이터 복제 설정¶
참고
데이터 복제를 구성하기 전, 데이터를 공유할 리전에서 계정을 생성한 후 이를 로컬 계정에 연결해야 합니다. 자세한 내용은 조직 및 계정 작업하기 섹션을 참조하십시오.
데이터 복제 설정에 포함되는 작업은 다음과 같습니다.
계정에 대한 복제를 활성화합니다.
ORGADMIN 역할을 가진 사용자는 공유할 데이터가 포함된 원본 계정과 컨슈머와 데이터를 공유하려는 리전의 대상 계정에 대해 복제를 활성화해야 합니다. 복제 활성화에 대한 지침은 전제 조건: 조직의 계정에 대한 복제 활성화 섹션을 참조하십시오. ORGADMIN 역할에 대한 자세한 내용은 조직 시작하기 섹션을 참조하십시오.
복제 그룹을 생성하고 데이터베이스 및 공유를 추가합니다.
데이터베이스 및 공유가 포함된 그룹을 컨슈머와 데이터를 공유하려는 리전에 복제합니다.
2단계. 데이터 컨슈머와 데이터 공유¶
동일한 리전의 데이터 컨슈머와 데이터를 공유하려면 원본 계정에서 복제한 보조 공유에 하나 이상의 컨슈머 계정을 추가해야 합니다.
자세한 지침은 Secure Data Sharing 시작하기 를 참조하십시오.
예 1: 데이터 공유하기¶
데이터 공급자인 Acme는 다른 리전의 데이터 컨슈머와 데이터를 공유하려고 합니다.
원본 계정에서 실행하기¶
다른 리전으로 복제할 데이터베이스와 공유가 포함된 복제 그룹을 생성하려면 다음 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;
대상 계정에서 실행하기¶
다른 리전의 대상 계정에서 다음 SQL 문을 실행합니다.
account_2
에 보조 복제 그룹을 생성합니다.USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme.account1.my_rg;
Copy데이터베이스와 공유를
account_2
에 복제하려면 복제 그룹을 수동으로 새로 고치십시오.ALTER REPLICATION GROUP my_rg REFRESH;
Copy1개 이상의 컨슈머 계정을
share1
에 추가합니다.ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
원본 계정에서 ALTER REPLICATION GROUP 명령을 사용하여 기본 복제 그룹에 대한 REPLICATION_SCHEDULE 매개 변수를 설정하면 새로 고침 작업을 자동화할 수 있습니다. 자세한 내용은 복제 일정 섹션을 참조하십시오.
예 2: 데이터베이스의 데이터 서브세트 공유하기¶
데이터 공급자인 Acme는 다른 리전의 데이터 컨슈머와 데이터의 하위 세트를 공유하려고 합니다. 복제 비용을 줄이기 위해 Acme는 마스터 테이블에서 관련 행만 복제하려고 합니다. 복제는 데이터베이스 수준에서 수행되므로 이 예에서는 Acme가 스트림과 작업을 사용하여 주 데이터베이스에서 새 데이터베이스로 원하는 행을 복사하고, 공유를 생성하고 뷰에 대한 권한을 부여하고, 컨슈머 액세스를 위해 복제 그룹에서 두 가지를 모두 다른 리전의 계정으로 복제하는 방법을 설명합니다. 이 시나리오에서는 새 데이터베이스와 공유가 데이터 복제의 기본 오브젝트로 지정됩니다.
원본 계정에서 실행하기¶
다음 SQL 명령을 사용하여 원본 계정에 새 데이터베이스를 만들고 복제를 활성화합니다.
참고
이전에 개별 데이터베이스에 대해 복제를 활성화한 경우 데이터베이스에 대한 데이터베이스 복제를 비활성화한 후에 복제 그룹에 추가해야 합니다. 자세한 내용은 데이터베이스 복제에서 그룹 기반 복제로 전환하기 섹션을 참조하십시오.
로컬 계정에서 원본 데이터가 포함된 데이터베이스의 데이터 서브세트로 데이터베이스
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공유할 데이터로 보안 뷰를 만듭니다.
CREATE SECURE VIEW db1.sch.view1 AS SELECT customerid, user_order_count, total_spent FROM db1.sch.table_b;
Copy원본 테이블에 대한 변경 사항을 기록하는 스트림을 만듭니다.
CREATE STREAM mystream ON TABLE source_db.sch.table_a APPEND_ONLY = TRUE;
Copy원본 데이터의 변경 사항을 사용하여
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데이터 업데이트 작업을 시작합니다.
ALTER TASK mytask1 RESUME;
Copy공유를 만들고 공유에 대한 권한을 부여합니다.
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데이터베이스와 공유를 포함한 기본 복제 그룹을 만듭니다.
CREATE REPLICATION GROUP my_rg OBJECT_TYPES = DATABASES, SHARES ALLOWED_DATABASES = db1 ALLOWED_SHARES = share1 ALLOWED_ACCOUNTS = acme_org.account_2;
Copy
대상 계정에서 실행하기¶
다른 리전의 대상 계정에서 다음 SQL 명령을 실행합니다.
원본 계정에서 데이터베이스와 공유를 복제하기 위한 보조 복제 그룹을 만듭니다.
USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme_org.account_1.my_rg;
Copy그룹을 수동으로 새로 고쳐 오브젝트를 현재 계정에 복제합니다.
ALTER REPLICATION GROUP my_rg REFRESH;
Copy하나 이상의 컨슈머 계정을 공유에 추가합니다.
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;
대상 계정에서 실행하기¶
다른 리전의 대상 계정에서 다음 SQL 명령을 실행합니다.
원본 계정에서 데이터베이스와 공유를 복제하기 위한 보조 복제 그룹을 만듭니다.
USE ROLE ACCOUNTADMIN; CREATE REPLICATION GROUP my_rg AS REPLICA OF acme_org.account_1.my_rg;
Copy그룹을 수동으로 새로 고쳐 오브젝트를 현재 계정에 복제합니다.
ALTER REPLICATION GROUP my_rg REFRESH;
Copy하나 이상의 컨슈머 계정을 공유에 추가합니다.
ALTER SHARE share1 ADD ACCOUNTS = consumer_org.consumer_account_name;
Copy
원본 계정에서 ALTER REPLICATION GROUP 명령을 사용하여 기본 복제 그룹에 대한 REPLICATION_SCHEDULE 매개 변수를 설정하면 새로 고침 작업을 자동화할 수 있습니다. 자세한 내용은 복제 일정 섹션을 참조하십시오.