Snowflake는 Cloud based Data Warehouse입니다. 기존에 Oracle이나 MS SQL Server와는 달리 Index도 없고 따로 관리할 디스크나 CPU 및 Memory도 없습니다. 즉, 일체형 PC랑 비슷하다고나 할까요? Snowflake는 SaaS(Software as a Service)이기때문에 모든게 안에 포함되어 있습니다.

 

Snowflake의 Virtual Warehouse는 CPU 및 Memory 역할을 하고, 데이터는 Snowflake에 연결된 Cloud Storage로 저장되기 때문에 따로 관리할 필요가 없습니다. 사용한만큼만 Pay하면 되지요.

 

가장 큰 비용은 Virtual Warehouse의 사용료일텐데요, 최소한으로 사용하는 것이 아끼는 것일테고, 최소한으로 사용하기 위해서는 Snowflake를 어떻게 효율적으로 사용해야할지를 알아야 할 것 입니다.

 

이번 포스팅에서는 Snowflake의 Caching mechanism을 알아보도록 하겠습니다.

 

출처 : Snowflake performance tuning 교육자료

 

Snowflake에는 위 그림과 같이 크게 3가지의 Cache 영역이 존재합니다.

(1) Metadata : 테이블에 대한 MAX 값, MIN 값, Average 값 등이 데이터에 해당되며 Cloud Services 영역에 저장됩니다.

(2) Query Result : 한번 수행한 쿼리에 대한 결과 데이터가 저장되는 영역이며 역시 Cloud Services 영역에 저장됩니다. 결과 데이터는 쿼리를 실행한 시간으로부터 최근 24시간동안만 보관되며, 쿼리가 다시 실행되면 24시간의 시간은 다시 리셋되어 24시간이 다시 흐르게 되는 방식입니다. 쿼리가 조금이라도 달라지면 다른 쿼리로 인식됩니다.

(3) Warehouse Data Cache : 쿼리가 수행될 때마다 읽어들인 데이터를 보관하는 Cache 영역이며, 해당 Virtual warehouse가 suspend될 경우 초기화되므로 auto suspend time을 너무 짧게 설정하면 비효율적일 수 있습니다.

 

 

 

반응형
Posted by Steve Lim
,

이전 포스팅에서 소개해드렸듯이 Snowflake는 Cloud based Data Warehouse 입니다.

 

제가 마침 최근에 Snowflake performance tuning 교육을 받았는데요, 아직 lab environment를 사용할 수 있으니, 이걸 이용해서 Snowflake의 기본 UI에 대해 설명해 드릴까 합니다.

 

로그인

본인의 혹은 회사의 Snowflake account URL로 들어가면 아래와 같이 로그인을 할 수 있는 화면이 표시됩니다.

만일 회사에서 Active directory를 사용하고 있고, Snowflake가 Microsoft Azure에 연결되어 있다면, 회사에서 사용하는 AD account를 이용하여 Snowflake에 SSO/SCIM을 설정하여 Username과 Password 없이 Sigle sign on을 하실 수도 있습니다.

 

여기서는 Snowflake 관리자로부터 부여받은 Username과 Password를 이용하여 로그인 하시면 되겠습니다.

 

UI 레이아웃

 

 

1. 상단 메뉴바 : 

- Databases : 현재 Role로 엑세스할 수 있는 모든 데이터베이스 리스트와 상세 정보를 확인할 수 있습니다.

데이터베이스 목록을 확인할 수 있고, 특정 데이터베이스 이름을 클릭하면 해당 데이터베이스 안에 있는 오브젝트 목록(Tables, Views, Schemas, Stages, File Formats, Sequences, Pipes) 등의 상세 정보 또한 확인이 가능하며 오브젝트를 새로 만들거나 삭제하거나 하는 등의 관리작업도 가능합니다.

 

- Shares : 다른 Snowflake account의 Database를 공유 받을 수도 있고 공유할 수도 있습니다. 공유받은(Inboun) 혹은 공유한(Outbound) 데이터베이스 목록과 상세 정보를 확인할 수 있습니다.

여기 Shares에서 보이는 ACCOUNT_USAGE - SNOWFLAKE는 일종의 시스템 데이터베이스로서 어느 Snowflake account나 하나씩은 꼭 있는 Shared database이고 읽기 전용이며, Snowflake에서 일어나는 모든 기록을 여기서 찾을 수 있습니다. Oracle 데이터베이스에서의 SYS 스키마나 MS SQL Server의 master 데이터베이스와 비슷한 역할을 한다고나 할까요? SNOWFLAKE 데이터베이스의 ACCOUNT_USAGE 스키마에서 Audit history나 Query history 및 Billing history 등 거의 모든 history 정보를 확인할 수 있습니다.

 

