본문 바로가기
TechStudy/BigDataTools

Snowflake

https://www.coursera.org/learn/spark-hadoop-snowflake-data-engineering

 

Spark, Hadoop, and Snowflake for Data Engineering

Duke University에서 제공합니다. e.g. This is primarily aimed at first- and second-year undergraduates interested in engineering or science, along with ... 무료로 등록하십시오.

www.coursera.org

snowflake: 저장. 연산 플랫폼  (clouds기반), Snowflake SQL 사용.

 

[bigdata 저장구조]:

1) Shared Everything(전통, simple 구조):  non big data solution에 적합.

2) Shared Disk(개별 연산 ndoe, 같은 stroage): 같은 data의 다른 node이므로 동시 작업시 개별 공간의 연산 효율성↓인 단점 有

3) Shared Nothing(개별 연산node & 개별 stroage)

 

[Snowflake 저장 구조]: Hybrid approach(shared disk + shared nothing)

 -> 전체 데이터는 공유(share) + 각 연산 node에 할당된 개별 저장 data 有

 

1. Cloud-Native Data Warehousing: 별도 인프라 없이 유연함과 확장가능한 플랫폼

2. Data Integration and ETL: integrate data 可 + data pipelines for ingestion, transformation, and loading 可

3. Data Security and Compliance:  암호화, 접근제한, 로그관리, masking을 통한 보

4. Scalability and Concurrency:  확장성 및 동시 진행

5. SQL-Based Querying and Performance Optimization: 기본 SQL 사용 可

 

[snowflake 30일 무료 체험 가입 후에 UI 탐색]

1. database: data가 저장되는 곳.

2. Admin - warehouse: 연산공간(쿼리 등)

3. 데이터 로드: local이든, cloud storage든, 아무곳 可

4. 쿼리데이터: 데이터 로드시, SQL쿼리 실행 可 (standard SQL syntax)

5. 그외: data sharing, data masking, automated query optimization, documentation 제공.

 

Data engineer로서 snowflake 학습도 중요함.

 

 

[Snowflake layers]

1.Cloud Services

다른 layer와 상호작용위한 layer.

보안, 승인, 권한이 관되는 곳.

쿼리 최적화 시행되는 곳. (모든 쿼리는 compute layer전에 먼저 여길 거침)

 

2.Compute - Virtual Warehouses

nodes는 Snowflake가 알아서 배정.

warehoueses(1. Standard warehouse 2. Snowpark warehouse)와 resources는 분리. 2번은 많은 메모리 필요한 일(ML)

수직, 수평적 scale 可

자동 stop, resume 기능 有

 

3. Database Storage (Snowflake가 전적으로 관리)
압축, 암호화되어 저장. Snowflake SQL로만 접근 可

 

 

 


실습

 

 

Worksheets에서 새로 만들고(SQL, python중 여기선 SQL)
database에서 sample data와 schemas를 지정해준다.

 

 

그리고 이렇게 쿼리를 지정해서 run(재생버튼)을 누르면

 

 

이렇게 Table 쿼리 조회결과와 함께, 오른쪽에 쿼리 조회 시간 및 조회된 표와 관련된 부가적인 자동 그래프들이 생성된다.

TABLE 생성, 지우기, 권한 변경 등 모든 SQL 작업이 가능하다.

 

 

 

warehouse 만들기와 설정은 이렇게 된다.

 

 

 

Admin - User에 가면

 

 

Roles라는 곳이 있다.

 

이렇게 새로 role과 권한을 만들 수 있다. API_ROLE을 USERADMIN으로 만들었더니 위의 Accountadmin을 상속받는 하나의 role 모양이 형성되었다.

 

 

 

 

 

 

Data - database에서 data를 만들고 table을 만들어보고 유저별 권한 설정을 해보자

 

 

여기서 database 임의로 만듬(TEST)

 

제약조건을 담는 schema 통(이름:= CDM)을 만든다

 

 

그리고 CDM에서 create - table - standard를 누르면

 

 

이렇게 java느낌(?)의 창이 나온다.

 

이렇게 표 이름, 컬럼 이름, 컬럼 타입(string 등)을 입력해주고 create Table을 누르면

 

 

 

 

이렇게 만들어지는데 DEMO_1을 누르면

 

이렇게 sql 쿼리로 정의된 table 정의서가 나온다.

 

권한도 현재 Accountadmin에만 되어있는데 옆의 버튼 (+ Privilege)를 누르면

 

이런식으로 새로만든 role인 API_ROLE에 권한을 부여할 수 있다.

 

 

 

 

권한은 여기서 눌러서 바꿀 수 있는데 API_ROLE로 들어가면

 

 

 

 

권한이 없으면 TEST라는 DB를 눌러도 아무것도 나오지 않는다.

 

 

따라서 TEST, CDM, Tables 3군데 모두에 각각 API_ROLE에 대해 권한을 부여해야한다.

 

 

권한 부여할 때 이렇게 grant option도 체크한다.

 

 

 

갱신을 위한 새로고침은 여기서 한다.

 

 

 

 

API_ROLE에서 안보이던 정보가 보이기 시작했다.

 

권한은 기본 ACCOUNT_ADMIN이 가지고 있던 것들을 기준으로 하나하나 추가한다.

 

 

 

 

쿼리 연산 공간인 warehouse에 만든 TEST도 권한을 부여해야 다른 유저가 쓸 수 있다. (제일 밑에 있다.)

 

 

 

 

 

똑같이 권한을 부여하자.

(!) Modify 권한 부여는 보통의 리소스 사용과정에서 매우 비싸므로 일반적으로 지양된다.

 

 

 

worksheet로 돌아가서 새 SQL sheet를 보면

 

TEST warehouse가 API_ROLE 유저도 접근이 가능하다.

 

 

db와 schemas도 선택해주고

 

 

만든 warehouse인 TEST 안에서 쿼리 연산 수행: Use warehouse TEST;

그리고 실행을 해주면("schema".표이름  형식의 출처)

내용이 없어서 결과물은 없지만 잘 실행이 된다.

 

 


Snowflake는 sql뿐만 아니라 python connetor로 python을 사용할 수 있다.

 

https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-install

 

Installing the Python Connector | Snowflake Documentation

Installing the Python Connector To install the latest Python Connector for Snowflake, use: pip install snowflake-connector-python The source code for the Python driver is available on GitHub. Prerequisites Requires Python version 3.8 or later. For a list o

docs.snowflake.com

 

공식 문서에서 설치 연동법을 참조한다.

 

 

 

728x90
반응형