SNOWFLAKE DATA SHARE를 통한 실시간 데이터 공유하기

Gyosun
Snowflake Korea
Published in
7 min readOct 31, 2022

데이터 분석을 수행하면서 혹은 분석된 데이터를 다른 사용자와 공유하기 위해서는 다양한 외부 데이터 수집 및 공유를 위한 기술을 사용해야 합니다. 데이터 공유 관점에서 전통적인 기술을 사용하는 방식은 SFTP, FTP와 같은 파일 전송 프로토콜을 사용하여 내가 가지고 있는 데이터 혹은 상대방이 가지고 있는 데이터를 공유하는 방법을 사용하게 됩니다. 이러한 전통적인 방식은 데이터를 공유할 때 아래와 같은 추가적인 기술적 관점의 고려를 수행해야 합니다.

  1. 어떤 프로토콜을 사용해서 데이터를 전달하고 받을 것인가?
  2. 데이터 공유 중에 발생할 수 있는 장애를 극복하기 위한 재처리 메커니즘은 어떻게 가져갈 것인가?
  3. 실시간으로 데이터를 공유할 것인가? 배치로 데이터를 공유할 것인가?
  4. 전달 받은 데이터를 내부 분석 플랫폼으로 적재 하기 위한 방법은 무엇을 쓸 것인가?
  5. 비용 효율적으로 데이터를 공유할 수 있는 방법은 무엇인가?
  6. 데이터 전달을 위한 전달 보장 방법은 무엇인가?

위와 같이 단순히 데이터를 전달, 수신 받기 위해서도 재처리 / 전달 보장, 실시간 처리 여부 등에 따라 기술적으로 고려해야 하는 포인트들이 굉장히 많으며, 이는 외부 데이터를 통해 분석을 수행하는 회사 입장에서는 시간과 비용이 발생하는 고단한 작업이 될 수 있습니다.

이러한 데이터 공유의 어려움을 해결하고자 SNOWFLAKE는 데이터 쉐어링이라는 기술을 제공하고 있으며, 이러한 기술적 메커니즘 위에 사용자들은 마치 나의 로컬DB에 저장된 데이터 처럼, 상대방의 데이터를 공유 받을 수 있으며, 몇 번의 클릭, 설정만으로 내가 가진 데이터를 상대방과 실시간으로 공유할 수 있는 기능을 제공합니다.

SNOWFLAKE 데이터 공유의 기술적 이점

SNOWFLAKE는 나의 데이터를 상대방과 안전하고 실시간으로 공유할 수 있는 기능을 제공하고 있으며, 이번 시간에는 Direct Sharing 및 Data Exchange를 통한 데이터 공유 방법에 대해서 설명합니다.

DATA PROVIDER — SQL 기반의 데이터 공유

Data Provider는 SQL 혹은 UI를 통해서 공유하고자 하는 데이터베이스, 테이블, 스키마에 대한 정의를 수행할 수 있습니다. SNWOFLAKE는 Share 객체를 통해서 사용자들이 공유를 원하는 객체에 대한 설정을 아래와 같은 SQL를 통해서 수행할 수 있습니다.

CREATE OR REPLACE SHARE <SHARE_NAME>;
GRANT USAGE ON DATABASE <DATABASE_NAME> TO SHARE <SHARE_NAME>
GRANT USAGE ON SCHEMA <SCHEMA_NAME> TO SHARE <SHARE_NAME>
GRANT SELECT ON TABLE <TABLE_NAME> TO SHARE <SHARE_NAME>
ALTER SHARE <SHARE_NAME> ADD ACCOUNT=<CONSUMER_ACCOUT_NAME>

SHARE 객체 생성 후, SHARE 객체가 참조하는 DATABASE, SCHEMA, TABLE에 대한 권한(USAGE, SELECT)을 SHARE 객체에게 부여합니다. 그리고 마지막으로 해당 SHARE 객체를 공유하고자 하는 SNOWFLAKE CONSUMER ACCOUNT로 설정하는 ADD ACCOUNT 명령을 수행합니다.

위에 보는 것처럼 간단한 SQL을 통해서 수행할 수 있습니다.

DATA PROVIDER — PROVIDER STUDIO를 통한 데이터 공유

데이터 Provider는 SQL 뿐만 아니라 SNOWFLAKE에서 제공하는 UI (Provider Studio)를 통해서 손쉽게 데이터 공유를 위한 설정을 수행할 수 있습니다.

SNOWSIGHT UI는 데이터 분석, 데이터 엔지니어링 및 데이터 공유를 위한 All-in-one UI를 제공하고 있으며, Provider Studio 를 통해서 데이터 공유를 위한 설정을 수행할 수 있습니다.

SNOWSIGHT DATA PROVIDER UI

Provider Studio는 아래와 같은 기능을 제공합니다.

  1. 데이터 공유를 위한 Listing 기능 생성
  2. 생성된 Listing에 대한 Public Marketplace 및 Private Marketplace(Data Exchange)를 통한 배포 기능
  3. CONSUMER 등록
  4. 공유된 데이터에 대한 CONSUMER 사용 현황 모니터링
  5. 데이터 공유를 위한 CONSUMER 추가 기능
LISTING 생성

데이터 공유를 위해서는 공유를 위한 기본적인 LISTING을 생성하는 단계를 수행합니다.

위의 단계에서는 해당 데이터는 PUBLIC Marketplace에 배포할 것인지 혹은 특정 고객과 데이터 공유를 수행할 것인지 선택을 합니다.

2번째 단계에서는 데이터 공유를 수행하고자 하는 데이터베이스, 테이블, 뷰에 대한 선택을 수행합니다.

공유하고자 하는 테이블 및 뷰에 대한 선택
Direct Sharing 일 경우 CONSUMER 고객의 ACCOUNT 입력

PROVIDER 는 추가적으로 공유하고자 하는 데이터에 대한 상세 정보 및 SAMPLE 쿼리를 사용자 요구사항에 맞춰서 등록을 수행할 수 있습니다.

데이터 공유를 위한 추가 정보 입력

DATA CONSUMER

데이터 CONSUMER는 SQL 및 SNOWSIGHT UI를 통해서 공유 받은 데이터를 확인할 수 있습니다.

DATA CONSUMER UI

CONSUMER는 공유 받은 전체 데이터에 대한 리스트 뿐만 아니라 각 개별 공유 데이터에 대한 상세 항목 및 샘플 쿼리들을 손쉽게 UI를 통해서 확인 받을 수 있으며, 몇 번의 클릭을 통해서 공유 받은 데이터를 로컬DB처럼 IMPORT하여서 사용할 수 있습니다.

CONSUMER — 공유 받은 데이터 상세

이러한 SNOWFLAKE 를 통한 데이터 공유는 아래와 같은 추가적인 기술적인 특장점을 가집니다.

  • 추가적인 데이터 공유를 위한 소프트웨어 / 데이터 파이프라인 없이 DATA CONSUMER는 언제나 실시간 데이터를 공유 받습니다.
  • DATA CONSUMER는 추가적인 데이터 스토리지 사용 없이 데이터 공유를 받을 수 있습니다. (DATA PROVIDER가 사용하는 스토리지에 대한 메타 정보만 공유 받아서 사용합니다)

이상 간단하게 SNOWFLAKE가 제공하는 DATA SHARING에 대한 내용 및 기능을 확인하였으며, 다음 내용은 Industry Specific한 데이터 Provider에 대한 내용을 공유하도록 하겠습니다.

--

--