๐Snowflake ์ด๋ก
1. Snowflake๋
ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค
- ๋ฉํฐ ํด๋ผ์ฐ๋ (AWS, GCP, Azure์์์ ๋ชจ๋ ๋์ํจ)
- Data Sharing/MarketPlace (๊ฐ๋ ๋งํฌ)
- ETL, ๋ค์ํ ๋ฐ์ดํฐ ํตํฉ ๊ธฐ๋ฅ ์ ๊ณต
2. ํน์ง
- ๋ฉํฐ ํด๋ผ์ฐ๋์ ๋ค๋ฅธ ์ง์ญ์ ์๋ ๋ฐ์ดํฐ ๊ณต์ (Cross-Region Replication)
- ๊ฐ๋ณ ๋น์ฉ ๋ชจ๋ธ
- ์คํ ๋ฆฌ์ง์ ์ปดํจํ ์ธํ๋ผ๊ฐ ๋ณ๋๋ก ์ค์ ๋จ
- SQL ๊ธฐ๋ฐ + ๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ + ML ๊ธฐ๋ฅ ์ ๊ณต
- ๋ค์ํ ๋ฐ์ดํฐ ํฌ๋งท ์ ๊ณต
- ๋ฐฐ์น ๋ฐ์ดํฐ ์ค์ฌ + ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ง์]
- Time Travel (๊ณผ๊ฑฐ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ)
- ์น์ฝ์, Python API, ODBC/JDBC ์ฐ๊ฒฐ ์ง์
- ์์ฒด ์คํ ๋ฆฌ์ง + ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง๋ฅผ ์ธ๋ถ ํ ์ด๋ธ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
3. ๊ณ์ ๊ตฌ์ฑ๋
Accounts ๋ฐ์ ๋ค์ Database ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฐ์ ๋ค์์ Schema
- Organizations
- ์ฃผ๋ก ํฐ ํ์ฌ์์ ์ฌ์ฉํ๋ ์กฐ์ง ๊ตฌ์ฑ๋
- ํ๋ ์ด์์ account๋ก ๊ตฌ์ฑ
- ๋ชจ๋ account๋ค์ ์ ๊ทผ ๊ถํ, ์ฌ์ฉํธ๋ํน, ๋น์ฉ๋ค์ ๊ด๋ฆฌํจ
- Accounts
- account์๋์ ๋ค์์ database๋ก ๊ตฌ์ฑ๋จ
- Redshift์ ๋ค๋ฅด๊ฒ ์ฌ์ฉ์ ๊ทธ๋ฃน์ด ์๊ณ , ๊ณ์น ๊ฐ๋ฅํ Rule๊ธฐ๋ฐ์ผ๋ก ๊ถํ ๋ถ์ฌํจ
- Databases
- ํ๋์ database๋
- ๋ค์์ ์คํค๋ง์ ๊ทธ ์์ ํ ์ด๋ธ,๋ทฐ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋จ
- PB๋จ์๊น์ง ์ค์ผ์ผ ๊ฐ๋ฅ
- ๋ ๋ฆฝ์ ์ธ ์ปดํจํ ๋ฆฌ์์ค(Warehouses) ๊ฐ๊ฒ๋จ
- ํ๋์ database๋
์ฃผ์! ํ database์ ์ข ์๋ Warehouse ๊ฐ ์๋ ๊ฒ์ด ์๋! Warehouse์ Databases๋ 1:1 ๊ด๊ณ ์๋
4. Snowflake ๋น์ฉ
4-(1). ๋น์ฉ ๋ชจ๋ธ
๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๋งํผ ๋ด๋ ๋น์ฉ ์ง๋ถํจ
[ ์ง๋ถ ๋ฐฉ์ ]
- CAPACITY STORAGE : ๋ฏธ๋ฆฌ ์ง๋ถํ๋ฉด ์กฐ๊ธ ๋ ์ ๋ ดํจ
- ON-DEMAND STORAGE : ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๋งํผ ๋ด๋ ๋น์ฉ
[ ์ ํ ]
- STANDARD, ENTERPRISE, BUSINESS CRITICAL, VPS ๋ก ๊ตฌ์ฑ๋จ
30์ผ ๋ฌด๋ฃ ์ํํ : 30์ผ ํน์ ์ต๋ $400๊น์ง ์ฌ์ฉ ๊ฐ๋ฅ
4-(2). ๋น์ฉ ๊ตฌ์กฐ
ํฌ๊ฒ 3๊ฐ์ง ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋จ
- ์ปดํจํ ๋น์ฉ : ํฌ๋๋ง($3-4) ๋จ์
- ์คํ ๋ฆฌ์ง ๋น์ฉ : TB๋น ๊ณ์ฐ
- ๋คํธ์ํฌ ๋น์ฉ : ์ง์ญ๊ฐ ๋ฐ์ดํฐ ์ ์ก ํน์ ๋ค๋ฅธ ํด๋ผ์ฐ๋ ์๋น์ค๊ฐ ๋ฐ์ดํฐ ์ ์ก์ TB๋น ๊ณ์ฐ
5. ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
- ๋ฐ์ดํฐ ํ์ ์์ฝ ํ (์ฐธ๊ณ : ๋ฐ์ดํฐ ํ์ ์์ฝ | Snowflake Documentation)์นดํ ๊ณ ๋ฆฌ ํ์ ์ฐธ๊ณ
-
๋๋ณด๊ธฐ
https://docs.snowflake.com/ko/sql-reference/data-types-numeric.html NUMBER ๊ธฐ๋ณธ ์ ์ฒด ์๋ฆฟ์์ ์์ ์๋ฆฟ์๋ (38,0)์ ๋๋ค. DECIMAL, NUMERIC NUMBER์ ๋์์ด์ ๋๋ค. INT, INTEGER, BIGINT, SMALLINT, TINYINT, BYTEINT ์ ์ฒด ์๋ฆฟ์์ ์์ ์๋ฆฟ์๋ฅผ ์ง์ ํ ์ ์๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋, NUMBER์ ๋์์ด์ ๋๋ค. FLOAT, FLOAT4, FLOAT8 [1] DOUBLE, DOUBLE PRECISION, REAL FLOAT์ ๋์์ด์ ๋๋ค. [1] https://docs.snowflake.com/ko/sql-reference/data-types-text.html VARCHAR ๊ธฐ๋ณธ๊ฐ(์ต๋๊ฐ์ด๊ธฐ๋ ํจ)์ 16,777,216๋ฐ์ดํธ์ ๋๋ค. CHAR, CHARACTER ๊ธฐ๋ณธ ๊ธธ์ด๊ฐ VARCHAR(1)์ด๋ผ๋ ์ ์ ์ ์ธํ๋ฉด VARCHAR๊ณผ ๋์์ด์ ๋๋ค. STRING VARCHAR๊ณผ ๋์์ด์ ๋๋ค. TEXT VARCHAR๊ณผ ๋์์ด์ ๋๋ค. BINARY VARBINARY BINARY์ ๋์์ด์ ๋๋ค. https://docs.snowflake.com/ko/sql-reference/data-types-logical.html BOOLEAN ํ์ฌ 2016๋ 1์ 25์ผ ์ดํ์ ํ๋ก๋น์ ๋๋ ๊ณ์ ์ ๋ํด์๋ง ์ง์๋ฉ๋๋ค. https://docs.snowflake.com/ko/sql-reference/data-types-datetime.html DATE DATETIME TIMESTAMP_NTZ ์ ๋ณ์นญ TIME TIMESTAMP TIMESTAMP ๋ณํ ์ค ํ๋์ ๋ณ์นญ์ ๋๋ค(๊ธฐ๋ณธ์ ์ผ๋ก TIMESTAMP_NTZ). TIMESTAMP_LTZ ํ์ง ํ์์กด์ด ์๋ TIMESTAMP. ํ์์กด(์ ๊ณต๋๋ ๊ฒฝ์ฐ)์ ์ ์ฅ๋์ง ์์ต๋๋ค. TIMESTAMP_NTZ ํ์์กด์ด ์๋ TIMESTAMP. ํ์์กด(์ ๊ณต๋๋ ๊ฒฝ์ฐ)์ ์ ์ฅ๋์ง ์์ต๋๋ค. TIMESTAMP_TZ ํ์์กด์ด ์๋ TIMESTAMP. https://docs.snowflake.com/ko/sql-reference/data-types-semistructured.html JSON์ง์ํจ VARIANT OBJECT ARRAY https://docs.snowflake.com/ko/sql-reference/data-types-geospatial.html GEOGRAPHY GEOMETRY - Redshfit์ ๋น๊ตํ๋ฉด JSON๊ณผ Array๋ฅผ ์ง์ํ์ฌ nested ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ฉํ ์ ์๋ค.
- BigQuery๋ Snowflake์ ๊ฑฐ์ ์ ์ฌํจ
6. Snowflake ์ฌ์ฉ์ ๊ถํ ์ค์
6-(1). Role๊ณผ User ์์ฑ
snowflake๋ group ์ง์ X
-- Role ์์ฑ
CREATE ROLE (role๋ช
)
-- ์ฌ์ฉ์ ์์ฑ
CREATE USER (user๋ช
) PASSWORD='๋น๋ฐ๋ฒํธ';
-- ์ฌ์ฉ์ ๊ถํ ์ง์
CREATE ROLE (role๋ช
) TO USER (user๋ช
);
6-(2). ์ปฌ๋ผ ๋ ๋ฒจ ๋ณด์, ๋ ์ฝ๋ ๋ ๋ฒจ ๋ณด์
๊ฐ๊ฐ ํ ์ด๋ธ๋ด์ ํน์ ์ปฌ๋ผ(๋ค)/๋ ์ฝ๋(๋ค)์ ํน์ ์ฌ์ฉ์/Role์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฒ
⇒ ๋ณ๋์ ํ ์ด๋ธ๋ก ๊ด๋ฆฌํ๊ฑฐ๋ ํน์ ๋ฐ์ดํฐ ์์คํ ์ผ๋ก ๋ก๋ฉํ์ง ์๋ ๊ฒ์ด Best
6-(3). Data Governance
Data Governance๋, ํ์ํ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉ๋จ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ด๋ฆฌ ํ๋ก์ธ์ค์ด๋ค. ์ด๋ ๋ฐ์ดํฐ ํ์ง ๋ณด์ฅ๊ณผ ๋ฐ์ดํฐ ๊ด๋ จ ๋ฒ๊ท ์ค์๋ฅผ ์ฃผ ๋ชฉ์ ์ผ๋ก ํ๋ค.
Snowflake๋ ๋ค์๊ณผ ๊ฐ์ด Data Governance์ ๊ด๋ จ๋ ๊ธฐ๋ฅ ์ ๊ณตํ๋ค. (๋จ Enterprise ์ด์๋ถํฐ ์ฌ์ฉ๊ฐ๋ฅ)
- Object Tagging
- Object(Organization, account, db, schema, table, column, view ๋ฑ)์ Tag๋ฅผ ๊ฑฐ๋ ๊ฒ
- ์ฉ๋๋ ๊ฐ์ธ ์ ๋ณด ๊ด๋ฆฌ๊ฐ ์ฃผ์
- Tag
- ์์ฑ : CREATE TAG
- ์ข ๋ฅ : ์ง์ ์์ฑ๋ ํ๊ทธ, ์์คํ ํ๊ทธ
- ํน์ง : tag๋ ๊ตฌ์กฐ๋ฅผ ๋ค๋ผ ๊ณ์น๋จ
- Data Classification
- snowflake์ด ์์์ ํน์ ํ ์ด๋ธ์ ์ปฌ๋ผ ๋ด์ฉ์ ์ดํผ๊ณ ๊ฐ์ธ์ ๋ณด ์์ธ ๋ถ๋ฅ๋ฅผ ํด์ Tagging ํ๋ ๊ธฐ๋ฅ (Object Tagging์ ๋ณด์ํ๊ธฐ ๋์จ ๊ธฐ๋ฅ)
- Step 3
- Analyze : ํ ์ด๋ธ ์ ์ฉ์ ๊ฐ์ธ/๋ฏผ๊ฐ์ ๋ณด์ ์ปฌ๋ผ ๋ถ๋ฅํจ
- Review: ์ฌ๋์ด ๋ณด๊ณ ์ต์ข ๋ฆฌ๋ทฐ ๋ฐ ์์
- Apply: ์ต์ข
๊ฒฐ๊ณผ๋ฅผ System Tag๋ก ์ ์ฉ
- System Tag ์ข
๋ฅ
- SNOWFLAKE.CORE.PRIVACY_CATEGORY (์์๋ ๋ฒจ)
- IDENTIFIER(์๋ณ์), QUASI_IDENTIFIER(์ค์๋ณ์), SENSITIVE(๋ฏผ๊ฐ์ ๋ณด)
- SNOWFLAKE.CORE.SEMANTIC_CATEGORY (ํ์๋ ๋ฒจ - ๋ ์ธ๋ถ์ ๋ณด)
- SNOWFLAKE.CORE.PRIVACY_CATEGORY (์์๋ ๋ฒจ)
- System Tag ์ข
๋ฅ
- Tag based Masking Policies
- Tag๋ง๋ค ๋ค๋ฅธ ์ก์ธ์ค ๊ถํ ์ง์ ํ๋ ๊ฒ
- Access History
- ์ฌ์ฉ์๋ณ๋ก ์ ์ ์๊ฐ, ํ์๋ฑ์ ์ปฌ๋ผ ๊ธฐ์ค์ผ๋ก ๊ธฐ๋กํจ → ๊ฐ์ฌ ์ถ์ ์ ์ํจ
- Object Dependencies
- ๊ฐ์ธ์ ๋ณด์ ๊ด๋ จ๋ ๋ณด์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๊ฐ ๋์ถ๋์ง ์๋๋ก ํ๊ธฐ ์ํจ
- ETL ์์ ์ค, ์๋ณธ ํ ์ด๋ธ์์ ์ค์ ํ ์ปฌ๋ผ ์์ฑ(์ ๊ทผ ๊ถํ)์ด ์๋ก์ด ํ ์ด๋ธ ์์ฑ์์๋ ํด๋น ์์ฑ์ด ๋ฐ๋ผ๊ฐ.
7. Snowflake ์์ UI
- Query History: CRUD ๊ด๋ จ๋ ์์ ํ์คํ ๋ฆฌ
- Copy History: Bulk Update์ ๊ฐ์ COPY ํ์คํ ๋ฆฌ
- Task History: ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํด์ฃผ๋ SQL ๊ด๋ จ ํ์คํ ๋ฆฌ
8. Snowflake ๊ธฐํ ๊ธฐ๋ฅ
8-(1). Data Marketplace &Data Sharing
- Data Sharing (“Share, Don’t Move”)
: copyํด์ค๋ ๊ฒ์ด ์๋, ์คํ ๋ฆฌ์ง๋ฅผ ๊ณต์ ํ๋ ๊ฒ ์ฆ, ๋ฐ์ดํฐ ์ ์ ์ฌ๋ด/ํํธ๋์๊ฒ ์คํ ๋ฆฌ์ง ๋ ๋ฒจ์์ ๊ณต์ ํ๋ ๋ฐฉ์ - Data Marketplace(๋ฌด๋ฃ๊ณ์ ์ฌ์ฉ ๋ถ๊ฐ)
: Data Sharing์ ๋ฐํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋์ ์ฃผ๊ณ ๊ตฌ๋งคํ ์ ์๋ ์๋น์ค
'#๏ธโฃ Data Engineering > Snowflake' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Snowflake ์คํค๋ง ์์ฑ, COPY, ํ ์ด๋ธ ์์ฑ, CTAS ๋ฑ (0) | 2023.05.25 |
---|