๋ฐ๋ธŒ์ฝ”์Šค_๋ฐ์ดํ„ฐ์—”์ง€๋‹ˆ์–ด๋ง

[Week8 AWS ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค] TIL 33์ผ์ฐจ Redshift ๊ณ ๊ธ‰

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2023. 11. 29. 22:10
728x90

โ… . ๊ถŒํ•œ๊ณผ ๋ณด์•ˆ

์‚ฌ์šฉ์ž์™€ ํ…Œ์ด๋ธ”์€ ์œ ํ•œํ•˜๊ฒŒ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์–ด ๊ฐ๊ฐ์„ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผ๊ถŒํ•œ์„ ์ง€์ •ํ•˜๋ ค๋ฉด ๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ์กฐํ•ฉ์ด ์ƒ๊ธด๋‹ค.

๋”ฐ๋ผ์„œ, ๊ทธ๋ฃน์ด๋‚˜ ์—ญํ• ๋ณ„๋กœ ์Šคํ‚ค๋งˆ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

 

1. ๊ทธ๋ฃน๋ณ„ ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ

admin : ๋ชจ๋“  ์Šคํ‚ค๋งˆ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ์ž ๊ทธ๋ฃน

pii_users : ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฃน

analytics_authors : ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •, ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฃน

analytics_users : ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฃน

 

- ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒฝ์šฐ(r/w) : All

GRANT ALL ON SCHEMA ์Šคํ‚ค๋งˆ๋ช…1 TO GROUP ๊ทธ๋ฃน๋ช…1;
GRANT ALL ON ALL TABLES IN SCHEMA ์Šคํ‚ค๋งˆ๋ช…1 TO GROUP ๊ทธ๋ฃน๋ช…1;

 

- ํŠน์ • ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒฝ์šฐ(r) : Usage-select

GRANT USAGE ON SCHEMA ์Šคํ‚ค๋งˆ๋ช…1 TO GROUP ๊ทธ๋ฃน๋ช…1;
GRANT SELECT ON ALL TABLES IN SCHEMA ์Šคํ‚ค๋งˆ๋ช…1 TO GROUP ๊ทธ๋ฃน๋ช…1;

 

2. ์—ญํ• ๋ณ„ ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ(IAM Role)

์—ญํ• ์˜ ๊ฒฝ์šฐ ๊ทธ๋ฃน๊ณผ ๋‹ฌ๋ฆฌ ๊ณ„์Šน์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ์—ญํ• ์„ ๋งŒ๋“ค ๋•Œ ํŽธ๋ฆฌํ•˜๋‹ค.(์š”์ฆ˜์—๋Š” ์—ญํ• ๋ณ„ ์ ‘๊ทผ ๊ถŒํ•œ์„ ํ™œ๋ฐœํžˆ ์ด์šฉํ•˜๋Š” ์ถ”์„ธ์ด๋‹ค.)

ํŠน์ • ์—ญํ• ์„ ์ƒ์„ฑํ•ด์„œ ๊ณตํ†ต๋œ ์ ‘๊ทผ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ , ์ด๋ฅผ ๊ฐ ๊ฐœ์ธ/๊ทธ๋ฃน์— ๋ถ€์—ฌํ•œ๋‹ค.

 

3. ๊ณตํ†ต

ํ•œ ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฌ ์—ญํ• ์— ์†ํ• ๊ฒฝ์šฐ ์—ญํ• ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ–๋Š”๋‹ค.

 

์•„๋ž˜ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ”ผ์น˜ ๋ชปํ•  ์‚ฌ์ •์œผ๋กœ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ๋ณ„๋„ ํ…Œ์ด๋ธ”๋กœ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์•„์˜ˆ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์— ์—…๋กœ๋“œํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

1) ์ปฌ๋Ÿผ ๋ ˆ๋ฒจ ๋ณด์•ˆ(Column Level Security)

ํŠน์ • ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ์ž/๊ทธ๋ฃน์—๊ฒŒ ์ ‘๊ทผ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

2) ๋ ˆ์ฝ”๋“œ ๋ ˆ๋ฒจ ๋ณด์•ˆ(Row Level Security)

ํŠน์ • ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ์ž/๊ทธ๋ฃน์—๊ฒŒ ์ ‘๊ทผ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

CREATE RLS POLICY 
ATTACH RLS POLICY

 

 

โ…ก. ๋ฐฑ์—…๊ณผ ํ…Œ์ด๋ธ” ๋ณต๊ตฌ

