Immersion In Data

Snowflake/Ultimate SnowPro Core Certification

[Snowflake] Snowflake Features & Architecture

sungjunminn 2023. 3. 13. 16:42

1. What is Snowflake?


Data Platform


Data Warehouse 

  • 구조화 & 관계형 데이터
  • ANSI 표준 SQL 지원
  • ACID를 준수한 트랜잭션
  • 데이터는 데이터베이스, 스키마, 테이블에 저장

 

Data Lake

  • 확장 가능한 스토리지 및 컴퓨팅
  • 스키마를 미리 정의할 필요 없음
  • 반구조 데이터 형식의 기본 처리

 

Data Engineering

  • COPY INTO, Snowpipe
  • 컴퓨팅 클러스터 분리
  • Task, Stream
  • 모든 데이터는 암호화되어 있음

 

Data Science

  • 중앙 집중식 스토리지로 데이터 관리의 장애물을 제거
  • Snowflake의 데이터 과학 파트너 도구 사용 가능(Amazon SageMaker, DataRobot, Dataiku)

 

Data Sharing

  • 데이터 공유 보안
  • Marketplace
  • 데이터 교환
  • Snowflake의 BI 파트너 도구 사용 가능 

 

Data Applications

  • 커넥터, 드라이버
  • UDF와 저장 프로시저
  • 외부 UDF
  • Snowpark와 같은 미리보기 기능

 




2. Multi-cluster Shared Data Architecture


Shared-Disk Architecture

  • 장점 : 관리가 비교적 간단함
  • 단점 : 대역폭 및 네트워크 지연 시간이 필요함, 제한된 확장성을 가짐



Shared Nothing Architecture

  • 장점 : 컴퓨팅 및 스토리지를 함께 사용하여 네트워킹 지연 시간 문제를 방지함, 유지보수 비용이 저렴함, 확장성 높음 
  • 단점 : 확장이 여전히 제한적, 스토리지와 컴퓨팅이 긴밀하게 결합됨, 과잉 공급의 경향이 있음



Multi-cluster Shared Data Architecture : Cloud Services Layer, Query Processing Layer, Data Storage Layer 물리적으로 분리되어 있지만, 논리적으로 통합된 서비스 지향 아키텍처

  • 스토리지, 컴퓨팅 및 관리 서비스를 분리함
  • 무한 확장 가능한 세 가지 계층으로 구성됨
  • 가상 웨어하우스를 통해 워크로드를 격리할 수 있음

 

 


3. Storage Layer Overview

  • AWS S3와 같은 스토리지 서비스와 같은 클라우드 공급업체가 제공하는 영구적이고 무한 확장 가능한 스토리지 서비스에 상주함
  • Snowflake 사용자는 클라우드 공급업체의 가용성 및 내구성 보증을 대리로 받을 수 있음
  • Snowflake에 로드된 데이터는 데이터베이스, 스키마별로 구성되며 주로 테이블로 액세스할 수 있음
  • 구조화, 반구조화된 데이터 파일을 모두 Snowflake에 로드하고 저장할 수 있음

 


데이터가 테이블에 로드될 때, 실제로 Blob 저장소에 저장되는 것

  • 데이터 파일이 로드되거나 테이블에 행이 삽입되면 Snowflake는 데이터를 고유의 압축된 컬럼형 테이블 파일 형식으로 재구성함
  • 로드되거나 삽입된 데이터는 Snowflake가 마이크로 파티션이라고 부르는 것으로 분할됨
  • 스토리지는 월별로 계산된 TB당 고정 비율을 기준으로 저장된 용량에 따라 청구됨
  • SQL 명령어를 통해서만 기본 blob 스토리지에서 데이터에 직접 액세스할 수 있음

 