- Data Marketplace : App store와 비슷한 개념으로 유료 혹은 무료의 Database 혹은 Data를 사용할 수 있습니다.

 

- Warehouses : 현재 Role로 엑세스할 수 있는 모든 웨어하우스(Virtual warehouses - Compute components)의 리스트와 상세 정보를 확인할 수 있습니다.

 

- Worksheets : 위 screenshot에 보이는 화면이며 Snowflake 데이터베이스에 쿼리를 할 수 있는 작업 공간 입니다.

 

- History : 과거에 수행했던 모든 쿼리의 리스트와 상세 정보 및 실행계획 등을 확인할 수 있습니다.

또한 특정 쿼리 ID를 선택하여 해당 쿼리의 실행 계획 및 통계 정보 등을 아주 자세하게 확인할 수 있습니다.

 

- Account : ACCOUTADMIN Role을 가진경우에만 엑세스할 수 있으며 Snowflake Accout 관련한 내용(Billing & Usage, Reader Accounts) 등을 확인하고 관리할 수 있습니다.

위 Screenshot에서는 Billing & Usage와 Reader Accounts 메뉴만 보이지만 실제 Accountadmin role을 가진 사용자가 조회할 경우 Users, Sessions, Roles, Network policies 등 더 많은 정보를 확인할 수 있으며 관리도 가능합니다.

 

2. 사용자 로그인 정보

 

아래 Screenshot과 같이 사용자 정보 오른쪽에 아래화살표를 클릭하면 Password 변경 및 Switch Role 등의 관리가 가능합니다. 여기서 보이는 Role 이름인 "TRAINING_ROLE"은 STINGRAY 사용자에게 부여된 Default role이며, 이 Role 이외에 Securityadmin, Sysadmin, Useradmin, Public role로 Switch가 가능하며 Role을 Switch 하게 될 경우 현재 UI가 약간 변경될 수 (Role에 따라 Account 메뉴가 안보일 수도 있음) 있습니다.

 

3. Database 탐색기

 

MS SQL Server의 SQL Server Management Studio의 좌측에 있는 Object 탐색기와 비슷한 기능을 하는 부분입니다. 현재 Role로 엑세스가 가능한 데이터베이스 리스트 열람할 수 있으며, 각 데이터베이스에 엑세스 가능한 스키마 및 오브젝트 또한 정보 확인이 가능합니다. 하지만, Table과 View만 볼 수 있으며 기타 Object 들 (Stages, Pipes, Procedures 등)은 여기서 볼 수 없습니다. (이게 좀 불편하긴 하던데 모든 Object 들을 볼 수 있도록 개선되지 않을까 하는 소망입니다.)

 

4. 세션 설정 부분 (Dropdown menu)

 

이 부분은 뭐라 딱히 붙일만한 이름도 애매하고 Snowflake official document(Using Worksheets for Queries / DML / DDL — Snowflake Documentation)에는 Dropdown menu라고 나와 있지만 별 의미도 없어보이고... 여기선 그냥 제 맘대로 세션 설정 부분이라 이름 붙여 보겠습니다. (혹시 더 좋은 이름 생각 나시면 알면 알려주세요)

Snowflake를 처음 사용하는 사람들이 가장 많이 햇갈려 하는 부분이 오른쪽 상단에 있는 로그인 정보 부분과 이곳 세션 설정 부분에 모두 Role을 설정하는 항목이 있다는 것입니다.

 

오른쪽 상단에 있는 로그인 정보 부분에서 Role을 Switch하게 되면 전체 Snowflake UI에 영향을 받게 되어 전체 화면이 refresh 됩니다. 즉, Role에 따라 특정 메뉴에 엑세스를 할 수 도 있고 못할 수도 있습니다.

 

