특징1
- 데이터 판매를 통한 매출을 가능하게 해주는 Data Sharing/Marketplace 제공
- 배치 데이터 중심이지만 실시간 데이터(Streams) 처리 지원
- Time Travel
- 과거 데이터 쿼리 기능으로 트렌드를 분석하기 쉽게 해줌
- 스냅샷 잡는다
- Zero Copy Cloning
- 데이터 공유를 아주 효율적으로 제공
- 실제로 모든 데이터가 카피 되는게 아니라 한번 카피 해 놓으면 다음부터는 바뀐 부분만 복사가 되기 때문에 데이터 공유시 오버헤드가 적음
- 별도 인프라를 갖지 않고 글로벌 클라우드(AWS, GCP, Azure) 위에서 모두 동장
특징2
- Snowflake 계정 구조
- 조직(Organization) -> 1개 이상의 계정(Account) -> 1개 이상의 DB
- 하나의 DB는 페타바이트(PB) 규모로 확장 가능하며, 스키마와 테이블로 구성
- 데이터 마켓플레이스
- 스노우플레이크 있는 데이터를 광고하고 이를 유료로 판매 가능
- 데이터 공유(Data Sharing : "Share, Don't Move")
- Zero Copy Cloning을 사용하여 데이터를 복사하거나 클론하지 않고 스토리지 레벨에서 직접 공유 가능
- 멀티클라우드와 다른 지역에 있는 데이터 공유(Cross-Region Replication) 기능 지원
- 자체 인프라 없이 클라우드 업체를 사용. 글로벌 클라우드 업체가 제공해주는 스토리지,서버를 활용하여 자체 DB를 만듦. 업체간 연동이 가능한 멀티 클라우드
- 가장 밑에는 Cloud Services(AWS, Google Cloud, Azure)
- 중간에 스노우플레이크의 Storage Layer(DB, Schemas, Tables)
- 맨 위에 Compute Layer(다수의 Virtual Warehouses)
Compute Layer(=Virtual Warehouse)
테이블의 데이터 적재, 데이터를 기반으로 연산, SQL 명령, Dataframe 명령
Virtual Warehouse
- 다수의 Virtual Warehouse를 동시 유지 가능
- 다수의 Virtual Warehouse들간에 동일한 스토리지(DB/Tables)를 공유 가능
- 단위로 관리 : X-small부터 6X-Large까지 여러가지 크기를 가지며 크기에 따라 과금 달라짐
- 두 가지 유형 존재
- Regular(기본 SQL로 조작)
- Worksheet(Web UI)이나 Notebook 등에서 대화형으로 조작
- Snowflake의 웹 UI에 있는 기능을 Snowsight라고 부름
- Snowflake-connector-python을 통해 파이썬으로 조작
- Snowpark(Pandas Datagram과 흡사하게 조작)
- python, Java, Scala 등을 사용 가능
- 과금
- 크레딧 : 컴퓨팅 리소스 사용 비용을 측정하는 단위 예) SQL쿼리 실행 및 기타 계산 작업
- 1크레딧 비용은 선택한 요금제에 따라 변동
- Standard : $2
- Enterprise : $3
- Business-critical : $4
- 가상 웨어하우스 크기에 따라 크레딧 소비량 결정
- X-small : 1크레딧 / 시간
- 스탠다드로 한시간 사용하면 2불
CREATE OR REPLACE TABLE dev.raw_data.nps(
id int PRIMARY KEY,
created timestamp,
score smallint
);
- 관계형 데이터베이스에서는 PK로 지정되면 기본키 유일성이 보장되어서 같은 id 값을 갖는 레코드는 적재 불가능하지만 모든 빅데이터 기반 데이터 웨어하우스는 일반적으로 기본키 유일성(PK Uniqueness)을 보장하지 않음
- 기본키 유일성이 보장되지 않는데 왜 PK가 존재하느냐? 이 테이블을 만드는 사람이 PK 필드가 유일함을 보장해줄거니 믿고 사용해라 라는 뜻. 테이블을 만드는 엔지니어가 PK로 지정된 필드의 유일성을 보장해야하고 기본키로 지정된 필드가 유일함을 보장해야한다.
- 테이블의 기본키가 잇다라고하면 그 값이 유일함을 보장해야한다. (by UPSERT)
- 즉 동일한 기본키를 갖는 레코드를 중복 적재해도 문제가 없으며 기본키 유일성을 보장하는 것은 데이터 인력의 책임