์˜ต์…˜ ๊ณ ์ •๋น„์šฉ ๊ฐ€๋ณ€๋น„์šฉ(Serverless)
  ์ด์ „ Snapshot์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ”๋€ ๋‚ด์šฉ๋“ค๋งŒ ์ƒˆ๋กœ์šด Snapshot์œผ๋กœ ์ €์žฅ (๋ฐ”๋€ ๊ฒƒ๋งŒ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ๋œ ๋“ ๋‹ค)
๊ณ ์ •๋œ ์ž์›์œผ๋กœ snapshot์šฉ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ๋ฐ”๋กœ ํ• ๋‹น๋œ๋‹ค.
๊ธฐ๋ณธ ํ•˜๋ฃจ๊ฐ€ ์ €์žฅ๋˜๊ณ  ์ตœ๋Œ€ 35์ผ๊นŒ์ง€ ๋ฌด๋ฃŒ๋ฃŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ”๋€ ๋‚ด์šฉ๋งŒ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  ๊ธฐ๋ก์„ ์ €์žฅ
→ Recovery Point ์ƒ์„ฑ
๋ณต๊ตฌ ์‹œ์ ์€ 30๋ถ„๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ƒ์„ฑ, 24์‹œ๊ฐ„ ๋™์•ˆ ๋ณด๊ด€
→ Snapshot ์ƒ์„ฑ
์‹คํ–‰ Redshift>Maintenance>Back up Details>Edit
automated shapshot period ์„ ํƒ
Redshift>namespace>๋ณต๊ตฌ์‹œ์ >Recovery Point์„ ํƒ>๋ณต๊ตฌ์‹œ์ ์—์„œ ์Šค๋ƒ…์ƒท ์ƒ์„ฑ
  ๋‹ค๋ฅธ ์ง€์—ญ์˜ S3๋กœ ๋ฐฑ์—…ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ง€์—ญ ์žฌ๋‚œ์‹œ ๋ณต๊ตฌ์— ์œ ๋ฆฌํ•˜๋‹ค.
์‹คํ–‰ Redshift>Actions>Configure Cross-region snapshot
Redshift>namespace>๋ฐ์ดํ„ฐ๋ฐฑ์—…>Cross region backup>์˜ˆ

 

 

โ…ข. AWS Spectrum - AWS ์‚ฌ์šฉ ์‹œ ๊ถŒ์žฅ

์ถ”๊ฐ€ ๋น„์šฉ์„ ๋‚ด๊ณ  ๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ(S3)์˜ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ Redshift์™€ ๊ฐ™์€ ์ง€์—ญ์˜ S3์— ๋Œ€ํ•ด์„œ, S3 ํŒŒ์ผ๋“ค(์™ธ๋ถ€์ €์žฅ)์„ ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”(Factor table)๋กœ ๊ฐ„์ฃผํ•˜๊ณ  SQL ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.(์กฐ์ธ์—ฐ์‚ฐ๋„ ๊ฐ€๋Šฅ)

๊ฐ„์ฃผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ด๋ธ”์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ฐธ์กฐ(-๋ณดํ†ต ์ฝ๊ธฐ ์ „์šฉ)ํ•œ๋‹ค.(csv, json, xml, ๊ด€๊ณ„ํ˜• DB)

์™ธ๋ถ€ํ…Œ์ด๋ธ”์ด ํด ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ  ๋ณด์•ˆ ๋ฌธ์ œ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.

Redshift ๋กœ๋”ฉํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ๋Š” ํ‰๊ท ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ํฌํ‚ค๊ฐ€ ํฌ๊ณ , ์ƒ๋Œ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค(Dimension table)๋Š” ํ‰๊ท ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๊ฐ€ ์ž‘๋‹ค.

 

cf) Factor table๊ณผ Dimesion table

Factor table : ๋ถ„์„์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์–‘์  ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ์ค‘์•™ ๋ฐ์ด๋ธ”(๋งค์ถœ ์ˆ˜์ต, ํŒ๋งค๋Ÿ‰ ๋“ฑ)

Dimension table : Factor ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ…Œ์ด๋ธ”(์‚ฌ์šฉ์ž ์ •๋ณด, ๋ฌผํ’ˆ ์ •๋ณด ๋“ฑ)

