Chapter 3. Virtual Warehouse

Snowflake SE·2024년 12월 26일
0

Zero to Snowflake

목록 보기
5/21

1. Snowflake 아키텍처 구성 요소

Snowflake는 설정된 시스템 규모로 어카운트에 할당하는 것이 아니라 저장한 데이터 만큼 스토리지를 할당하고, 필요한 만큼 컴퓨팅 자원을 쓰고 반환합니다. 따라서 시스템 자원을 한정하여 구성하지 않고 무한한 클라우드의 자원을 필요한 만큼 활용합니다.

일반적으로 쿼리가 실행되는 데에는 데이터가 저장된 Storage layer, 연산과 집계가 실행되는 computing layer, 사용자 세션을 관리하고 쿼리를 옵티마이징하는 Cloud service layer로 구분됩니다.

아키텍처


2. 가상 웨어하우스

가상 웨어하우스(Virtual Warehouse)는 Snowflake 아키텍쳐 구성 요소 중 컴퓨팅 영역에 해당됩니다.

  • 스토리지 영역과 분리되어 있어서 데이터가 증가하거나 컴퓨팅 자원이 더 필요한 경우 확장의 제한이 없이 탄력적인 확장성을 제공합니다
  • 가상 웨어하우스는 처음부터 할당되어 구성되어 있는 것이 아니라, 사용자가 쿼리를 수행하면서 시스템 자원이 필요할 때 할당됩니다.
  • 가상 웨어하우스는 부서,워크로드 형태,사용자 역할 등의 기준으로 개별적으로 생성할 수 있고, 각각의 가상 웨어하우스는 서로의 시스템 자원과 격리되어 있기 때문에 간섭을 주지 않습니다.

가상웨어하우스


3. 가상 웨어하우스 모니터링

Admin > Warehouse 로 이동하여 현재 어카운트에 생성된 가상 웨어하우스 목록과 상태를 확인할 수 있습니다.

  • 웨어하우스 이름
  • 웨어하우스 크기
  • 웨어하우스 상태
  • 웨어하우스의 클러스터 수 (활성화/비활성화)
  • 실행 중인 세션 수
  • 대기 중인 세션 수

4. 가상 웨어하우스 생성

Admin > Warehouse에서 + Warehouse를 클릭하고 웨어하우스 정보를 입력합니다

  1. 웨어하우스의 이름을 정합니다
  2. 웨어하우스의 종류를 선택합니다
    • Standard : 일반적인 컴퓨팅에 사용되는 웨어하우스입니다
    • Snowpark-optimized : ML학습과 같이 대량 메모리 요구 사항이 있는 워크로드에 권장됩니다.
  3. 웨어하우스의 크기를 정합니다
  4. Auto resume : 쿼리가 실행될 때 자동적으로 suspend 상태에서 started 상태로 변경됩니다
  5. Auto suspend : 쿼리가 실행되지 않은 상태에서 지정된 시간 이후 suspend(중지상태) 됩니다
    • Auto suspend 시간 지정 : 0이나 null값은 suspend가 되지 않음을 의미하므로 주의해야 합니다.
  6. Multi-cluster : 쿼리가 대기 상태에 있으면 동일한 크기의 웨어하우스가 할당되어 쿼리를 처리할 수 있도록 합니다.
    • Min Cluster : 지정된 수의 웨어하우스 클러스터가 시작됩니다.
    • Max Cluster : 추가로 할당될 수 있는 웨어하우스 수의 최대값을 지정합니다.
    • Standard(기본)/Economy 중 선택합니다.
      웨어하우스 생성
      워크시트에서 SQL을 이용해 웨어하우스를 생성할 수 있습니다
      // 웨어하우스 생성
      CREATE WAREHOUSE demo_wh
             WAREHOUSE_SIZE = 'xsmall'
             AUTO_RESUME = TRUE
             AUTO_SUSPEND = 300
             MIN_CLUSTER_COUNT = 1
             MAX_CLUSTER_COUNT = 3 ;

5. 가상 웨어하우스 사용

  • 사용할 가상 웨어하우스 선택
    • 쿼리 세션에서 사용할 가상 웨어하우스를 명시적으로 지정하거나
    • 배치 프로그램(프로시저) 내에서 변경 쿼리별로 별도의 가상 웨어하우스를 지정할 수 있습니다
    • Client Tool의 기본 설정에서는 해당 Client tool 사용자가 사용할 가상 웨어하우스를 지정합니다
      USE WAREHOUSE my_wh ;
  • 웨어하우스 Scale-up

    • 가상 웨어하우스의 크기를 늘려 쿼리 성능을 높일 수 있습니다.
      ALTER WAREHOUSE my_wh SET WAREHOUSE_SIZE = MEDIUM ;
  • 사용자에게 사용할 기본 웨어하우스 지정

    ALTER USER sicentist SET DEFAULT_WAREHOUSE = 'my_wh' ;
  • Task를 등록해서 주기적으로 가상 웨어하우스의 크기를 변경하도록 스케줄링
    이 예시에서는 매일 오후 6시에서 9시 사이에는 my_wh를 LARGE 크기로 변경하여 사용하도록 스케줄링하였습니다

    // 웨어하우스 크기를 18시에 Large로 변경하는 태스크 생성
    CREATE OR REPLACE TASK set_my_wh_to_large
      WAREHOUSE = my_wh
      SCHEDULE = 'USING CRON 0 18 * * * Asia/Seoul' 
    AS
      ALTER WAREHOUSE my_wh SET WAREHOUSE_SIZE = 'LARGE';
    
    // 태스크 실행
    ALTER TASK set_my_wh_to_large RESUME;
    
    // 웨어하우스 크기를 21시에 small로 변경하는 태스크 생성
    CREATE OR REPLACE TASK set_my_wh_to_small
      WAREHOUSE = my_wh
      SCHEDULE = 'USING CRON 0 21 * * * Asia/Seoul' 
    AS
      ALTER WAREHOUSE my_wh SET WAREHOUSE_SIZE = 'SMALL';
    
    // 태스크 실행
    ALTER TASK set_my_wh_to_small RESUME;
profile
Snowflake Korea SE

0개의 댓글