터칭 데이터

Snowflake 특징 소개 본문

데이터 웨어하우스(Data Warehouse)

Snowflake 특징 소개

터칭 데이터 2023. 11. 30. 02:59

 

 

Snowflake 소개

 

 

2014년에 클라우드 기반 데이터웨어하우스로 시작됨 (2020년 상장)

지금은 데이터 클라우드라고 부를 수 있을 정도로 발전


글로벌 클라우드위에서 모두 동작 (AWS, GCP, Azure) - 멀티클라우드


데이터 판매를 통한 매출을 가능하게 해주는 Data Sharing/Marketplace 제공하는데 데이터 웨어하우스끼리의 데이터 공유를 매우 간단하게 만들었기 때문입니다.


ETL과 다양한 데이터 통합 기능 제공

 

 

 

 

 

Snowflake 특징

스토리지와 컴퓨팅 인프라가 별도로 설정되는 가변 비용 모델

Redshift 고정비용처럼 노드 수를 조정할 필요가 없고 distkey등의 최적화 불필요

 

 

SQL 기반으로 빅데이터 저장, 처리, 분석을 가능하게 해줌

Redshift ML과 비슷합니다.

비구조화된 데이터 처리와 머신러닝 기능도 제공

 

 

CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원

S3, GC 클라우드 스토리지, Azure Blog Storage도 지원

 

 

배치 데이터 중심이지만 실시간 데이터 처리 지원

 

Time Travel: 과거 데이터 쿼리 기능으로 트렌드를 분석하기 쉽게 해줌

어떤 테이블의 어떤 레코드들이 시간이 흐르며 어떻게 변화했는지 확인할 수 있습니다.

 

 

웹 콘솔 이외에도 Python API를 통한 관리/제어 가능

Worksheet라는 웹 에디터를 제공하며 이 곳에서 SQL과 Python API로 제어, 관리가 가능합니다.

ODBC/JDBC 연결도 지원

 

 

자체 스토리지 이외에도 클라우드 스토리지를 외부 테이블로 사용 가능

 

 

대표 고객: Siemens, Flexport, Iterable, Affirm, PepsiCo, …

IT 분야가 아닌 기업들도 많은데 그만큼 사용하기 쉽고 고객서비스가 잘 되어있기 때문입니다.

 

 

멀티클라우드와 다른 지역에 있는 데이터 공유(Cross-Region Replication) 기능 지원

 

 

기본 구조는 Cloud Services가 기반이 되고 그 위에 Query Processing Layer와 Database Layer를 얹은 형태입니다.

 

 


Snowflake의 계정 구성도

Organization → 1개 이상의 Account → 1개 이상의 Databases

 

계정 구성도에 앞서 우리가 이전에 사용했던 Redshift serverless를 잠시 생각해 봅시다.

 

dev라는 이름의 데이터베이스에 raw_data, analytics, adhoc, pii라는 4개의 스키마를 만들어 사용했었죠?

 

비슷하게 Snowflake의 경우에는 하나의 Account를 만들면 그 아래에 여러 Database를 만들 수 있고 하나의 Database 아래에 여러 Schema 그리고 각 Schema 아래에 여러 테이블을 사용합니다.

 

만약 회사가 굉장히 크다면 여러 부서가 존재할텐데 각 부서마다 Account를 갖고 있을테고 부서별 Account를 모아 Organization를 구성할 수 있습니다.

 

즉, 조직의 규모에 따라 Flexible하게 계정을 구성할 수 있습니다.

 

 

 

 

Organizations:

한 고객이 사용하는 모든 Snowflake 자원들을 통합하는 최상위 레벨 컨테이너
하나 혹은 그 이상의 Account들로 구성되며 이 모든 Account들의 접근권한, 사용트래킹, 비용들을 관리하는데 사용됩니다. 굉장히 큰 규모의 회사가 사용합니다.

 

Accounts:

하나의 Account는 자체 사용자, 데이터, 접근권한을 독립적으로 가집니다.
한 Account는 하나 혹은 그 이상의 Database로 구성됩니다.

보통은 Account 하나로 충분합니다.

 

Databases:

