Snowflake 사용법(2023년 최신 UI 화면 반영)


  • Data Warehouse 중 하나인 Snowflake 사용법에 대해 작성한 글입니다
    • Snowflake를 전혀 모르는 분들을 대상으로 설명하기 위한 첫 글이고, 큰 그림 위주로 작성했습니다. 추후에 다른 글도 작성할 예정입니다
  • 2023년에 기본 웹 인터페이스로 변경된 Snowsight 화면을 기준으로 작성되었습니다

Snowflake

특징

  • 스노우플레이크는 데이터 웨어하우스(Data Warehouse)로 Managed 솔루션
  • 대표적인 DW로 Google Cloud의 BigQuery, AWS의 Redshift 등이 있음. 이 DW들은 특정 클라우드 벤더사에 종속된 환경에서 사용함. 예를 들어 BigQuery는 Google Cloud, Redshift는 AWS에서만 사용할 수 있음
  • 스노우플레이크는 Google Cloud, AWS, Microsoft Azure를 지원해 어떤 곳에 데이터가 저장되어 있어도 활용할 수 있다는 장점이 존재. 특정 플랫폼에 종속되지 않고, 멀티 클라우드 환경를 구축한다면 좋은 대안으로 사용할 수 있음
  • 또한 데이터 웨어하우스를 구축할 때 고려해야 하는 점 중 하나는 Transfer Cost인데, 동일 Region이라고 하면 대부분 비용을 부과하지 않음
    • 단, 벤더사에서 사용하는 모든 Region을 사용할 수 있는 것은 아님. 23년 5월 기준 Snowflake에서 지원하는 서울 Region은 AWS만 존재
  • 즉, AWS 환경(Seoul) + 아직 DW가 없는 상황(또는 Redshift가 아쉬운 상황) + 네트워크 비용 고민을 한다면 Snowflake를 검토해보는 것도 좋을 것
  • 400 달러의 크레딧이 포함된 30일 무료 평가판을 제공
  • Snowsight에서 쿼리 결과를 시각화 할 수 있음(단, 아직 시각화 기능은 풍부하진 않고 아직 Line, Bar, Scatter, Heatgrid, Scorecard만 존재)
  • Streamlit을 인수하고 Snowflake + Streamlit 작업을 하는 것으로 예상
  • Zero Copy Cloning
    • 원본 데이터의 스냅샷을 만들고, 복제된 데이터를 사용할 수 있음(원본과 독립)
    • 프러덕션 환경에 영향을 미치지 않아 Test로 쓸 수 있음
    • Clone은 제로 복사고 기본 데이터가 복사되지 않고, 메타데이터 및 포인터만 변경됨
    • 다른 데이터 웨어하우스에선 데이터도 저장되어 저장 공간이 2배가 되는데 이 부분은 인상 깊었음


아키텍쳐

이미지 출처 : Snowflake 공식 홈페이지

  • Snowflake는 총 3개의 Layer로 구성됨
    • 1) Database Storage Layer
      • 데이터를 내부적으로 최적화된 압축된 컬럼 형태로 재구성해 저장
    • 2) Query Processing Layer
      • Virtual Warehouse를 사용해 쿼리를 처리함
      • 각각의 Virtual Warehouse는 독립적이며 서로 영향을 주지 않음
    • 3) Cloud Service Layer
      • 인증, 인프라 관리, 메타데이터 관리, 쿼리 구문 분석 및 최적화, Access Control 등을 관리함
  • 쿼리를 실행하는 사람 관점에선 “Virtual Warehouse라는 것이 있구나” 정도로 이해하고 넘어가도 좋음


비용(Pricing)

  • 아키텍쳐에서 나온 3가지 Layer 별로 요금을 부과함
    • Database Storage : 압축 후의 데이터 사이즈로 부과
    • Virtual Warehouse(Compute) : 데이터 Load, 쿼리 실행히 사용한 컴퓨터 시간만큼 부과
    • Cloud Service : 상태 관리, 조정시 부과
  • Snowflake는 크레딧이란 개념을 사용하며, 1크레딧 당 2달러, 3달러 등으로 구성
  • 크레딧 당 얼마인지는 Snowflake Pricing 페이지에서 확인할 수 있음
    • Edition : Standard, Enterprise, Business Critical, Vritual Private Snowflake(VPS) 에디션마다 부과하는 금액이 다름
    • 벤더사, Region 마다 부과하는 금액이 다름
    • AWS - Seoul Region - Enterprise일 경우 1크레딧 당 $4.05를 부과

AWS - Seoul로 선택할 때의 가격


Virtual Warehouse

  • Virtual Warehouse의 성능을 선택할 수 있음
  • X-Small, Small, Medium, Large, X-Large, 2X-Large, 3X-Large 등으로 선택할 수 있으며, 타입마다 크레딧이 다르게 부과됨
  • Virtual Warehouse가 실행 중이 아닌 경우엔 크레딧을 사용하지 않으며, 1분 미만으로 사용할 경우엔 1분 요금이 청구되며 1분 이후부턴 초당 과금
  • 만약 Small을 사용한다면 1시간에 2 크레딧을 소모하고, 초당으로 치환하면 1초에 0.0006 크레딧을 사용함

