2024. 1. 23. 17:11ㆍTIL
Snowflake 특징 소개
Snowflake는 2014년에 클라우드 기반 데이터 웨어하우스로 시작되어 데이터 클라우드라고 부를 수 있을 정도로 발전하였다. 데이터 판매를 통한 매출을 가능하게 해주는 Data Sharing/Marketplace, ETL과 다양한 데이터 통합 기능을 제공한다. Snowflake의 특징은 다음과 같다.
- 스토리지와 컴퓨팅 인프라가 별도로 설정되는 가변 비용 모델
- Redshift 고정비용처럼 노드 수를 조정할 필요가 없고 distkey 등의 최적화 불필요
- SQL 기반으로 빅데이터 저장, 처리, 분석을 가능하게 해줌
- 비구조화된 데이터 처리와 머신러닝 기능도 제공
- CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원
- S3, GC 클라우드 스토리지, Azure Blog Storage도 지원
- 배치 데이터 중심이지만 실시간 데이터 처리 지원
- Time Travel: 과거 데이터 쿼리 기능으로 트렌드를 분석하기 쉽게 해 줌
- 웹 콘솔 이외에도 Python API를 통한 관리/제어 가능
- ODBC/JDBC 연결도 지원
- 자체 스토리지 이외에도 클라우드 스토리지를 외부 테이블로 사용 가능
Snowflake의 대표 고객은 Siemens, Flexport, Iterable, Affirm, PepsiCo 등이 있다. 멀티클라우드와 다른 지역에 있는 데이터 공유(Cross-Region Replication) 기능을 지원한다. Snowflake의 계정 구성은 Organization -> 1+ Account -> 1+ Databases로 이루어진다.
- Organizations
- 한 고객이 사용하는 모든 Snowflake 자원들을 통합하는 최상위 레벨 컨테이너
- 하나 혹은 그 이상의 Account들로 구성되며 이 모든 Account들의 접근권한, 사용트래킹, 비용들을 관리하는데 사용됨
- Accounts
- 하나의 Account는 자체 사용자, 데이터, 접근권한을 독립적으로 가짐
- 한 Account는 하나 혹은 그 이상의 Database로 구성됨
- Databases
- 하나의 Database는 한 Account에 속한 데이터를 다루는 논리적인 컨테이너
- 한 Database는 다수의 스키마와 거기에 속한 테이블과 뷰 등으로 구성되어 있음
- 하나의 Database는 PB단위까지 스케일 가능하고 독립적인 컴퓨팅 리소스를 갖게 됨
Snowflake 무료 시험판 실행
https://signup.snowflake.com/로 접속하여 30일 무료 시험판을 시작한다. 메일로 온 Snowflake 로그인 URL을 확인해야 한다. 로그인하면 내 Account안의 Databases과 Warehouses를 확인한다. Snowflake Warehouse에서 Credit이란 쿼리 실행과 데이터 로드와 기타 작업 수행에 소비되는 계산 리소스를 측정하는 단위이다. 1 credit는 상황에 따라 다르지만 대략 $2-$4의 비용을 발생시킨다. Snowflake 비용 구조는 아래 3가지 컴포넌트로 구성된다.
- 컴퓨팅 비용: 앞서 크레딧으로 결정됨
- 스토리지 비용: TB 당으로 계산
- 네트워크 비용: 지역 간 데이터 전송 혹은 다른 클라우드 간 데이터 전송 시 TB당 계산
SNOWFLAKE 데이터베이스 밑에 3개의 스키마(raw_data, analytics, adhoc)를 생성해 볼 것이다.
Snowflake 실습을 위한 초기 환경 설정
먼저 Worksheet를 사용하여 웹 SQL 에디터로 데이터베이스와 스키마를 생성한다. 그리고 raw_data 스키마 아래에 3개의 테이블을 생성한다. Snowflake의 COPY 명령을 통해 레코드를 하나씩 적재하지 않고 벌크로 레코드들이 있는 파일을 통째로 적재한다. 이 방식을 사용하려면 클라우드 스토리지와 접근 권한 설정이 중요하다. AWS 콘솔에서 S3 bucket을 생성하고 그 버킷에 CSV파일을 업로드한다.
Snowflake 사용자 권한 설정
Role과 User를 생성하고 analytics_users와 analytics_authors Role 설정한다. 컬럼 레벨 보안(Column Level Security)은 테이블 내의 특정 컬럼(들)을 특정 사용자나 특정 역할(Role)에만 접근 가능하게 하는 것으로 보통 개인정보 등에 해당하는 컬럼을 권한이 없는 사용자들에게 감추는 목적으로 사용된다. 레코드 레벨 보안 (Row Level Security)은 테이블내의 특정 레코드(들)를 특정 사용자나 특정 역할에만 접근 가능하게 하는 것으로 특정 사용자/그룹의 특정 테이블 대상 SELECT, UPDATE, DELETE 작업에 추가 조건을 다는 형태로 동작한다. 일반적으로 더 좋은 방법은 아예 별도의 테이블로 관리하는 것이다. Data Governance란 필요한 데이터가 적재적소에 올바르게 사용됨을 보장하기 위한 데이터 관리 프로세스이다. 데이터 기반 결정에서 일관성, 데이터를 이용한 가치 창출, 데이터 관련 법규 준수가 목적이다. 데이터 거버넌스 관련 여러 기능이 있다.
- Object Tagging
- Data Classification
- 개인을 바로 지칭하는 식별자(Identifier)와 몇 개의 조합으로 지칭 가능한 준식별자(Quasi Identifier)
- Tag based Masking Policies
- Access History
- Object Dependencies
Snowflake 기타 기능과 사용 중단하기 살펴보기
Snowflake 기타 기능으로 플러그인과 같은 Marketplace, 공유 기능인 Data Sharing, 활동 기록을 알 수 있는 Activity - Query/Copy/Task History가 있다. 무료 시험 기간이 끝나면 계정은 자동으로 “Suspended” 모드로 변경된다. 그전에 끝내고 싶다면 Snowflake 서포트에 이메일을 보내서 종료 가능하다.
공부하며 어려웠던 내용
Snowflake라는 데이터 웨어하우스를 실습하면서 생소하였지만 데이터 엔지니어 업무를 경험할 수 있어 의미 있었다.
'TIL' 카테고리의 다른 글
| 4. SuperSet 소개와 대시보드 생성 (1) | 2024.01.25 |
|---|---|
| 3. 다양한 지표 소개 (2) | 2024.01.24 |
| 1. 데이터 웨어하우스 소개 (1) | 2024.01.22 |
| 데이터 분석 과정 및 시각화 실습(5) (0) | 2024.01.12 |
| 데이터 분석 과정 학습 및 시각화 실습(4) (2) | 2024.01.11 |