๐Ÿ“’ AWS(5) - RedShift

Kimdongkiยท2024๋…„ 5์›” 8์ผ

DB

๋ชฉ๋ก ๋ณด๊ธฐ
15/33

๐Ÿ“Œ RedShift


๐Ÿ“Œ RedShift - Setting

  1. WorkGroup(์ž‘์—… ๊ทธ๋ฃน)
    ์—ฌ๊ธฐ์„œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋ฏธ๋ฆฌ Copyํ•ด๋‘๋ฉด ์ข‹๋‹ค.

  2. NameSpace
    ํ™•์ธํ•ด๋ณด๋‹ˆ๊นŒ ์ด๋ฏธ Default๊ฐ’์œผ๋กœ admin์ด ์ง€์ •๋˜์–ด์žˆ๋‹ค.

    ์—†๋‹ค๋ฉด ๊ด€๋ฆฌ์ž ๋ณด์•ˆ ์ธ์ฆ ์ •๋ณด ํŽธ์ง‘ ์„ค์ •์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
    ๋‚˜๋Š” ๋”ฐ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์—ˆ๋‹ค.


๐Ÿ“Œ RedShift - ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

Google Colab์„ ์‚ฌ์šฉํ•ด์„œ ์‹ค์Šตํ•ด๋ณด์ž.
์ค€๋น„
1. Endpoint
2. Redshift Username : admin
3. Redshift Password : Rlaahdand0411!

์•„๋ž˜ ์ฒ˜๋Ÿผ ipython๊ณผ SQL์˜ ๋ฒ„์ „์„ ๋งž์ถ”์–ด์ฃผ์ž. ํ˜„์žฌ๋Š” ํŠน์ • ๋ฌธ์ œ๋กœ ์ธํ•ด์„œ ๋ฒ„์ „์„ ๋งž์ถ”์–ด ์ฃผ์–ด์•ผ๋งŒ ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

%load_ext sql
!pip install SQLAlchemy==1.4.47
!pip install ipython-sql==0.4.1
%sql postgresql://admin:~~~~@default-workgroup.num.us-west-2.redshift-serverless.amazonaws.com:num/dev

์ด๋ ‡๊ฒŒ ์ง„ํ–‰ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. ์ด๋Š” Public์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์‹คํ–‰ ์ž์ฒด๋„ ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜๋Š”๋ฐ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค.

WorkGroup ์„ค์ •์œผ๋กœ ๊ฐ€๋ฉด ์•„๋ž˜ ํƒญ์ด ์กด์žฌํ•œ๋‹ค.
์˜ค๋ฅธ์ชฝ ์•„๋ž˜๋ฅผ ๋ณด๋ฉด ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ๊ฐ€๋Šฅ ๋ถ€๋ถ„์ด ๊บผ์ง์œผ๋กœ ๋˜์–ด์žˆ๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ด๊ฒƒ์œผ๋กœ ๋์ด ์•„๋‹ˆ๋‹ค.
๊ฐ™์€ ํƒญ์— VPC security group์˜ Setting์„ ๋ฐ”๊พธ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ด๊ณณ์œผ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด EC2๋กœ ๋„˜์–ด๊ฐ€๋Š”๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ณด์—ฌ์ง€๋Š” ๋ณด์•ˆ ๊ทธ๋ฃน์„ ์„ ํƒํ•˜์—ฌ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ 5439๋Š” Redshift์˜ ํฌํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.์ด๋ ‡๊ฒŒ Redshift ์œ ํ˜•์˜ ๋ณด์•ˆ ๊ทœ์น™์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ“Œ Redshift - Schema

๋‹ค๋ฅธ ๊ธฐํƒ€ ๊ด€๊ณ„ํ˜• DB์™€ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

  • DEV
    • raw_data : ETL ๊ฒฐ๊ณผ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
    • analytics : ELT ๊ฒฐ๊ณผ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
    • adhoc : ํ…Œ์ŠคํŠธ์šฉ Table์ด ๋“ค์–ด๊ฐ„๋‹ค.
    • pii : ๊ฐœ์ธ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  • ์Šคํ‚ค๋งˆ ์„ค์ •
  • ๋ชจ๋“  ์Šคํ‚ค๋งˆ๋ฅผ ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ : SELECT * FROM pg_namespace;
CREATE SCHEMA raw_data;
CREATE SCHEMA analytics;
CREATE SCHEMA adhoc;
CREATE SCHEMA pii;
  • User ์ƒ์„ฑ
  • ๋ชจ๋“  User ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ : SELECT * FROM pg_user;
CREATE USER USER_NAME PASSWORD '~~~~';
  • GROUP ์ƒ์„ฑ/์„ค์ •
  • ๊ทธ๋ฃน ์ƒ์„ฑ -> CREATE GROUP GROUP_NAME;
  • ๊ทธ๋ฃน์— ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ -> ALTER GROUP GROUP_NAME ADD USER USER_NAME;
  • ๋ชจ๋“  ๊ทธ๋ฃน์„ ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ : SELECT * FROM pg_group;