Virtual Warehouse 성능별 부과되는 크레딧(23년 5월 기준)

  • Virtual Warehouse의 타입에 따라 인스턴스의 성능이 얼마나 되는지 궁금했으나, 공식 문서를 찾아도 나오지 않음
    • Snowflake warehouse sizing이란 글을 참고하니 X-Small은 1개의 노드, Small은 2개의 노드, Medium은 4개의 노드를 사용한다고 함
    • 각 노드엔 8개의 core/threads
    • AWS에서 각 노드는 16GB RAM, 200GB SSD인 c5d.2xlarge EC2를 사용한다고 함
    • Medium은 4개의 노드를 사용하고, 32 Cores/threads, 64GB RAM, 800GB

Virtual Warehouse 타입별 성능. 출처 : select.dev

  • X-Small로 시작하고, 점점 사용 패턴에 따라 성능을 조정해야 할 것으로 보임
    • 만약 쿼리가 너무 빨리 실행된다면 리소스를 완전히 활용하지 않을 가능성이 높아서 성능을 낮추는 것도 좋음
  • Virtual Warehouse를 2개 만들고, 사용자 그룹별로 분리할 수도 있음
    • 쿼리를 많이 사용하는 데이터 분석가에겐 더 큰 Virtual Warehouse를 사용하도록 권한을 부여
    • 가끔 사용하는 사람에겐 작은 Virtual Warehouse를 제공
  • Enterprise 에디션 이상을 사용하면 Multi-cluster Warehouse을 사용할 수 있음. Auto-scale 기능을 활성화 할 수 있음. 단, 많이 쓰는 만큼 비용이 더 나감(당연한 이야기)



Snowflake 시작하기

가입하기

  • Snowflake 홈페이지 우측에 있는 START FOR FREE(무료로 시작하기) 버튼을 클릭
  • 그 후, 개인 정보를 입력한 후 다음으로 이동

  • Enterprise가 제일 많이 사용하는 옵션인 것 같아 Enterprise로 선택했으며, 클라우드 벤더사와 지역을 설정
  • 그 후, 로그인하고 인증을 하면 Snowsight 화면으로 이동함


Snowsight : 웹 콘솔

  • Snowsight는 쿼리 작성, 실행, 히스토리 확인, 각종 설정, 데이터 공유 등을 할 수 있는 공간
  • Web Console이라고 생각하면 됨
  • 과거에 사용되던 Classic Console은 점점 사용하지 않을 예정이라고 함

Snowflake Snowsight Worksheet

  • User Menu, Navigation Menu, Contents 영역으로 구성됨
    • Contents 영역은 Navigation Menu에서 선택하는 것에 따라 화면이 바뀜
  • User Menu
    • Role 변경, User Profile 설정(언어, 사진, 이름, 비밀번호 등)

  • Navigation
    • Worksheet : 작업 공간. SQL, Python Worksheet를 만들 수 있으며 폴더를 만들어 정리할 수도 있음
    • Dashboards : 1개 또는 여러 차트를 배치할 수 있는 공간
    • Data : 데이터 관련 공간
    • Marketplace : 다양한 마켓플레이스가 제공하는 것들이 존재. 데이터, SaaS 등
    • Activity : Query History, Copy Histroy, Task History
    • Admin : 사용량 확인, Virtual Warehouse 리스트 확인, Resource Monitor, User & Role 설정, 보안, Billing 등
    • 데이터를 활용하는 사람이 제일 많이 사용할 부분은 Worksheets, Data
    • 데이터 엔지니어, DevOps 엔지니어는 Activity, Admin


Worksheet : 쿼리 실행하는 공간

Worksheet 화면

  • SQL 쿼리를 실행할 수 있는 공간(DDL, DML)
  • 쿼리나 오퍼레이션의 결과를 확인할 수 있음
  • Recent, Shared with me, My Worksheets, Folders는 모두 클릭해보면 직관적으로 이해됨. Folder를 생성해서 관리하는 것을 추천
    • 저는 Dev 폴더를 생성함
  • 우측의 … 버튼을 클릭하면 Manage Filter를 확인할 수 있음
    • 이 부분은 추후에 쿼리에서 사용할 필터를 저장함

    Worksheet의 Filter

  • 우측의 + 버튼을 클릭하면 SQL Worksheet, Python Worksheet, Folder를 생성할 수 있음
  • SQL Worksheet를 클릭하면 다음과 같은 화면이 보이며, 앞으로 데이터 분석할 때 많이 활용할 공간
    • 우측에 select col from table whre created = :daterange가 작성된 부분이 쿼리 작성 공간
    • 좌측엔 Worksheets가 폴더 구분되어 보임
    • 좌측 상단의 Worksheets 왼쪽에 Home 아이콘을 누르면 Snowsight 메인 화면으로 이동함

