Data Sharing, Marketplace
를 제공한다. SQL
기반으로 빅데이터 저장, 처리, 분석이 가능하며 비구조화된 데이터 처리도 가능하다.CVS
, JSON
, Avro
, Parquet
등과 같은 다양한 데이터 포맷을 지원한다.Time Travel
기능이 있다.Worksheet
라는 웹 에디터를 제공하며 이 안에서 SQL 및 Python API를 통한 관리, 제어가 가능하고, ODBC와 JDBC도 지원한다.snowflake
를 많이 사용한다.snowflake
는 사용하기 쉽고 고객 지원 서비스가 잘 되어 있다.snowflake
계정 구성도가 Organization
-> 1 + Account
-> 1 + Databases
일반적으로 이렇지만 유연성이 있기 때문에 큰 기업이라면 Organization
부터 중소 기업이라면 Account
부터 데이터베이스
를 구성할 수 있다.
Organization
snowflake
자원들을 통합하는 최상위 레벨의 컨테이너Account
들로 구성되며 Account
들의 접근 권한, 사용 트래킹, 비용들을 관리하는 데 사용Account
Account
는 자체 사용자, 데이터, 접근 권한을 독립적으로 가짐Account
는 하나 혹은 그 이상의 Database
로 구성Databases
Database
는 한 Account
에 속한 데이터를 다루는 논리적인 컨테이너Database
가 PB 단위까지 스케일 가능하며 독립적인 컴퓨팅 리소스를 가지게 되는데 이 컴퓨팅 리소스를 웨어하우스(Warehouse)
라고 부르며 웨어하우스(Warehouse)
와 Database
는 일대일 관계는 아님 Data Sharing
은 데이터 셋을 사내 혹은 파트너에게 스토리지 레벨에서 공유하는 방식을 말한다.Data Sharing
의 기능을 사용하여 내가 가지고 있는 데이터를 무료 혹은 유료로 다른 사람에게 거래하는 것이 Data Marketplace
이다. ✔ 지원해 주는 데이터 타입이 Redshift
와 비교했을 때 더 강력하다.
✔ Array를 지원한다는 것은 Nested Structure
를 처리할 수 있다는 것을 의미한다.
❄️ [Snowflake] 1. Snowflake 시작 - 실습 포스팅
❄️ [Snowflake] 2. Snowflake 초기 환경 설정 및 벌크 업데이트 - 실습 포스팅
그룹(Group)
은 오래된 기술 중 하나이다. Snowflake
는 그룹(Group)
을 지원하지 않는다. 하지만 AWS
는 이전에 시작했다 보니 호환성 레거시 이슈 때문에 사용자 그룹(Group)
을 없앨 수는 없어 그대로 두되 역할(Role)
을 추가해 주었다.그룹(Group)
과 역할(Role)
은 매우 흡사하나 역할(Role)
은 계승이 가능하다.Redshift
에서는 그룹(Group)
을 통해 실습해 주었는데 이번 Snowflake
에서는 역할(Role)
을 통해 권한 설정 실습을 해 주었다.❄️ [Snowflake] 3. Snowflake 사용자 권한 설정
Data Governance
라고 함.Object Tagging
, Data Classification
, Tag based Masking Policies
, Access History
, Object Dependencies
이 있는데 Snowflake
의 Enterprise
에서 쓸 수 있는 기능이다.Object(Database, Schema, Table, View 등)
에 태그를 붙일 수 있는 기능을 말한다.CREATE TAG
를 통해 생성 가능하며 해당 TAG
는 모든 구조에 따라 계승이 가능하다.TAGGING
하려는 목적이 크다.Object Tagging
이 개인 정보 관리를 위해 사용하기는 하지만 매뉴얼하게 관리하기가 쉽지 않아 이 문제를 해결하기 위해 Data Classification
을 사용한다.시스템 태그(System Tag)
로 적용한다. 이때 두 개의 카테고리가 존재한다.PRIVACY_CATEGORY
: 상위 레벨 (IDENTIFIER 개인 정보 개인 식별자, QUASI_IDENTIFIER 유일하게 개인을 식별할 수 있는 ID는 아니지만 이런 식별자가 여러 개가 모이면 개인을 지칭할 수 있어지는 개인 준식별자, SENSITIVE 개인 정보는 아니나 민감한 정보)SEMANTIC_CATEGORY
: 하위 레벨로 좀 더 상세한 정보Tag
에 액세스 권한을 지정해 주고, 이런 개인 정보 같은 Tag
가 붙은 Object에 누가 접근할 수 있는지에 대한 권한을 부여해 주는 것을 말한다.Access History
를 통해 추적된 활동에 대해 알림을 보내 주기도 한다.Data Governance
와 시스템 무결성 유지를 목적으로 한다.Object Dependencies
는 이로 인해 발생하는 영향을 자동으로 식별해 준다.snowflake
는 데이터 웨어하우스 내에서 이 기능을 제공한다.Marketplace
를 선택해 주면 Marketplace
가 나온다.Snowflake
를 사용하는 회사들이 많다 보니 해당 회사들이 외부 데이터 소스를 쉽게 연동할 수 있는 plugin
과 같은 기능을 제공한다.Stripe Data Pipeline
의 경우 구매 기록을 Stripe
에 남길 때 해당 파이프라인을 데이터 엔지니어가 작성하게 되는데 패턴이 워낙 많고 작성하는 데 걸리는 시간이 있다 보니 다음과 같이 Marketplace
에서 해당 Stripe Data Pipeline
을 클릭해 주어 configuration set up
을 해 주면 그 회사의 파이프라인, 트랜잭션들이 스키마 밑에 테이블들로 복제되어 사용할 수 있게 된다. Data
-> Private Sharing
을 통해 내가 공유한 데이터와 공유받은 데이터들을 볼 수 있다.Account
와 공유하고 싶을 때는 우측 상단에 있는 Share
버튼을 눌러 공유할 수 있다.Activity
-> Query/Copy/Task History
를 선택해 확인할 수 있다.Query History
란 SELECT, DELETE, UPDATE 등과 같은 SQL 쿼리문
에 대한 로그 기록이 남는 것이고, 다음과 같이 STATUS
라고 해당 SQL 쿼리문
이 성공했는지, 실패했는지에 대한 로그도 남게 된다.Copy History
란 COPY
명령어를 통해 벌크 업데이트를 했을 때의 기록이 남는다.TasK History
는 특정한 SQL을 내가 주기적으로 실행해 주는 것을 TASK
라고 하고 이것에 대한 History
기록을 보여 주는 것이다.Access History
와 Query History
의 차이는 Query History
는 단순하게 쿼리문에 대한 기록만 남지만 Access History
는 더 상세하게 어떤 테이블에 어떤 컬럼이 접근돼 있었고, 그 컬럼의 특성까지 자세하게 기록한 것이다.snowflake
관련이라 학습한 내용에 기재되어 있다.