[AWS] Redshift

Redshift๋Š” AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋น…๋ฐ์ดํ„ฐ์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์ด๋‹ค.

์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๊ฐ€ ๊ฑธ๋ฆฌ๊ณ , ๊ทธ๋ฃน์ด๋‚˜ ์ •๋ ฌ, ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋–ก์น ๋œ ๋ณตํ•ฉ์ ์ธ OLAP ์ฟผ๋ฆฌ๋“ค๋„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

GCP์˜ BigQuery๋‚˜ Clickhouse ๋“ฑ๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.




๋น„์šฉ

๋น„์šฉ์—๋Š” ๊ฝค๋‚˜ ๋‹ค์–‘ํ•œ ์˜ต์…˜์ด ์žˆ๋‹ค.

์ž์„ธํ•œ๊ฑด ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๋Š”๊ฒŒ ์ข‹์€๋ฐ
https://aws.amazon.com/ko/redshift/pricing/

์šฐ์„  ๋ง๋งŒ ์˜จ๋””๋งจ๋“œ์ธ ํ”„๋กœ๋น„์ €๋‹ ์š”๊ธˆ์ด ์žˆ๋‹ค.

์ŠคํŽ™๋ถ€ํ„ฐ๊ฐ€ ๊ฝค ๋†’๊ธด ํ•˜์ง€๋งŒ, ๋น„์‹ธ๋‹ค.

๋ฐ˜๋ฉด์— ์„œ๋ฒ„๋ฆฌ์Šค ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉํ•œ ์ฒ˜๋ฆฌ๋Ÿ‰๋งŒํผ๋งŒ ์ง€๋ถˆ์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

์ด๊ฒŒ ์ข€๋” ๋‚˜์•„๋ณด์ธ๋‹ค.
AWS์—์„œ๋„ ์ด๊ฑธ ๋” ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ . ์ง€๊ธˆ์€ ๊ธฐ๋ณธ์˜ต์…˜์ด ์ด๊ฑฐ๋”๋ผ

ํ•œ๋ฒˆ ๋ง›์ด๋ผ๋„ ๋ด๋ณด์ž.
๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ฒ˜์Œ ์จ๋ณผ ๊ฒฝ์šฐ์—๋Š” ํ”„๋ฆฌํ‹ฐ์–ด์™€๋Š” ๋ณ„๊ฐœ๋กœ 300๋‹ฌ๋Ÿฌ์–ด์น˜ ํฌ๋ ˆ๋”ง์„ ์ œ๊ณตํ•ด์ค€๋‹ค.




์‹œ์ž‘ํ•˜๊ธฐ

์‹œ์ž‘๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด serverless ์˜์—ญ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ํ•˜๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ƒฅ ๊ธฐ๋ณธ๊ฐ’๋Œ€๋กœ ์ค˜๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.


๊ทธ๋Ÿผ ์ด๋Ÿฐ์‹์œผ๋กœ ๊ณต๊ฐ„์ด ์ƒ๊ฒจ๋‚  ๊ฒƒ์ด๋‹ค.
์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ•ด๋ณด๋ฉด ๋œ๋‹ค.




์ž‘์—… ๊ทธ๋ฃน

์–ด์งธ์„œ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ € ์„œ๋ฒ„๋ฆฌ์Šค ์˜์—ญ ๋‚ด์—์„œ๋„ ์ž‘์—…๊ทธ๋ฃน์ด๋ž€ ๋‹จ์œ„๋ฅผ ๋˜ ๋งŒ๋“ค์–ด์•ผ ๊ฑฐ๊ธฐ์„œ ์‹ค์งˆ์ ์ธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€์ถฉ ์ง“๊ณ 


๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ ์ ˆํžˆ ์ง€์ •ํ•ด์ค€๋‹ค.
๋‚˜๋Š” ์ฒ˜์Œ ์„œ๋ฒ„๋ฆฌ์Šค ์˜์—ญ์ด ์ƒ๊ธธ๋•Œ ๋งŒ๋“ค์–ด์กŒ๋˜ default๋กœ๋งŒ ํ–ˆ๋‹ค.


๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์ž˜ ๋งŒ๋“ค์–ด์กŒ๋‹ค๋ฉด ๋œ ๊ฒƒ์ด๋‹ค.




์ฟผ๋ฆฌ ์—๋””ํ„ฐ

Redshift๋Š” ๋” ์ข‹์€ ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•ด์„œ ์ด ์„œ๋น„์Šค๋งŒ์„ ์œ„ํ•œ ์ „์šฉ ์ฝ˜์†”์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

๊ฝค ๋‚˜์˜์ง€ ์•Š์•„๋ณด์ธ๋‹ค.
DB๋‚˜ ํ…Œ์ด๋ธ” ์ƒ์„ฑ๊ฐ™์€ DDL๋„ ๋˜๊ณ , ๋Œ€์ถฉ ์ฟผ๋ฆฌ ์—๋””ํ„ฐ๋งŒ ์—ด์–ด์„œ ์ฟผ๋ฆฌ์งœ๊ณ  ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.
Notebook์€ ์ž์ฃผ ์‚ฌ์šฉํ• ๋งŒํ•œ ์ฟผ๋ฆฌ๋“ค์„ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์—ญํ• ์ธ๋“ฏ์‹ถ๋‹ค.

ํŒ€๋‹จ์œ„์˜ ๊ณต๋™ ์ž‘์—… ๊ด€๋ฆฌ๋„ ๊ณง์ž˜ ์ง€์›ํ•œ๋‹ค.




๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

์ด๊ฒƒ๋„ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์˜ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค > ์Šคํ‚ค๋งˆ > ํ…Œ์ด๋ธ” ...์˜ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์กฐ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ•˜๋‚˜ ๋งŒ๋“ค๋ฉด

์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€๋  ๊ฒƒ์ด๋‹ค.

์Šคํ‚ค๋งˆ๋„ ํ•„์š”ํ•˜๋‹ค๋ฉด ๋งŒ๋“ ๋‹ค.
๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๊ธฐ๋ณธ ์Šคํ‚ค๋งˆ์ธ public์ด ์ œ๊ณต๋˜๊ธด ํ•œ๋‹ค.

์ด์ œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ๋ถ€ํ„ฐ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋‹ค.

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์˜ต์…˜๋“ค์ด ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ๋„ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค๊ณผ ํฐ ์ฐจ์ด์ ์€ ์—†๋‹ค.
๊ธฐ๋ณธ๊ฐ’์ด๋‚˜ NOT NULL, ๊ธฐ๋ณธํ‚ค, Auto increment, Unique ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…๋“ค์€ ๋‹ค ์žˆ๋‹ค.

๋‹ค๋งŒ ์ธ๋ฑ์Šค๋Š” ํŠน์„ฑ์ƒ ์ž๋™์œผ๋กœ ๋‹ค ๊ฑธ์–ด์ฃผ๋‹ˆ๊นŒ ๋”ฐ๋กœ ์—†๋‹ค.

๋งŒ๋“ค๊ณ  ๋‚˜๋ฉด ๊ทธ๋ƒฅ RDB ์“ฐ๋“ฏ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ 

์กฐํšŒํ•˜๋Š” ์‹์œผ๋กœ ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์—๋„ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๊ณ , ์ง‘๊ณ„๋‚˜ ์ •๋ ฌ ๊ฐ™์€ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์„ž์ธ ์ฟผ๋ฆฌ๋„ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค๋Š”๊ฒŒ ๋‹ค๋ฅผ ๋ฟ์ด๋‹ค.




์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์™€๋ณด๊ธฐ

๊ทผ๋ฐ ์ €๊ฑธ๋กœ๋งŒ ๋ญ˜ ํ•˜๋ ค๋ฉด ์‹ฌ์‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์• ์ดˆ์— ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ๊ฑด๋ฐ, ์ €๋ ‡๊ฒŒ ์ฐ”๋”์ฐ”๋” ๋„ฃ์–ด๋ด์•ผ ๋ญ˜ ํ•˜๊ฒ ๋Š”๊ฐ€?

