๐ย ๊ณต๋ถ ๋ด์ฉ
Snowflake
์๊ฐ
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ์จ์ดํ์ฐ์ค
- “๋ฐ์ดํฐ ํด๋ผ์ฐ๋”
ํน์ง
๊ฐ๋ณ๋น์ฉ ๋ชจ๋ธ
- storage, computing infra
๋ณ๋ ์ค์ ๊ฐ๋ฅ
- ๋ ธ๋ ์ ์กฐ์ , distkey(๋ฐ์ดํฐ skew ๋ฌธ์ ) ๋ฑ ์กฐ์ ๋ถํ์
- storage, computing infra
๋ฐ์ดํฐ ์ฒ๋ฆฌ
- SQL ๊ธฐ๋ฐ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ML ๊ธฐ๋ฅ ์ ๊ณต
๋ฉํฐํด๋ผ์ฐ๋
- AWS, GCP, Azure ๊ณผ ๊ฐ์ ๊ธ๋ก๋ฒ ํด๋ผ์ฐ๋ ์์์ ๋ชจ๋ ๋์(๋ฉํฐํด๋ผ์ฐ๋)
- ๋ค์ํ ํฌ๋งท, ๋ค์ํ ํ๋ซํผ์ ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง(S3, GC Cloud Storage ๋ฑ) ์ง์
๋ค๋ฅธ ์ง์ญ ๋ฐ์ดํฐ ๊ณต์ (Cross-Region Replication) ๊ธฐ๋ฅ ์ง์
Time travel
- ์ ์๋ ๊ธฐ๊ฐ ๋ด์ ๋ชจ๋ ์์ ์์ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๋ ๊ธฐ๋ฅ
- ์ค๋ธ์ ํธ ๋ณต์, ๊ณผ๊ฑฐ ์์ ๋ฐ์ดํฐ ๋ณต์ ํน์ ๋ฐฑ์ , ์ง์ ๋ ๊ธฐ๊ฐ ๋์ ๋ฐ์ดํฐ ์ฌ์ฉ/์กฐ์ ๋ถ์ ๋ฑ์ผ๋ก ํ์ฉ ๊ฐ๋ฅ
Python API ์ ๊ณต
Snowflake ๊ณ์ ๊ตฌ์ฑ
- Organizations
- ํ๋ ํน์ ๊ทธ ์ด์์ Account๋ก ๊ตฌ์ฑ๋จ
- Accounts
- ํ๋ ํน์ ๊ทธ ์ด์์ DB๋ก ๊ตฌ์ฑ๋จ
- Databases
- Account์ ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ปจํ ์ด๋
Warehouse
(์ปดํจํ ๋ฆฌ์์ค)์ ์ผ๋์ผ ๊ด๊ณ๊ฐ ์๋ (1 Warehouse - 4 Databases)
- Organizations
Data Marketplace
Data Sharing
“Share, Don’t Move”
Dataset์Storage level
์์ ๊ณต์ ํ๋ ๋ฐฉ์Activity
- Query/Copy/Task History
๋น์ฉ
์ปดํจํ ๋น์ฉ : Credit
- Credit : ์ฟผ๋ฆฌ ์คํ, ๋ฐ์ดํฐ ๋ก๋ ๋ฑ ์์ ์ํ์ ์๋น๋๋ ๋ฆฌ์์ค ๋จ์
- 1 Credit = $2~$4
- Snowflake Warehouse : ์ฌ์ฉ์๊ฐ ๋น ํฌ๋ ๋ง ์ฒญ๊ตฌ
์คํ ๋ฆฌ์ง ๋น์ฉ
- TB ๋น ๋น์ฉ ์ฒญ๊ตฌ
๋คํธ์ํฌ ๋น์ฉ
- ์ง์ญ๊ฐ, ๋๋ (๋ค๋ฅธ)ํด๋ผ์ฐ๋๊ฐ ๋ฐ์ดํฐ ์ ์ก ์ TB ๋น ๋น์ฉ ์ฒญ๊ตฌ
Data Governance
ํ์ํ ๋ฐ์ดํฐ๊ฐ ์ ์ฌ์ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉ๋จ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ก์ธ์ค
Object Tagging
Snowflake object
์ํ๊ทธ๋ฅผ ์ง์
ํ ์ ์๋ ๊ธฐ๋ฅ
Object : Organization, Account, Schema, View, …
- ์์ฑ :
CREATE TAG
- Snowflake์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ์์คํ ํ๊ทธ ์กด์ฌ
- ์ง์ ๋ tag๋ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ๊ณ์น๋จ
Data Classification
Snowflake๊ฐ
๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋ถ๋ฅํ์ฌ ํ๊ทธ๋ฅผ ์ง์
ํด์ฃผ๋ ๊ธฐ๋ฅ
‘๋งค๋ด์ผํ๊ฒ ๊ด๋ฆฌํ๊ธฐ๊ฐ ์ด๋ ค์ด’ Object Tagging์ ๋จ์ ์ ๋ณด์ํด์ฃผ๊ธฐ ์ํด ๋ฑ์ฅ
- Analyze : ํ ์ด๋ธ์์ ๊ฐ์ธ์ ๋ณด๋ ๋ฏผ๊ฐ์ ๋ณด๊ฐ ์๋ ์ปฌ๋ผ๋ค์ ๋ถ๋ฅ
- Review : ๋ถ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๋(๋ฐ์ดํฐ ์์ง๋์ด๋ฑ)์ด ์์ ๋ฑ ๋ฆฌ๋ทฐ
- Apply : ์ต์ข
๊ฒฐ๊ณผ๋ฅผ System Tag๋ก ์ ์ฉ
- SNOWFLAKE.CORE.PRIVACY_CATEGORY (์์๋ ๋ฒจ)
- IDENTIFIER, QUASI_IDENTIFIER, SENSITIVE
- SNOWFLAKE.CORE.SEMANTIC_CATEGORY (ํ์๋ ๋ฒจ - ๋ ์ธ๋ถ์ ๋ณด)
- SNOWFLAKE.CORE.PRIVACY_CATEGORY (์์๋ ๋ฒจ)
- ์๋ณ์์ ์ค์๋ณ์
- ์๋ณ์(Identifier) : ๊ฐ์ธ์ ๋ฐ๋ก ์ง์นญํ ์ ์๋ ์ ๋ณด
- ์ค์๋ณ์(Quasi Identifier) : ์กฐํฉ์ ํตํด ๊ฐ์ธ์ ์ง์นญํ ์ ์๋ ์ ๋ณด
PRIVACY_CATEGORY SEMANTIC_CATEGORY IDENTIFIER EMAIL, NAME, PHONE_NUMBER, … QUASI_IDENTIFIER AGE, GENDER, …
Tag based Masking Policies
ํ๊ทธ๋ฅผ ๊ธฐ๋ฐ
์ผ๋ก ์ ์ ์ ๊ทธ๊ถํ์ ์ง์
ํ๋ ๊ธฐ๋ฅ
- Tag์ ์ก์ธ์ค ๊ถํ์ ์ง์
- Tag๊ฐ ์ง์ ๋ Snowflake Object์ ์ก์ธ์ค ๊ถํ์ ๊ทธ์ ๋ง์ถฐ ์ ํํ๋ ๋ฐฉ์
- ๊ฐ์ธ์ ๋ณด์ ๊ฐ์ Tag์ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ ๋ฐฉ์์ผ๋ก ๋ง์ด ์ฌ์ฉ๋จ
Access History
๋ฐ์ดํฐ ์ก์ธ์ค์ ๋ํ ๊ธฐ๋ก์ ์ ๊ณตํ์ฌ ๊ฐ์ฌ ์ถ์ ์ ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ ๋ณด์๊ณผ ๊ท์ ์ค์
๋ชจ๋ ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์์ ์ ๊ณต๋๊ณ ์๋ ๊ธฐ๋ฅ
'Access History'
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ก๊ทธ์ธ, ์คํ๋ ์ฟผ๋ฆฌ, ํ ์ด๋ธ ๋ฐ ๋ทฐ ์ก์ธ์ค, ๋ฐ์ดํฐ ์กฐ์ ์์
- ์ ์ฌ์ ์ธ ๋ณด์ ์๋ฐ์ด๋ ๋ฌด๋จ ์ก์ธ์ค ์๋์ ์กฐ์ฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ค
- ์บก์ฒ๋ ์ ๋ณด : ์ฌ์ฉ์ ์ ์, IP ์ฃผ์, ํ์์คํฌํ ๋ฐ ๊ธฐํ ๊ด๋ จ ์ธ๋ถ ์ ๋ณด ํฌํจ
Object Dependencies
ํ ์ด๋ธ์ด๋ ๋ทฐ ๋ฑ
Object๋ฅผ ์์
ํ ๋ ์ด๋ก ์ธํ์ํฅ์ ์๋์ผ๋ก ์๋ณ
ํ๋ ๊ธฐ๋ฅ
๋ฐ์ดํฐ ๊ฑฐ๋ฒ๋์ค์ ์์คํ ๋ฌด๊ฒฐ์ฑ ์ ์ง๋ฅผ ๋ชฉ์ ์ผ๋ก ํจ
- ex: ํ ์ด๋ธ ์ด๋ฆ์ด๋ ์ปฌ๋ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฒฝ์ฐ
- ๊ณ์น ๊ด๊ณ ๋ถ์์ ํตํ ๋ ์ธ๋ฐํ ๋ณด์ ๋ฐ ์ก์ธ์ค ์ ์ด
- ์ด๋ค ํ
์ด๋ธ์ ๊ฐ์ธ์ ๋ณด ์ปฌ๋ผ์ด ์๋ก์ด ํ
์ด๋ธ์ ๋ง๋ค๋ ์ฌ์ฉ๋๋ค๋ฉด?
- ์๋ณธ ํ ์ด๋ธ์์์ ๊ถํ ์ค์ ์ด ๊ทธ๋๋ก ์ ํ๋จ (Tag ํฌํจ)
- ์ด๋ค ํ
์ด๋ธ์ ๊ฐ์ธ์ ๋ณด ์ปฌ๋ผ์ด ์๋ก์ด ํ
์ด๋ธ์ ๋ง๋ค๋ ์ฌ์ฉ๋๋ค๋ฉด?
Snowflake ํ์ฉ ์ค์ต
๊ณ์ ์์ฑ
๋ฌด๋ฃ ์ํํ ๊ณ์ ์์ฑ
๋ฌด๋ฃ๊ณ์ ์ ๋ณ๋์ ๋ก๊ทธ์ธ ๋งํฌ๋ฅผ ํตํด ์ ์ํด์ผ ํจ
์ค์ต ์ฝ๋
Schema
|
|
db & schema ์์ฑ
|
|
table ์์ฑ
- session_transaction, user_session_channel, session_timestamp ์ธ ๊ฐ์ ํ ์ด๋ธ ์์ฑ
|
|
s3 data ์ฐ๊ฒฐ
- S3 read ๊ถํ์ ๊ฐ์ง IAM User ์์ฑ & ACCESS KEY๋ฅผ ๋ฐ๊ธ
- COPY command๋ก ๋ฐ์ดํฐ ํ์ผ์์ ์ถ์ถํ์ฌ ์ ์ฅ
|
|
- analytics schema์ ํ ์ด๋ธ์ ์์ฑํ๊ณ ๋ฐ์ดํฐ๊ฐ ์ ๋ถ๋ฌ์์ก๋์ง ํ์ธ
|
|
Role & User ์์ฑ
|
|
๊ฐ ROLE์ ๊ถํ ์ค์
|
|
๐ย CHECK
(์ด๋ ต๊ฑฐ๋ ์๋กญ๊ฒ ์๊ฒ ๋ ๊ฒ ๋ฑ ๋ค์ ํ์ธํ ๊ฒ๋ค)
Snowflake SQL
“Snowflake supports standard SQL”, including a subset of ANSI SQL:1999 and the SQL:2003 analytic extensions. Snowflake also supports common variations for a number of commands where those variations do not conflict with each other.
Snowflake Object Hierachy
โ ๋๋ ์
๊ฐ์๋ Snowflake์ ๋ํด ๋ฐฐ์ฐ๊ณ , ๊ฐ๋จํ๊ฒ ํ์ฉํด๋ณด๋ ๋ด์ฉ์ด์๋ค. ์ ๋ฐ์ ์ผ๋ก ์ด๋ ค์ด ๊ฑด ์์๋ค. notebook์ ๋ฐ๋ก ์จ์ผํ๋(Colab or Jupyter) Redshift์๋ ๋ค๋ฅด๊ฒ, ์์ฒด์ ์ผ๋ก notebook ์ญํ ์ ํ๋ worksheet๋ฅผ ์ ๊ณตํ๋ค. worksheet๋ฅผ ํฌํจํ UI๊ฐ redshift๋ฅผ ์ฌ์ฉํ ๋์ ๋น๊ตํ๋ฉด ๋ ํธํ๊ณ ๊น๋ํด์ ์ข์๋ค.
์ค๋์ ๊ฒ๋์์ ๋ชจ๊ฐ์ฝ(๋ชจ๊ฐ๊ณต)์ ํด๋ดค๋ค. ํ๋ฉด ๊ณต์ ๋ฅผ ํ๋ฉด์ ๊ฐ์๋ฅผ ๋ค์ผ๋๊น ์๋๋ณด๋ค ์ง์ค์ ์ ๋๋๋ฐ, ์์ฌ์ด์ ์ ๊ฐ์ด ๊ณต๋ถํ๋ ๋๋์ด ์ ์๋ค๋๋ผ. ์ด๋ป๊ฒ ์งํํด์ผํ ์ง ๊ณ ๋ฏผ์ด ์ข ๋๋ค. ์๊ฐ์ ์ ํด์ ๋ง์ ๊ฑธ๊ฑฐ๋ ์ ์๋๋ ๊ฑธ ๋ฌผ์ด๋ณด๋ฉด ์ด๋จ๊น? ๋ชจ๊ฐ์ฝ ์ฐธ์ฌํ์๋ ๋ถ๋คํ๊ณ ์นํด์ง๊ณ ์ถ์๋ฐ ๋ง ๊ฑธ๊ธฐ๊ฐ ์ฝ์ง ์์์ ์ด๋ค ์ฃผ์ ๋ก ์ด๋ป๊ฒ ์๊ธฐํ๋ฉด ์ข์์ง ๊ณ ๋ฏผ์ ์ข ํด๋ด์ผ๊ฒ ๋ค…. ใ ใ