CREATE GROUP analytics_users;
CREATE GROUP pii_users;
CREATE GROUP analaytics_authors;

ALTER GROUP analytics_authors ADD USER USER_NAME;
ALTER GROUP analytics_users ADD USER USER_NAME;
ALTER GROUP pill_users ADD USER USER_NAME;
  • Role ์ƒ์„ฑ/์„ค์ •
    • Role์€ ๊ทธ๋ฃน๊ณผ ๋‹ฌ๋ฆฌ ๊ณ„์Šน ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    • Role์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌ๋  ์ˆ˜๋„ ์žˆ๊ณ  ๋‹ค๋ฅธ Role์— ๋ถ€์—ฌ๋  ์ˆ˜๋„ ์žˆ๋‹ค.
    • ํ•œ ์‚ฌ์šฉ์ž๋Š” ๋‹ค์ˆ˜์˜ Role์— ์†Œ์†๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ชจ๋“  Role์„ ๋ฆฌ์ŠคํŠธํ•˜๊ธฐ : SELECT * FROM SVV_ROLES;
CREATE ROLE staff;
CREATE ROLE manager;
CREATE ROLE external;

GRANT ROLE staff TO USER_NAME;
GRANT ROLE staff To ROLE manager;

๐Ÿ“Œ Redshift - COPY, IAM

  • ๊ฐ ํ…Œ์ด๋ธ”์„ CREATE TABLE๋ช…๋ น์œผ๋กœ raw_data ์Šคํ‚ค๋งˆ ๋ฐ‘์— ์ƒ์„ฑ

  • ๊ฐ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ๋˜๋Š” CSVํŒŒ์ผ์„ ๋จผ์ € S3์— ์—…๋กœ๋“œ

    • S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ -> S3 Console
  • S3์—์„œ ํ•ด๋‹น ํ…Œ์ด๋ธ”๋กœ ๋ณต์‚ฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Redshift๊ฐ€ S3์ ‘๊ทผ๊ถŒํ•œ์„ ๊ฐ€์ ธ์•ผํ•จ

    • IAM์—์„œ Redshift๊ฐ€ S3์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” Role์„ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค. -> IAM Console
    • ์ด Role์„ Redshift์— ์ง€์ • -> Redshift Console
  • S3 ๋ฒ„ํ‚ท ์ƒ์„ฑ

  • ํด๋” ์ƒ์„ฑ

  • csvํŒŒ์ผ ์—…๋กœ๋“œ

  • S3 ์ ‘๊ทผ ๊ถŒํ•œ ์„ค์ •
  • Redshift ๊ถŒํ•œ ์ง€์ •

๐Ÿ“Œ Redshift - ์‚ญ์ œ

AWS ์‹ค์Šต์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ๊ฒƒ์€ ์‚ญ์ œ์ด๋‹ค.
๊ณต๋ถ€๋ฅผ ํ•˜๊ณ ๋‚˜์„œ ๋ง๋„์•ˆ๋˜๋Š” ๊ธˆ์•ก์˜ ๊ฒฐ์ œ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ํด๋ผ์šฐ๋“œ์ด๋‹ค.
์‚ญ์ œ์‹œ์— ์ฃผ์˜ํ•ด์•ผํ•  ์ ์ด ์žˆ๋‹ค.
Redshift๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜์„œ ์„œ๋น„์Šค๋ฅผ ์‚ดํŽด๋ณด๋ฉด ํƒ„๋ ฅ์  IP๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์‚ญ์ œํ• ๋•Œ๋Š” ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค, ์ž‘์—… ๊ทธ๋ฃน ์‚ญ์ œ๋ฅผ ์šฐ์„ ์‹œ ํ•ด์•ผํ•œ๋‹ค.
์ด ๋‘ ๊ฐœ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ณง Redshift์˜ ์‚ญ์ œ์ด๋‹ค.

์ด ํ›„ VPC, EC2, ํƒ„๋ ฅ์  IP, S3๋ฅผ ํ™•์ธํ•˜์—ฌ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ถ€๋ถ„๋“ค์„ ๋ชจ๋‘ ์‚ญ์ œํ•ด์ฃผ์ž.

ํƒ„๋ ฅ์  IP๋Š” Redshift์— ์ž๋™์œผ๋กœ ํ• ๋‹น๋˜์–ด ์žˆ์–ด ๋‹จ๋…์œผ๋กœ ์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ˆ
๊ผญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์ž‘์—… ๊ทธ๋ฃน์„ ์‚ญ์ œํ•œ ํ›„์— ์ง„ํ–‰ํ•˜์ž.


0๊ฐœ์˜ ๋Œ“๊ธ€