๊ธฐ๋ณธ dev ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด๋ฉด ์ƒ˜ํ”Œ๋ฐ์ดํ„ฐ๊ฐ€ ์ข€ ๋“ค์–ด์žˆ๋‹ค.

์ฒ˜์Œ ์ €๋Ÿฐ์ƒํƒœ๋ผ๋ฉด ํ™œ์„ฑํ™”๋ฅผ ์ข€ ํ•ด์ฃผ๊ณ 


๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ sample_data_dev๋ผ๋Š” DB๊ฐ€ ๋œฌ๋‹ค.

๊ฑฐ๊ธฐ์„œ tickit์ด๋ผ๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ํ•œ๋ฒˆ ๊นŒ๋ดค๋‹ค.

๊ทธ๋Ÿผ ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์ด ๋“ค์–ด์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ธฐ๋ณธ ์ˆ˜์‹ญ๋งŒ๊ฐœ ์ •๋„์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์žˆ๋‹ค.

์ € ์Šคํ‚ค๋งˆ์˜ ๋…ธํŠธ๋ถ์„ ์—ด๋ฉด ๋…ธํŠธ๋ถ์— ๋ชจ์ธ ์ฟผ๋ฆฌ๋“ค๋กœ ๋‹ค์†Œ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋“ค์„ ์‹คํ–‰ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ž˜ ๋ˆ๋‹ค.




S3๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

์ด๋ฒˆ์—” ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ค„๋ณด๊ฒ ๋‹ค.

๊ทผ๋ฐ ๊ทธ๋Ÿฌ๋ ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋””๋‹ค๊ฐ€ ์ €์žฅํ•ด๋†“๊ณ  ๊ทธ๊ฑธ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์ทจํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์—๋Š” S3์™€ DynamoDB๊ฐ€ ์ง€์›๋œ๋‹ค. ๋น„๊ต์  ์‹ธ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•œ S3๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค.

๋จผ์ € ์ง‘์–ด๋„ฃ์„ ๋ฐ์ดํ„ฐ๋ฅผ CSV ๋“ฑ์˜ ํฌ๋งท์œผ๋กœ ๋ฝ‘์•„๋†“๋Š”๋‹ค.
CSV ๋ง๊ณ ๋„ JSON์ด๋‚˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํฌ๋งท์ด ์ง€์›์ด ๋˜๋Š”๋ฐ, ๋ณดํ†ต์€ ๋Œ€์ค‘์ ์ธ CSV์„ ์“ฐ๋Š”๊ฒŒ ํŽธํ•  ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜์ ์€, ๋งจ ์œ„์˜ ๋ฉ”ํƒ€ ํ–‰์ด ์—†์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ˆœ์ˆ˜ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ์—ด๋งŒ ๋‚˜์—ดํ•˜๊ณ  ํ…Œ์ด๋ธ”์˜ ์ˆœ์„œ์— ๋งž์ถฐ์„œ ์ €์žฅํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์—…๋กœ๋“œํ•œ ๋‹ค์Œ์—

(๊ถŒํ•œ์ด ์—†๋‹ค๋ฉด) ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— S3 ์ ‘๊ทผ์„ ์œ„ํ•œ IAM ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์ค€๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฒ„ํ‚ท์„ ์ „์ฒด์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์ผ๋ถ€ ์ง€์ •ํ•ด์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋Œ๋ฆฐ๋‹ค.

copy ํ…Œ์ด๋ธ”๋ช…
from 's3 ๊ฒฝ๋กœ'
iam_role default
delimiter ',' resion ๋ฆฌ์ „

๊ทธ๋Ÿผ, ์งœ์ž”

์ž˜ ๋“ค์–ด๊ฐ„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ ๊ฐ€๊ณตํ•ด์„œ ์จ๋จน๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.



์ฐธ์กฐ
https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/tutorials-redshift.html