4. Query Processing Layer Overview

  • Query Processing Layer는 대부분의 SQL 문에 대한 결과를 반환하는 데 필요한 처리 작업을 실행하는 가상 웨어하우스로 구성됨
  • 가상 웨어하우스는 Snowflake가 관리하는 클라우드 기반 컴퓨팅 인스턴스의 클러스터에 대한 명명된 추상적 개체임
  • 가상 웨어하우스의 기본 노드는 로컬 캐싱을 사용하는 아무것도 공유하지 않는 컴퓨팅 클러스터와 유사한 방식으로 협력함



Virtual Warehouse

  • 즉시 생성하거나 제거할 수 있음
  • 일시 중지하거나 다시 시작할 수 있음
  • 무제한으로 확장 가능하며, 각각의 구성을 사용하여 생성할 수 있음
  • 상대적인 컴퓨팅 성능을 나타내는 여러 티셔츠 사이즈로 제공됨
  • 실행 중인 모든 가상 웨어하우스는 스토리지 계층의 동일한 데이터에 일관되게 액세스할 수 있음

 



5. Services Layer Overview

  • Services Layer는 모든 Snowflake 계정에 걸쳐 인증 및 쿼리 최적화와 같은 작업을 조정하는 고가용성 및 확장 가능한 서비스 모음임
  • 기본 가상 웨어하우스 리소스와 마찬가지로 서비스 계층도 클라우드 컴퓨팅 인스턴스에서 실행됨
  • 인증 및 액세스 제어, 인프라 관리, 트랜잭션 관리, 메타데이터 관리, 쿼리 구문 분석 및 최적화 수행, 보안 

 



6. Snowflake Editions

  • Standard
  • Enterprise
  • Business Critical
  • Virtual Private Snowflake

 

 

 

7. Snowflake object Model

 

 

 




8. Organizations, Accounts, Databases & Schemas


Organizations

  • 하나 이상의 Snowflake 계정을 관리
  • 여러 계정을 사용하는 Snowflake 기능을 설정
  • 계정 간 사용량을 모니터링



Accounts

  • 계정은 선택한 클라우드 플랫폼에 전체적으로 배포되고 관리되는 스토리지, 컴퓨팅 및 클라우드 서비스 모음의 관리 이름임
  • 각 계정은 단일 클라우드 공급자에서 호스팅됨
  • 각 계정은 단일 리전에서 규정됨
  • 각 계정은 단일 Snowflake 에디션에서 생성됨
  • ACCOUNTADMIN 역할이 자동으로 생성됨  



Databases

  • 데이터베이스 이름은 계정 내에서 고유해야 함
  • 데이터베이스는 알파벳 문자로 시작해야 하며 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없음



Schemas

  • 스키마 이름은 데이터베이스 내에서 고유해야 함
  • 스키마는 알파벳 문자로 시작해야 하며 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없음

 




9. Table & View Types


Table

  • Permanent : 디폴트 테이블 유형, 명시적으로 삭제될 때까지 존재
  • Temporary : 임시 데이터에 사용, 세션의 지속기간이 계속됨
  • Transient : 명시적으로 삭제될 때까지 존재, fail-safe 기간이 없음
  • External : Snowflake 외부에서 데이터 쿼리, 읽기 전용 테이블

 

  Time Travel Fail-safe
Permanent 90 days O
Temporary 1 day X
Transient 1 day X
External X X

 


View

  • Standard : 스토리지 비용에 기여하지 않음, 소스 테이블이 삭제된 경우 view를 쿼리하면 오류 발생, 테이블의 내용을 제한하는 데 사용
  • Materialized : 쿼리 정의 결과를 저장하고 주기적으로 새로 고침함, 서버리스 기능으로 비용 발생, 외부 테이블의 성능 향상에 사용
  • Secure : standard와 materialized view 모두 secure view가 될 수 있음, 인증된 사용자만 볼 수 있는 기본 쿼리 정의, 보안 향상을 위해 생략된 일부 쿼리를 최적화함

 




10. User Defined Functions (UDFs)

  • UDF는 사용자가 4개의 다른 언어(SQL, JavaScript, Python, Java)로 자신의 함수를 작성할 수 있도록 하는 스키마 수준의 객체임
  • UDF는 0개 이상의 파라미터를 사용할 수 있음
  • UDF는 스칼라 또는 표 형식의 결과를 반환할 수 있음
  • UDF는 SQL문의 일부로 호출될 수 있음
  • UDF는 오버로드될 수 있음



