Snowflake ์์๋ณด๊ณ , S3์์ COPYํด๋ณด๊ธฐ - TIL230525
๐ KDT WEEK 8 DAY 4 TIL
- Snowflake ์์๋ณด๊ธฐ
- Snowflake ๊ฐ๋จ์ค์ต (use AWS)
- Data Governance
๐ฅ Snowflake
- ๊ธ๋ก๋ฒ ํด๋ผ์ฐ๋(AWS, GCP, Azure ๋ฑ) ์์์ ๋ชจ๋ ๋์
- ๋ฐ์ดํฐ ํ๋งค๋ฅผ ํตํ ๋งค์ถ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ Data Sharing/Marketplace ์ ๊ณต
- ETL๊ณผ ๋ค์ํ ๋ฐ์ดํฐ ํตํฉ ๊ธฐ๋ฅ ์ ๊ณต
- ์คํ ๋ฆฌ์ง์ ์ปดํจํ ์ธํ๋ผ๊ฐ ๋ณ๋์ธ ๊ฐ๋ณ ๋น์ฉ ๋ชจ๋ธ
- SQL๊ธฐ๋ฐ์ ๋น ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ, ๋ถ์ ๊ฐ๋ฅ + ๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- CSV, JSON, Avro, Parquet ๋ฑ ๋ค์ํ ํฌ๋งท ์ง์
Snowflake์ ์ฃผ์ ๊ฐ์ฒด
1. Organizations
ํ ๊ณ ๊ฐ์ด ์ฌ์ฉํ๋ ๋ชจ๋ Snowflake ์์๋ค์ ํตํฉํ๋ ์ต์์ ๋ ๋ฒจ ์ปจํ ์ด๋
ํ๋ ์ด์์ Account๋ค๋ก ๊ตฌ์ฑ๋์ด ๊ตฌ์ฑ๋ Account๋ค์ ์ ๊ทผ๊ถํ, ์ฌ์ฉํธ๋ํน, ๋น์ฉ๋ค์ ๊ด๋ฆฌํ๋ค
2. Accounts
์์ฒด ์ฌ์ฉ์, ๋ฐ์ดํฐ, ์ ๊ทผ๊ถํ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋ค.
ํ๋์ด์์ Database๋ค๋ก ๊ตฌ์ฑ๋๋ค.
3. Databases
ํ Account์ ์ํด์ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฃจ๋ ๋ ผ๋ฆฌ์ ์ธ ์ปจํ ์ด๋
๋ค์์ ์คํค๋ง์ ๊ทธ ์์ ์ํ ํ ์ด๋ธ, ๋ทฐ ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
PB๋จ์๊น์ง ์ค์ผ์ผ ๊ฐ๋ฅํ๋ฉฐ ๋ ๋ฆฝ์ ์ธ ์ปดํจํ ๋ฆฌ์์ค(Warehouses)๋ฅผ ๊ฐ๊ฒ ๋๋ค.
ํ์ง๋ง Database์ Warehouse๋ ์ผ๋์ผ ๊ด๊ณ๋ ์๋๋ค.
Snowflake ๋น์ฉ๊ตฌ์กฐ
- ์ปดํจํ ๋น์ฉ : ํฌ๋ ๋ง
- ์คํ ๋ฆฌ์ง ๋น์ฉ : TB ๋น ๊ณ์ฐ
- ๋คํธ์ํฌ ๋น์ฉ : ๋์ผ์ง์ญ + ๋์ผํด๋ผ์ฐ๋ ์ธ ๋ฐ์ดํฐ ์ ์ก์ TB๋น ๊ณ์ฐ
Snowflake ์คํ ๋ค๋(๋ฌด๋ฃ) ์์ํ๊ธฐ
Snowflake Trial
signup.snowflake.com
Snowflake ๊ฐ์ ํ ๋ค์์ ๋ก๊ทธ์ธํ ๋๋ Snowflake๊ฐ ์ค ๋ก๊ทธ์ธ ๋งํฌ๋ก ์ ์ํด์ผ ํ๋ค๋ ๊ฑธ ์์ง๋ง์.
๐ฆ Snowflake ์ค์ต
Snowflake์์ ์คํค๋ง ์์ฑํ๊ธฐ
์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง ์์ฑ์ ํด๋ณด๊ฒ ๋ค.
SQL๋ฌธ์ ์คํํ๊ธฐ ์ํด ์ํฌ์ํธ์์ ์์ ํด์ผํ๋ค.
๋ค์์ Snowflake์ ๋ก๊ทธ์ธํ๋ฉด ์ฒ์ ๋ณผ ์ ์๋ ํ๋ฉด์ด๋ค.
์กฐ์ฌํด์ผํ ์ ์, DB ์์ฑ๊ณผ ๊ฐ์ ๋ช ๋ น์ ACCOUNTADMIN ์ ์ ๋ง ๊ฐ๋ฅํ๋ค.
์ผ์ชฝ ์๋จ์ ์ ์ ๊ฐ ACCOUNTADMIN์ธ์ง ํ์ธํ๊ณ Worksheets๋ฅผ ์ด์ฉํ์.
Worksheets > ์ค๋ฅธ์ชฝ ์๋จ์ ํ๋ + ๋ฒํผ์ ํด๋ฆญํ์ฌ ์๋ก์ด ์ํฌ์ํธ๋ฅผ ์์ฑํ๋ฉด ์๋ ํ๋ฉด์ ํ์ธํ ์ ์๋ค.
์ฒ์ ์์ฑ๋ ์ํฌ์ํธ๋ ์์ฑ๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ฆ์ด ์ง์ด์ง๋ค.
์ด๋ฆ์ ํด๋ฆญํ๋ฉด ๋ณ๊ฒฝํ ์ ์๋๋ฐ, ๋๋ Setup-Env๋ก ์ง์ด์คฌ๋ค.
Snowflake์์ AWS ์ ๊ทผํ๊ธฐ
Snowflake์์๋ Redshift์ฒ๋ผ COPY ์ปค๋งจ๋๋ฅผ ํตํด AWS S3์ ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ์ ์ ์ฅํ ์ ์๋ค.
ํ์ง๋ง Snowflake์์ AWS์ ์ ๊ทผํ๋ ค๋ฉด AWS์ ์ก์ธ์ค ํค๊ฐ ํ์ํ๋ค.
S3 read๋ง ๊ฐ๋ฅํ ์ฌ์ฉ์๋ฅผ ํ๋ ์๋ก๋ง๋ค์ด ์ก์ธ์ค ํค๋ฅผ ์์ฑํด๋ณด์.
AWS IAM > Users ์์ ์๋ก์ด ์ฌ์ฉ์๋ฅผ ๋ง๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๊ถํ์ ์ฐ๊ฒฐํ๋ค.
S3๋ฅผ readํ ์ ์๋ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์์ผ๋ ์ด์ ํด๋น ์ฌ์ฉ์์ ์ก์ธ์ค ํค๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
IAM > ์ฌ์ฉ์ > ํด๋น ์ฌ์ฉ์ > ๋ณด์ ์๊ฒฉ ์ฆ๋ช > ์ก์ธ์ค ํค ๋ง๋ค๊ธฐ > AWS ์ธ๋ถ์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ > ์์ฑ
์ด์ ๋ง๋ค์ด์ง Key๋ฅผ ํตํด COPY ์ปค๋งจ๋๋ฅผ ์ฌ์ฉํด๋ณด์.
Snowflake์์ COPY ์ปค๋งจ๋ ์ฌ์ฉํ๊ธฐ
Snowflake์์ COPY ์ปค๋งจ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
COPY INTO ํ
์ด๋ธ์ด๋ฆ
FROM 's3://sunho-test-bucket/test_data/session_timestamp.csv' -- ์ ๊ทผํ ์์น
credentials=(AWS_KEY_ID='*****' AWS_SECRET_KEY='*****') -- AWS ์ก์ธ์ค ํค
FILE_FORMAT = (type='CSV' skip_header=1 FIELD_OPTIONALLY_ENCLOSED_BY='"'); -- CSV์ ๊ฒฝ์ฐ
Redshift์ COPY ๋ช ๋ น์ด๊ฐ ์กฐ๊ธ ๋ค๋ฅธ ๊ฒ์ ์ ์ ์๋ค.
์๋ ์ด๋ฏธ์ง๋ Snowflake ์ํฌ์ํธ์ COPY ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๋ชจ์ต์ด๋ค.
AWS ์ก์ธ์ค ํค์ ๋น๋ฐ ์ก์ธ์ค ํค๋ ๋ฐ๊ธ๋ฐ์ ํค๋ฅผ ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๐ง Data Governance
ํ์ํ ๋ฐ์ดํฐ๊ฐ ์ ์ฌ์ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉ๋จ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ก์ธ์ค
๋ฐ์ดํฐ ํ์ง ๋ณด์ฅ๊ณผ ๋ฐ์ดํฐ ๊ด๋ จ ๋ฒ๊ท ์ค์๋ฅผ ๋ชฉ์ ์ผ๋ก ํจ
- ๋ฐ์ดํฐ ๊ธฐ๋ฐ ๊ฒฐ์ ์์์ ์ผ๊ด์ฑ
- ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ๊ฐ์น ๋ง๋ค๊ธฐ > Citizen data scientist๊ฐ ๋ ํจ์จ์ ์ผ๋ก ์ผํ ์ ์๊ฒํจ
- ๋ฐ์ดํฐ ๊ด๋ จ ๋ฒ๊ท ์ค์ > ์ ์ ํ ๊ถํ ์ค์ ๊ณผ ๋ณด์ ํ๋ก์ธ์ค
Data Governance ๊ด๋ จ ์๋น์ค
Enterprise ๋ ๋ฒจ์์๋ง ๊ฐ๋ฅ(๋ฌด๋ฃ๋ฒ์ ์ธ ์คํ ๋ค๋๋ ๋ถ๊ฐ)
Object Tagging
๋ฌธ์์ด(ํ๊ทธ)์ Snowflake ๊ฐ์ฒด์ ์ง์ ๊ฐ๋ฅํ๋ค.
Object : Organization๋ถํฐ DB, ์ ์ , ํ ์ด๋ธ, ์ ์ฑ ๊น์ง Snowflake์ ๋ชจ๋ ๊ฐ์ฒด
ํ๊ทธ๋ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ๊ณ์น๋๋ค. ex) ๊ฐ์ธ์ ๋ณด์ ๊ด๋ จ๋ ๋ฐ์ดํฐ ๋ฌถ๊ธฐ
Data Classification
Snowflake๊ฐ ํ ์ด๋ธ์ ์๋ ์ปฌ๋ผ์ ๋ณด๊ณ ์์์ ํ๊ทธ๋ฅผ ๋ฌ์์ฃผ๋ ์๋น์ค
์๋ณ์(Identifier)์ ์ค์๋ณ์(Quasi_identifier)๋ฅผ ๊ตฌ๋ถํด์ฃผ์ง๋ง, ์์ด(US)๋ง ๊ฐ๋ฅ
์ ์ฉ ๋จ๊ณ
- Analyze : ์ ์ฉ๋ ํ ์ด๋ธ์ ๊ฐ์ธ์ ๋ณด๋ ๋ฏผ๊ฐ์ ๋ณด๊ฐ ์๋ ์ปฌ๋ผ์ ๋ถ๋ฅ
- Review : ์ฌ๋์ด ๋ถ๋ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ๋ฆฌ๋ทฐํ๊ณ ํธ์ง
- Apply : ์ต์ข ๊ฒฐ๊ณผ๋ฅผ System Tag๋ก ๋ถ๋ฅํ์ฌ ์ ์ฅ
Tag based Masking Policies
๋ถ์ฌ๋ Tag์ ์ก์ธ์ค ๊ถํ์ ์ง์ ํด์ฃผ๋ ์๋น์ค
๋ณดํต ๊ฐ์ธ์ ๋ณด์ ๊ฐ์ ํ๊ทธ์ ๋ถ์ฌํ๋ ์ฉ๋๋ก ๋ง์ด ์ฌ์ฉ๋๋ค.
Access History
๋ฐ์ดํฐ ์ ๊ทผ์ ๋ํ ๊ฐ์ฌ ์ถ์ ์ ์ ๊ณตํ์ฌ ๋ณด์๊ณผ ๊ท์ ์ ์ค์ํ๊ธฐ ์ํ ์๋น์ค
- ์ ์ฌ์ ์ธ ๋ณด์ ์๋ฐ์ด๋ ๋ฌด๋จ ์ก์ธ์ค ์๋์ ์กฐ์ฌ๊ฐ ๊ฐ๋ฅํ๋ค.
- ์บก์ฒ๋ ์ ๋ณด์๋ ์ฌ์ฉ์ ์ ์, IP ์ฃผ์, ํ์์คํฌํ ๋ฑ ์ธ๋ถ์ ๋ณด๋ฅผ ํฌํจํ๋ค.
- DB ๋ก๊ทธ์ธ, ์คํ๋ ์ฟผ๋ฆฌ, ํ ์ด๋ธ ๋ฐ ๋ทฐ ์ก์ธ์ค, ๋ฐ์ดํฐ ์กฐ์ ์์ ๋ฑ์ ์ด๋ฒคํธ๋ก ์ถ์ ํ๋ค.
Object Dependencies
ํ ์ด๋ธ ์ด๋ฆ์ด๋ ์ปฌ๋ผ ๋ฑ์ ๋ณ๊ฒฝ ๋๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ ์ด๋ก ์ธํ ์ํฅ์ ์๋ณํด์ฃผ๋ ์๋น์ค
๋ฐ์ดํฐ ๊ฑฐ๋ฒ๋์ค์ ์์คํ ๋ฌด๊ฒฐ์ฑ ์ ์ง๋ฅผ ๋ชฉ์ ์ผ๋ก ํ๋ค.
ex) ์ค์ํ ๋งค์ถ์งํ์ ๊ด๋ จ๋ ์ปฌ๋ผ์ ๋ณ๊ฒฝํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ค ์ํฅ์ด ์๋์ง ๋ณด๊ณ
๋ํ ๊ณ์น ๊ด๊ณ ๋ถ์ ์๋น์ค๋ฅผ ์ ๊ณตํ์ฌ ๋ ์ธ๋ฐํ ๋ณด์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
ex) ์ด๋ค ํ ์ด๋ธ์ ๊ฐ์ธ์ ๋ณด ์ปฌ๋ผ์ด ์๋ก์ด ํ ์ด๋ธ์ ๋ง๋ค๋ ์ฌ์ฉ๋๋ค > ๊ฐ์ธ์ ๋ณด ์ปฌ๋ผ์ ๊ถํ ๋ฐ ํ๊ทธ ๊ณ์น
Snowflake์ ์ค์ํ ๊ธฐ๋ฅ ์ค ํ๋๋ผ๊ณ ํ๋ค.