๋ณดํ†ต Factor table์˜ ํฌ๊ธฐ >> Dimension table ํฌ๊ธฐ์ด๋‹ค ๋”ฐ๋ผ์„œ ๋ณดํ†ต Dimension ํ…Œ์ด๋ธ”์€ Redshift์— ์ ์žฌํ•˜๊ณ  Factor table์€ ๋น„์šฉ์ด ์ €๋ ดํ•œ S3์— ์ €์žฅํ•œ ๋’ค, ์ผ๋ถ€ ๊ฐ€๊ณตํ•˜์—ฌ Redshift์— ์ ์žฌํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ์™€ ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค์— ์ ์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ •๋ณด

  ๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ(S3) ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค(Redshift)
ํ…Œ์ด๋ธ” ์ข…๋ฅ˜ Dimension table Factor table
์˜ˆ์‹œ1 user_session_channel
order
user, channel
product, user

 

์‚ฌ์šฉ

๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ JOIN ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค

๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ์˜ ํŒŒ์ผ์„ ๊ฐ€๊ณตํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ์— ์ €์žฅ

๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ์˜ ํŒŒ์ผ์„ ๊ฐ€๊ณตํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์— ์ €์žฅ

 

์‹ค์Šต

user_session_channel์„ ์™ธ๋ถ€ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“  ๋’ค์— Redshift์™€ ์กฐ์ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด ๋ณด์ž.

 

1. S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ

2. Redshift ์„œ๋ฒ„ ์ƒ์„ฑ

3. Role ์ƒ์„ฑ

IAM>์—ญํ• >์—ญํ• ์ƒ์„ฑ

IAM> ์—ญํ• > ๊ถŒํ•œ์ถ”๊ฐ€

- Amazon S3 Full Access

- AWSGlueConsoleFullAccess

4. Redshift์— Role ๋ถ€์—ฌ

(์ด์ „์˜ ํฌ์ŠคํŒ…๊ณผ ๋™์ผ)


5. ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์šฉ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ

S3์˜ external ํด๋”์— user_session_channel.csv ํŒŒ์ผ ์—…๋กœ๋“œํ•œ๋‹ค.

%%sql
-- AWSGlueConsoleFullAccess
CREATE EXTERNAL SCHEMA external_schema
from data catalog
database 'myspectrum_db'
iam_role 'IAMROLE arn ์ฃผ์†Œ'
create external database if not exists;

 

6. ์™ธ๋ถ€ ํ…Œ์ด๋ธ” ์ •์˜

SQL ๋ฌธ์žฅ์„ ์ด์šฉํ•ด ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์„ ์ •์˜ํ•œ๋‹ค.

%%sql
CREATE EXTERNAL TABLE external_schema.user_session_channel (
   userid integer ,
   sessionid varchar(32),
   channel varchar(32)
)
row format delimited
fields terminated by ','
stored as textfile
location 'S3>external ํด๋” URI';

 

- location ํด๋” ๋‚ด์˜ ๋ชจ๋“  ํŒŒ์ผ๋“ค ๊ฐ๊ฐ์„ ํ…Œ์ด๋ธ”์ฒ˜๋Ÿผ ๋กœ๋”ฉ(๋‹จ, ํŒŒ์ผ ๊ฐ„์˜ ํฌ๋งท์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค.)

์ด ๊ณผ์ •์—์„œ ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ,

1. S3 ๋ฒ„ํ‚ท์˜ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ์ฐจ๋‹จ์„ ํ•ด์ง€

2. AWS Glue ์ง์ ‘ ์—ฐ๊ฒฐ ํ›„ ์‚ญ์ œํ•œ ๋’ค ๋‹ค์‹œ ์‹คํ–‰

๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‹คํ–‰ํ•œ ๋’ค์— ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ๋‹ค.

 

7. ์™ธ๋ถ€ํ…Œ์ด๋ธ”๊ณผ ๋‚ด๋ถ€ํ…Œ์ด๋ธ”์„ ์กฐ์ธ

%%sql
SELECT gender, COUNT(1)
FROM external_schema.user_session_channel external
JOIN raw_data.user_property up ON external.userid = up.userid
GROUP BY 1;

 

 

โ…ฃ. Athena(Apache presto ์„œ๋น„์Šคํ™”) - ๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ ์‚ฌ์šฉ ์‹œ ๊ถŒ์žฅ

Spectrum๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ(S3) ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ) ํ…Œ์ด๋ธ”๋กœ ๊ฐ„์ฃผํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.

 

 

โ…ค. Redshift ML

AWS Sagemaker(์ตœ์ ํ™”๋œ ๋ชจ๋ธ์„ ์ž๋™ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ)์— ์˜ํ•ด ์ง€์›๋˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ๋จธ์‹ ๋Ÿฌ๋‹ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜๋ฉด ์ตœ์ ์˜ Supervised machine ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