JavaScript UDF

  • JavaScript는 언어 파라미터와 함께 지정됨
  • 고급 프로그래밍 언어 기능을 사용할 수 있음
  • JavaScript UDF는 재귀적으로 자신을 지칭할 수 있음
  • Snowflake 데이터 유형이 JavaScript 데이터 유형에 매핑됨

 


Java UDF

  • Snowflake는 Java로 작성된 기능을 실행하기 위해 JVM을 부팅함
  • Snowflake는 Java 버전(8.x, 9.x, 10.x, 11.x)에서 UDF를 지원함
  • Java UDF는 인라인 코드 또는 미리 컴파일된 jar 파일로 정의를 지정할 수 있음
  • Java UDF를 보안으로 지정할 수 없음

 




11. Stored Procedures

  • 관계형 데이터베이스 관리 시스템에서 저장 프로시저는 절차 논리를 포함하는 SQL문의 모음임
  • 저장 프로시저는 소유자의 권한 또는 호출자의 권한으로 실행할 수 있음
  • 저장 프로시저는 Snowflake의 JavaScript API를 사용하여 JavaScript와 SQL을 혼합하여 사용할 수 있음

 

UDFs vs Stored Procedures
SQL문의 일부로 호출됨 X
과부하 능력  O
0개 이상의 입력 파라미터 O
JavaScript API 사용 O
값 선택사항 반환 O
SQL에서 사용 가능한 값 반환 X
재귀적 자칭 능력 O

 

 

12. Tasks & Streams

  • Tasks : SQL문 또는 저장 프로시저의 실행을 예약하는 데 사용되는 개체
  • Streams : 원본 테이블에 대한 DML변경 내용을 보고 추적하기 위해 만들어진 개체 - insert, updates, deletes

 


13. Billing Overview


Credits : 컴퓨팅 리소스 소비에 대한 Snowflake의 과금 단위

  • Virtual Warehouse Services

가상 웨어하우스 크기를 기준으로 크레딧이 계산됨
가상 웨어하우스가 실행된 상태일 때 초당 크레딧이 계산됨
최소 60초를 기준으로 크레딧이 계산됨

 

  • Cloud Services

컴퓨팅 시간 당 4.4 크레딧의 비율로 크레이 계산됨
일일 컴퓨팅 리소스 사용량의 10%를 초과하는 클라우드 서비스만 청구됨(클라우드 서비스 조정)

 

  • Serverless Services

각 서버리스 기능은 컴퓨팅 시간 당 자체 자체 크레딧 비율을 갖음
서버리스 기능은 컴퓨팅 서비스와 클라우드 서비스로 구성됨
서버리스 기능을 사용할 경우 클라우드 서비스 조정이 적용되지 않음

 



Dollar Value : 스토리지 및 데이터 전송은 달러로 청구됨

  • Data Storage

데이터 스토리지는 데이터베이스 테이블, 내부 스테이지에서 하루 평균 디스크 바이트 수를 기준으로 매월 계산됨
온디멘드, 클라우드 공급자, 지역에 따라 테라바이트 당 고정 비용 비율을 기준으로 비용이 계산됨

 

  • Transfer

데이터를 한 리전에서 다른 리전으로 이동하거나 한 클라우드 플랫폼에서 다른 클라우드 플랫폼으로 이동할 때, 데이터 전송 요금이 적용됨
COPY INTO <location> 커맨드를 사용하여 Snowflake에서 데이터 언로드
다른 리전 또는 클라우드 플랫폼의 Snowflake 계정으로 데이터 복제
Snowflake로 데이터를 전송하는 외부 기능

 

 

 

 

 

 

Udemy의 'Ultimate SnowPro Core Certification Course & Exam - 2023'을 공부한 내용을 바탕으로 작성하였습니다.