SQL Worksheets

  • Databases를 클릭하면 Snowsight 메인에서 Data - Database를 누르면 다음과같이 보임
    • 어떤 데이터가 존재하는지 확인할 수 있으며, 저는 CITIBIKE, WEATHER 데이터베이스를 생성해서 존재함
    • 데이터베이스 - 스키마 - 테이블이 보이며, 어떤 컬럼을 가지는지도 보임

SQL Worksheets의 Databases 클릭시

  • Warehouse 선택 : 우측의 ACCOUNTADMIN, COMPUTE_WH를 누르면 각종 설정을 변경할 수 있음. 여러 Role을 보유하거나 Warehouse도 Role마다 다르게 쓴다면 다른 것이 보일 것. 항상 이 부분이 잘 설정되어 있나 확인해야 함

SQL Worksheets의 Role, Warehouse 설정

  • 데이터베이스 선택 : SNOWFLAKE_SAMPLE_DATA를 클릭하면 어떤 Database에서 사용할 것인지 선택할 수 있음. 최초에 데이터베이스 선택을 꼭 해야 함

SQL Worksheets의 Database 설정

  • 2023-05-28 6:09pm 처럼 Worksheet에 마우스를 올린 후 …을 클릭하면 이름 변경, 쿼리 포매팅, 삭제, 단축키 확인 등을 할 수 있음

SQL Worksheets의 Worksheet 설정


SQL 쿼리 실행

  • 다음과 같은 쿼리 실행
SELECT
  O_ORDERDATE as date,
  COUNT(O_ORDERDATE) as orders
FROM
  SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
GROUP BY
  O_ORDERDATE
ORDER BY
  O_ORDERDATE
LIMIT 10;

SQL 쿼리 결과

  • Chart를 눌러보면 시각화를 할 수 있음

쿼리 결과의 Chart

Python Worksheet

  • Python Worksheet를 실행하면 Python 스크립트를 실행할 수 있는 공간이 나옴
  • Snowpark 라이브러리를 사용함
    • Snowpark는 Snowflake를 프로그래밍 언어로 사용하기 위한 라이브러리

Python Worksheet 형태


Data : 데이터 Load & 확인

  • Data 아래에 Databases 탭이 존재함
  • 이 공간에서 데이터를 load 할 수도 있고, 저장된 데이터를 확인할 수도 있음
  • Data 아래에 있는 Private Sharing에서 데이터를 공유할 수 있음
  • Snowflake는 Database - Schema - Table 형태로 저장됨
    • 여기서 Schema는 보통 RDB에서 말하는 컬럼이 아니기에 헷갈리지 않는 것이 필요
    • Database
      • Schema들의 논리적 그룹
    • Schema
      • Database Object(Tables, View 등)의 논리적 그룹. 하나의 데이터베이스 아래에 존재함
  • 그 외에 Object는 우선 아래 정도만 있구나 인지하고, 필요할 때 하나씩 학습하는 것을 추천

Snowflake의 여러 Objects. 이미지 출처 : Analytics Today


총평

  • 익숙해지는데 시간이 소요되었지만, 한번 익히니 어떤 느낌인지 깨달음
  • 다른 데이터웨어하우스 대비 쿼리문으로 진행하는 것이 많아 처음에 진입 장벽이 존재할 것(예 : USE Database 등)
  • Snowflake의 UI가 변경되어 최신 내용에 맞는 글이 거의 없어 글을 작성하게 되었음. 앞으로도 계속 변경될 것 같음
  • 자료가 있는듯 없는듯.. 조금 더 공식 문서가 친절해지면 좋을 것 같음


핵심 내용 정리

  • Snowflake는 클라우드 3사의 환경에서 구축할 수 있음
  • 3개의 Layer : Database Storage, Query Processing, Cloud Service
  • 비용 : 크레딧 부과(클라우드 벤더사, Region 마다 금액이 다름)
    • Virtual Warehouse : 데이터 Load, 쿼리 연산을 할 때 사용하는 인스턴스
  • Snowsight : Snowflake의 웹 콘솔
    • Worksheet : 작업 공간
    • Data : 데이터 Load, 데이터 확인할 수 있는 공간
    • 그 외에 다양한 Object 존재


참고 자료

추가로 작성할 글

  • Snowflake SQL 문법 정리
    • 쿼리 퍼포먼스 최적화하기
  • Snowflake Python에서 사용하기(Snowpark API)
  • Snowflake로 ELT 데이터 파이프라인 만들기
    • Snowflake로 마트 만들기(Task)
  • Snowflake 비용 모니터링하기
  • 쿼리 작성 가이드


글 작성하는데 걸린 시간 : 4시간 52분

카일스쿨 유튜브 채널을 만들었습니다. 데이터 사이언스, 성장, 리더십, BigQuery 등을 이야기할 예정이니, 관심 있으시면 구독 부탁드립니다 :)

PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다

이 글이 도움이 되셨거나 다양한 의견이 있다면 댓글 부탁드립니다 :)

Buy me a coffeeBuy me a coffee





© 2017. by Seongyun Byeon

Powered by zzsza