하지만 이 세션 설정 부분에서 Role을 Change 하게 되면 현재 "TAB"에서만 그 Role이 바뀌게 됩니다. 즉, Worksheets UI에 3개의 New Worksheet tab을 열었다면 각각의 tab에 서로 다른 Role을 설정할 수 있습니다. Role 변경은 이곳 세션 설정 부분에서 마우스로 클릭클릭하여 할 수 도 있고, 아니면 Worksheet 내부 SQL 에디터(맨 상단 Screenshot의 #5 부분)에서 다음과 같은 명령어로 Role 변경이 가능합니다.

 

use role securityadmin;

 

 

5. SQL 에디터 및 6. 결과 섹션

 

기본적인 Role change, warehouse change 및 각종 query 들을 실행하고 결과를 볼 수 있는 부분입니다. SQL Server Management Studio랑 아주 흡사하지만 다른 점도 많이 있습니다.

 

기본적으로 Run버튼을 누르면 커서가 있는 부분의 Query만 실행되고 전체 block을 씌우고 Run을 클릭하면 block이 씌워진 부분의 쿼리가 순차적으로 실행됩니다. Run 버튼 클릭이 귀찮으면 Ctrl + Enter를 누르면 Run을 클릭하는 것과 같은 역할을 합니다.

 

쿼리를 실행하면 하단의 결과 섹션에서 쿼리 결과를 확인할 수 있고 결과를 csv 파일로 download하거나 copy 버튼 클릭 후 Excel 등에 붙여 넣기 하는 것도 가능합니다.

 

"Query ID" 부분을 클릭하면 아래 Screenshot과 같이 해당 query id를 확인할 수 있으며, 그 query id를 한번 더 클릭하면 해당 쿼리의 query profile 을 상세히 확인할 수 있습니다.

 

 

New UI - Snowsight

 

Snowflake UI의 상단 메뉴 중 "Snowsight"를 클릭하면 Snowflake의 새로운 UI인 Snowsight를 사용할 수 있습니다.

 

 

Snowsight는 저도 아직 많이 써보질 않아서 소개 드릴게 별로 없고요, 나중에 제가 익숙해지면 그때 다시 소개해드리겠습니다.

 

오늘은 여기까지 마무리 하겠습니다.

 

반응형

'Snowflake' 카테고리의 다른 글

Snowflake 데이터웨어하우스  (0) 2022.01.24
Posted by Steve Lim
,

구글 검색을 해보니 이제 한국에도 Snowflake가 상륙했나봅니다. 저희 회사에서도 Snowflake를 도입한지 얼마 안되며 많은 정보는 없지만 최대한 많은 노하우를 공유해보고자 합니다.

 

Snowflake 공식 Documents는 이곳입니다.

https://docs.snowflake.com/en/

 

Welcome to Snowflake Documentation — Snowflake Documentation

In these topics, you will find the information you need to access your Snowflake account and perform all the administrative and user tasks associated with using Snowflake. The documentation also provides conceptual overviews, tutorials, and a detailed refe

docs.snowflake.com

 

저희 회사에서는 작년 여름(Summer 2021)경부터 논의가 되어 하반기부터 본격적으로 도입하여 사용하기 시작하였으며, 아직 활발한 사용은 아니지만, 조금씩 그 범위를 넓혀 가고 있습니다.

기본적인 목적은 Cloud based Data Warehouse로서 현재의 Data Warehouse on-prem으로부터 migration하기 위한 것입니다. 현재 저희 회사에서 Data Warehouse on-prem으로 Oracle 12c RAC 2-node에 40TB정도의 Storage를 사용하고 있으며, 다른 Source 시스템으로부터 여러가지 integration application을 통해 데이터를 가져와 사용되고 있습니다.

Data Warehouse의 Business application으로는 SSRS 및 PowerBI를 주로 활용하고 있으며, 팀에 따라 Excel이나 Qlik 등을 사용하는 경우도 있습니다.

 

재작년부터 회사의 IT방향중의 하나가 Cloud라서 가능한 모든 시스템을 Cloud base로 migration하고 있는 중입니다. Data Warehouse도 그 중에 하나이구요.

 

Snowflake는 SaaS(Software-as-a-Service)로서 Data Warehouse 서비스를 사용자들이 사용하기 쉽도록 제공하며, 기본적으로 Compute(CPU/Memory), Storage, 및 Analytic solution들을 사용자가 고민하지 않고 사용할 수 있도록 하고 있습니다. 

 

 

출처 : Snowflake 교육자료

 

 

Snowflake의 구조는 위 그림과 같습니다. 

  • Storage : Snowflake에서 사용하는 모든 스토리지는 centralized되어 이곳 storage에 저장됩니다.
  • Multi-cluster compute : 여러개의 Virtual warehouse를 생성할 수 있으며 각각의 Virtual warehouse들은 사용 용도에 따라 Compute의 사이즈(warehouse size 및 cluster count)를 설정할 수 있으며, CPU 및 Memory의 역할을 합니다. 각각의 Virtual warehouse들은 동일한 Storage를 엑세스할 수 있습니다.
  • Cloud services : UI, Optimization, Management, Transactions 등 기본적으로 DBMS를 사용할 때 필요한 모든 것들을 제공합니다.

Snowflake document 참조 : https://docs.snowflake.com/en/user-guide/intro-key-concepts.html

 

Key Concepts & Architecture — Snowflake Documentation

Key Concepts & Architecture Snowflake’s Data Cloud is powered by an advanced data platform provided as Software-as-a-Service (SaaS). Snowflake enables data storage, processing, and analytic solutions that are faster, easier to use, and far more flexible

docs.snowflake.com

 

다음 포스팅에선 Snowflake의 기본적인 UI사용에 대해 정리해보겠습니다.

반응형

'Snowflake' 카테고리의 다른 글

Snowflake - UI 둘러보기  (0) 2022.02.09
Posted by Steve Lim
,