하나의 Database는 한 Account에 속한 데이터를 다루는 논리적인 컨테이너
한 Database는 다수의 스키마와 거기에 속한 테이블과 뷰등으로 구성되어 있습니다.
하나의 Database는 PB단위까지 스케일 가능하고 독립적인 컴퓨팅 리소스를 갖게 됩니다.

 

Redshift serverless 학습에서 가변 비용 데이터 웨어하우스 서비스는 컴퓨팅 자원과 스토리지가 별도로 제공된다고 했었죠? 대개는 컴퓨팅 리소스를 Warehouses라고 부르고 스토리지를 Database라고 부릅니다.

 

그런데 Database 하나마다 Warehouse가 하나씩 종속되는 구조는 아닙니다. 예를 들어 DB는 5개인데 이 5개의 스토리지를 관리하는 컴퓨팅 리소스인 Warehouse는 1개일 수도 있습니다.

 

즉, Warehouses와 Databases는 일대일 관계가 아닙니다.

 

1. 그래서 우리가 이후 실습을 할 때는 Account를 하나 만들겁니다.

2. 이때 2개의 Database가 이미 만들어져 있지만 이와는 별도로 데이터 베이스를 하나 만들고

3. 그 데이터 베이스 안에는 raw_data, anlytics, adhoc 3개의 스키마를 만든 뒤

4. raw_data 스키마 안에는 session_timestamp, session_transaction, user_ session_channel 3개의 테이블들을 만들겁니다.

5. Redshift 실습 때 S3에 올렸던 동일한 csv 파일들을 벌크 업데이트 하는 형태로 테이블에 레코드를 적재하고

6. 적재된 테이블들을 이용해 CTAS로 analytics 스키마 밑에 테이블을 만들어 보겠습니다.

 

 

 

 

 

 

 

 

 

Data Marketplace & Data Sharing

 

 

❖ Data Sharing (“Share, Don’t Move”)

“Data Sharing”: 데이터 셋을 사내 혹은 파트너에게 스토리지 레벨에서 공유하는 방식

 

내가 필요한 데이터를 타인에게서 시간을 들여 내가 있는 쪽으로 Copy해오지 않고 그 사람에게서 접근 권한을 얻어 데이터를 같이 공유하고 사용합니다.

 

 

❖ Data Marketplace

위의 Data Sharing이라는 개념을 이용해 마켓플레이스에서 데이터를 팔아 이익을 창출할 수도 있습니다.

데이터 메시 용어가 생기기 전부터 “데이터 마켓플레이스"라는 서비스 제공

 

 

 

 

 

 

 

Snowflake의 기본 데이터 타입

● Numeric: TINYINT, SMALLINT, INTEGER, BIGINT, NUMBER, NUMERIC, DECIMAL, FLOAT, DOUBLE, REAL.


● Boolean: BOOLEAN.


● String: CHAR, VARCHAR, TEXT, BINARY, VARBINARY.


● Date and Time: DATE, TIME, TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_TZ.


● Semi-structured data: VARIANT (JSONOBJECT.


● Binary: BINARY, VARBINARY


● Geospatial: GEOGRAPHY, GEOMETRY.


● Array: ARRAY


● Object: OBJECT

 

Redshift와 크게 다르지는 않습니다만

JSON이 Native하게 지원되고 좀 더 범용적인 OBJECT 타입 그리고 ARRAY 타입이 존재합니다.

 

덕분에 nested 형태의 데이터들을 다룰 수 있어 컬럼 밑에 컬럼이 존재하고 컬럼의 값이 리스트나 Array여도 처리할 수 있습니다. 즉, Redshift보다 강력합니다. (구글의 BigQuery도 마찬가지입니다.)

 

따라서 그냥 성능만 놓고 보면 데이터 웨어하우스는 Google BigQuery나 Snowflake가 AWS Redshift 보다 더 강력합니다.

 

 

 

 

 

'데이터 웨어하우스(Data Warehouse)' 카테고리의 다른 글

Snowflake Database & Warehouse  (0) 2023.11.30
Snowflake 무료 체험판  (0) 2023.11.30
Redshift 중지/제거하기  (0) 2023.11.30
Redshift ML  (0) 2023.11.30
Redshift Glue 권한 추가 & Spectrum 실습  (0) 2023.11.29