Sagemaker

๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ฐœ๋ฐœ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊ฐ€์ง€ ํ•ด๊ฒฐํ•ด ์ฃผ๋Š” ์„œ๋น„์Šค

Tensorflow, Keras, Pytorch ๋“ฑ์˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›

 

์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ

- Traning Set ์ค€๋น„

- ๋ชจ๋ธ ํ›ˆ๋ จ

- ๋ชจ๋ธ ๊ฒ€์ฆ

- ๋ชจ๋ธ ๋ฐฐํฌ์™€ ๊ด€๋ฆฌ

 

SageMaker Studio

์›น ๊ธฐ๋ฐ˜์˜ ํ™˜๊ฒฝ ์ œ๊ณต

 

Autopilot

์ฝ”๋”ฉ์„ ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต(AutoML).

1) EDA ์ˆ˜ํ–‰ : ๊ฐ ํ•„๋“œ ํŠน์„ฑ ํŒŒ์•…. drop, scaling(์ •๊ทœํ™”)

2) ์—ฌ๋Ÿฌ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ•˜์ดํผ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์กฐํ•ฉ์— ๋Œ€ํ•ด ํ›ˆ๋ จ-ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ํ•œ ๋’ค ์ตœ์ ์˜ ๋ชจ๋ธ์„ ์„ ํƒ

3) ์ดํ›„ API๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅ

 

์‹ค์Šต : ๊ฐ„๋‹จํ•œ ML ๋ชจ๋ธ ์ƒ์„ฑํ•ด์„œ ์ ์šฉํ•˜๊ธฐ

1. ์บ๊ธ€ ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ

2. S3 ๋ฒ„ํ‚ท์— ๋ฐ์ดํ„ฐ ์—…๋กœ๋“œ

3. Redshift์— COPY ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒŒํฌ ์—…๋ฐ์ดํŠธ

ํ…Œ์ด๋ธ” ์ƒ์„ฑ(create table)

๋ฒŒํฌ ์—…๋ฐ์ดํŠธ(copy)

4. Sagemaker์—๊ฒŒ Redshift ์‚ฌ์šฉ๊ถŒํ•œ ๋ถ€์—ฌ

- ์ƒˆ๋กœ์šด ์—ญํ•  ์ƒ์„ฑ : Redshift-ML

IAM> ์—ญํ• > ์—ญํ• ์ƒ์„ฑ

AWS service ์„ ํƒ + SageMaker-Excution ์„ ํƒ

IAM Sagemaker ์—ญํ• ์ƒ์„ฑ

 

์ •์ฑ…

AmazonSageMakerFullAccess(sagemaker ์„ ํƒ ์‹œ ๊ธฐ๋ณธ์œผ๋กœ ์ ์šฉ)

์—ญํ• > redshift-ML> ๊ถŒํ•œ> ๊ถŒํ•œ์ถ”๊ฐ€

AmazonS3 FullAccess(์ƒˆ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ)

 

๊ทธ๋Ÿฐ๋ฐ ํ˜„์žฌ ์ƒํ™ฉ์˜ ๊ฒฝ์šฐ Redshift, Sagemaker ์„œ๋กœ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์—ญํ• > redshift-ML> ์‹ ๋ขฐ๊ด€๊ณ„> ์‹ ๋ขฐ์ •์ฑ…ํŽธ์ง‘> ๋ณด์•ˆ์ฃผ์ฒด ์ถ”๊ฐ€๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•œ๋‹ค.

Redshift-ML ๋ณด์•ˆ ์ฃผ์ฒด ์ถ”๊ฐ€

 

5. Redshift์— Sagemaker ๊ถŒํ•œ ๋ถ€์—ฌ

Redshift> Namespace> ๋ณด์•ˆ ๋ฐ ์•”ํ˜ธํ™”> IAM ์—ญํ• ๊ด€๋ฆฌ> IAM ์—ญํ•  ์—ฐ๊ฒฐ

Redshift-ML ์„ ํƒํ•œ๋‹ค.

 

6. ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ ์ƒ์„ฑ(80% ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ)

- create model(train ๋ฐ์ดํ„ฐ์˜ 80% ์‚ฌ์šฉ)

