Snowflake 소개
- 데이터 클라우드, 다른 글로벌 클라우드 위에서 동작
- 데이터의 판매가 가능한 Data Sharing/Marketing 제공
- ETL, 데이터 통합 기능 제공
특징
- 가변 비용 모델이다.
- SQL 기반으로 빅데이터를 저장, 처리한다.
- 배치 데이터 중심이나, 실시간 데이터도 지원한다.
- Time Travel : 과거 데이터 쿼리 기능을 지원한다.
- Python API를 통해서 관리/제어가 가능하다.
- 클라우드 스토리지를 외부 테이블로 사용가능하다.
- 계정 구성
- Organization : 모든 Snowflake 자원들을 통합하는 최상위 컨테이너
- Accounts : 자체 사용자, 데이터, 접근 권한을 독립적으로 갖는다.
- Databases : 하나의 Database는 다수의 스키마와 테이블, 뷰로 구성됨, 독립적인 컴퓨팅 리소스를 갖는다.
- Data Sharing & Marketplace
- Sharing : 데이터 셋을 스토리지 레벨에서 공유한다.
- Marketplace : 데이터 판매가 가능한 마켓플레이스 제공
- 비용 구조
- credit : 작업에 소비되는 계산 리소스를 측정하는 단위
- 컴퓨팅 비용 : 크레딧으로 결정된다.
- 스토리지 비용 : TB 단위 계산
- 네트워크 비용 : 지역간 데이터 전송 또는 다른 클라우드간 전송 시 TB단위 계산
초기 환경 설정
- Worksheets에서 SQL Worksheet를 생성
- Setup-Env를 Rename으로 생성해주기.
- No Database selected → db를 선택해야한다. (생성)
데이터 베이스와 스키마 설정
CREATE DATABASE dev;
CREATE SCHEMA dev.raw_data;
CREATE SCHEMA raw_data
-테이블을 raw_data 아래에 생성(dev선택했다는 가정하에)
CREATE OR REPLACE TABLE raw_data.session_transaction(
sessionid varchar(32) primary key,
refunded boolean,
amount int
);
- COPY 사용해 벌크 업데이트 수행하기
- S3 버킷 액세스를 위한 전용 사용자를 IAM으로 만들고 S3 읽기 권한 부여가 필요.
- 권한 옵션에서 Attach policies directly → S3ReadOnlyAccess 추가
- 사용자의 키가 필요하다.
- IAM 사용자 → Security credentials → create access key
- AWS_KEY_ID
- AWS_SECRET_KEY
COPY INTO dev.raw_data.session_timestamp
FROM 'S3의 파일 경로'
credentials = (AWS_KEY_ID = '' AWS_SECRET_KEY = '')
FILE_FORMAT = (type='CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSED_BY='''');
사용자 권한 설정과 데이터 거버넌스
- Snowflake는 Group을 지원하지 않는다. → Role을 사용
Role과 User 생성
- ROLE :
CREATE ROLE user_role
- USER :
CREATE USER username PASSWORD =’password’;
- 권한 지정 :
GRANT ROLE user_role TO USER username
- 기본이 되는 role 하위에 새로운 role 생성을 하는 경우
: GRANT ROLE parents_role TO ROLE child_role;
- 보안의 경우 별도 테이블 관리가 좋다.
데이터 거버넌스
- 데이터가 적재적소에 올바르게 사용됨을 보장하기 위한 데이터 관리 프로세스
- 목적은 아래와 같다.
- 데이터 기반 결정에서의 일관성
- 데이터를 이용한 가치 만들기
- 데이터 관련 법규 준수
데이터 거버넌스 관련 기능
- Object Tagging
- 각 오브젝트에 태그를 달아서 관리하는 것.
- 개인 정보에 관련된 부분을 관리하는 것이 중요하다.
- Enterprise 레벨에서만 가능하다. CREATE TAG로 생성한다.
- Data Classification
- Snowflake가 직접 데이터를 분류해주는 것
- 3가지의 스텝으로 구성된다.
- Analyze : 테이블 적용 시 특정 컬럼들을 분류한다. (개인정보, 민감한 정보들)
- Review : 사람이 보고 최종 리뷰 수행
- Apply : 최종 결과를 System Tag로 적용한다.
- Tag based Masking Policies
- 태그에 따라서 액세스 권한을 다르게 해주는 것.
- Access History : 접근 기록 확인
- Object Dependencies
- 원본 테이블의 속성들이 새로운 테이블을 생성 시에 따라가야 한다. → 시스템 무결성 유지가 목적
- 계승 관계 분석을 통해 세밀한 보안과 액세스 제거가 가능하다.
- 테이블이나 뷰를 수정하는 경우 발생하는 영향을 식별해준다.