데브코스 34일차 - Snowflake

Pori·2023년 11월 30일
0

데엔

목록 보기
29/47

Snowflake 소개

  • 데이터 클라우드, 다른 글로벌 클라우드 위에서 동작
  • 데이터의 판매가 가능한 Data Sharing/Marketing 제공
  • ETL, 데이터 통합 기능 제공

특징

  • 가변 비용 모델이다.
  • SQL 기반으로 빅데이터를 저장, 처리한다.
  • 배치 데이터 중심이나, 실시간 데이터도 지원한다.
  • Time Travel : 과거 데이터 쿼리 기능을 지원한다.
  • Python API를 통해서 관리/제어가 가능하다.
  • 클라우드 스토리지를 외부 테이블로 사용가능하다.
  • 계정 구성
    • Organization : 모든 Snowflake 자원들을 통합하는 최상위 컨테이너
    • Accounts : 자체 사용자, 데이터, 접근 권한을 독립적으로 갖는다.
    • Databases : 하나의 Database는 다수의 스키마와 테이블, 뷰로 구성됨, 독립적인 컴퓨팅 리소스를 갖는다.
  • Data Sharing & Marketplace
    • Sharing : 데이터 셋을 스토리지 레벨에서 공유한다.
    • Marketplace : 데이터 판매가 가능한 마켓플레이스 제공
  • 비용 구조
    • credit : 작업에 소비되는 계산 리소스를 측정하는 단위
    • 컴퓨팅 비용 : 크레딧으로 결정된다.
    • 스토리지 비용 : TB 단위 계산
    • 네트워크 비용 : 지역간 데이터 전송 또는 다른 클라우드간 전송 시 TB단위 계산

초기 환경 설정

  1. Worksheets에서 SQL Worksheet를 생성
  2. Setup-Env를 Rename으로 생성해주기.
  3. No Database selected → db를 선택해야한다. (생성)

데이터 베이스와 스키마 설정

CREATE DATABASE dev;

CREATE SCHEMA dev.raw_data;
/*미리 db를 설정한 경우에는 아래와 같이 사용된다.*/
CREATE SCHEMA raw_data

-테이블을 raw_data 아래에 생성(dev선택했다는 가정하에)

--만약에 테이블이 존재하면 지우고 새로만든다.-> CREATE OR REPLACE TABLE
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로 생성한다.
      • tag는 구조를 따라서 계승된다.
  • Data Classification
    • Snowflake가 직접 데이터를 분류해주는 것
    • 3가지의 스텝으로 구성된다.
      • Analyze : 테이블 적용 시 특정 컬럼들을 분류한다. (개인정보, 민감한 정보들)
      • Review : 사람이 보고 최종 리뷰 수행
      • Apply : 최종 결과를 System Tag로 적용한다.
  • Tag based Masking Policies
    • 태그에 따라서 액세스 권한을 다르게 해주는 것.
  • Access History : 접근 기록 확인
  • Object Dependencies
    • 원본 테이블의 속성들이 새로운 테이블을 생성 시에 따라가야 한다. → 시스템 무결성 유지가 목적
    • 계승 관계 분석을 통해 세밀한 보안과 액세스 제거가 가능하다.
    • 테이블이나 뷰를 수정하는 경우 발생하는 영향을 식별해준다.

0개의 댓글