CREATE MODEL SQL๋กœ์กฐํšŒํ• ์ˆ˜์žˆ๋Š”๋ชจ๋ธ์ด๋ฆ„
FROM (
  SELECT 
      x๋กœ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ๋ชฉ๋ก(,๋กœ ๊ตฌ๋ถ„)
  FROM ์Šคํ‚ค๋งˆ.ํ…Œ์ด๋ธ”๋ช…
  WHERE purpose = 'Train'
)
TARGET y๋กœ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ
FUNCTION ํ•จ์ˆ˜์ด๋ฆ„
IAM_ROLE 'Redshift-ML arn ๋ถ™์—ฌ๋„ฃ๊ธฐ'
SETTINGS (
  S3_BUCKET '์ €์žฅํ•  s3๋ฒ„ํ‚ท์ด๋ฆ„'
);

S3๋ฒ„ํ‚ท ํ•˜์œ„์— redshift_mlํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ ๋ชจ๋ธ ๊ด€๋ จ ๋ชจ๋“  ๋กœ๊ทธ๋“ค์ด ์ €์žฅ๋œ๋‹ค.

 

๋ชจ๋ธ๋นŒ๋“œํ™•์ธ

SHOW MODEL SQL๋กœ์กฐํšŒํ• ์ˆ˜์žˆ๋Š”๋ชจ๋ธ์ด๋ฆ„;

 

7. ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰

(train ํ…Œ์ดํ„ฐ์˜ ๋‚˜๋จธ์ง€ 20% ์‚ฌ์šฉ)

SELECT ์˜ˆ์ธก๋Œ€์ƒ,
       ml_fn_orange_telecom_customers(
          x๋กœ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ๋ช…
       ) AS "prediction"
FROM ์Šคํ‚ค๋งˆ.ํ…Œ์ด๋ธ”๋ช…
WHERE purpose = 'Test';

 

8. Sagemaker ๊ด€๋ จ ๋ฆฌ์†Œ์Šค ์ œ๊ฑฐ

DROP MODEL SQL๋กœํ˜ธ์ถœํ• ์ˆ˜์žˆ๋Š”๋ชจ๋ธ์ด๋ฆ„;

+ AWS ์›น์— ์ ‘์†ํ•ด์„œ Sagemaker๊ด€๋ จ ํŒŒ์ผ ์‚ญ์ œ

 

 

โ…ฅ. Redshift ์ค‘์ง€/์ข…๋ฃŒํ•˜๊ธฐ

1. ๊ณ ์ •๋น„์šฉ

Maintenance window๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์œ„ํ•ด ์ค‘๋‹จ

์ค‘์ง€

Redshift ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒ> Pause → ๋‹ค์‹œ ์‹คํ–‰ ์‹œ(Resume)

์‚ญ์ œ

Redshift ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒ> Delete

ํ•ด๋‹น ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ S3 snapshot์œผ๋กœ ์ €์žฅํ•  ๊ฑด์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•จ(์ดํ›„์— ๋ณต๊ตฌ ๊ฐ€๋Šฅ)

 

2. ๊ฐ€๋ณ€๋น„์šฉ(serverless)

๊ด€๋ จ๋œ Workgroup ์‚ญ์ œ

๊ด€๋ จ๋œ Namespace ์‚ญ์ œ

 

3. ๊ณตํ†ต) Vacuum : ํ…Œ์ด๋ธ” ์ฒญ์†Œํ™” ์ตœ์ ํ™”

DB ํ…Œ์ด๋ธ”์˜ ์‚ญ์ œ๋‚˜ ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•œ ๊ฒฝ์šฐ ์ตœ์ ํ™”ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ. ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์žก์•„๋จน๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”์˜์ง€ ์•Š์„ ๋•Œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค!

- ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ •๋ ฌ

๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์—ฌ ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ํ–‰์„ ๋ชจ์•„ ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•  ๋ธ”๋ก์ˆ˜๋ฅผ ์ค„์ด๋Š” ์ž‘์—… ์ˆ˜ํ–‰

- ๋””์Šคํฌ ๊ณต๊ฐ„ ํ•ด์ œ/ํšŒ์ˆ˜

์‚ญ์ œ๋œ ํ–‰์˜ ๋””์Šคํฌ ๊ณต๊ฐ„์€ ์ฆ‰์‹œ ํ•ด์ œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณต๊ฐ„ ํšŒ์ˆ˜ ๋ฐ ์ง์ ‘์ ์œผ๋กœ ํ•ด์ œ

- ํ…Œ์ด๋ธ” ํ†ต๊ณ„ ์—…๋ฐ์ดํŠธ

ํ…Œ์ด๋ธ” ํ†ต๊ณ„๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ Query Planner์˜ ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ์ง€์›

728x90