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

[Week6 ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์™€ SQL ๊ธฐ๋ณธ] TIL 22์ผ์ฐจ - Redshift ์‚ฌ์šฉํ•˜๊ธฐ

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2023. 11. 14. 18:24
728x90

์ด๋ฒˆ์ฃผ์—๋Š” Redshift๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  Colabํ™˜๊ฒฝ์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋Š” ์‹ค์Šต์„ ์ง„ํ–‰ํ•œ๋‹ค.

์šฐ์„ , AWS์‚ฌ์˜ Redshift๋ฅผ ๊ตฌ์ถ•ํ•ด๋ณด์ž.

 

0) Redshift๋ž€?

Redshift๋Š” ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค ์„œ๋น„์Šค์ด๋‹ค. (↔ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)

1.๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์•„ํ‚คํ…์ฒ˜ ์‚ฌ์šฉ : ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฉฐ, ํด๋Ÿฌ์Šคํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•˜์—ฌ ํ™•์žฅ์„ฑ์„ ํ™•๋ณด
2. ์ปฌ๋Ÿผ ๊ธฐ๋ฐ˜ ์ €์žฅ : ํ•„์š”ํ•œ ์ปฌ๋Ÿผ๋งŒ์„ ์ฝ์–ด์˜ค๋Š”๋ฐ ํšจ๊ณผ์ . ๋ถ„์„ ์ฟผ๋ฆฌ์— ์ ํ•ฉํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์••์ถ• ๋ฐ ์ €์žฅ ๊ณต๊ฐ„์„ ์ตœ์ ํ™”
3. SQL ํ˜ธํ™˜์„ฑ : ๊ธฐ์กด SQL ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ

 

1) Redshift ๊ตฌ์ถ•

1. ์šฐ์„  ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ง€์—ญ๊ณผ ์„ค์ •๋œ ์ง€์—ญ์ด ๋™์ผํ•œ์ง€ ํ™•์ธํ•œ๋‹ค.    Seoul

2. Amazon redshift๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  Clusters๋ฅผ ์„ ํƒํ•œ๋‹ค(๋ณธ์ธ์˜ ๊ฒฝ์šฐ severless๋ง๊ณ  ์ผ๋ฐ˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒํ•˜์˜€๋‹ค.)

- ํด๋Ÿฌ์Šคํ„ฐ ์‹๋ณ„์ž๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.    learnde
- ๋…ธ๋“œ์™€ ๊ฐœ์ˆ˜๋ฅผ ์„ ํƒํ•œ๋‹ค(RA3๋ณด๋‹ค๋Š” DC2๊ฐ€ ๋” ์ €๋ ดํ•˜๋‹ค)

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.    awsuser

- Redshift๋Š” default ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋™์ผ ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ๋งŒ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค, ์™ธ๋ถ€(Colab)์—์„œ๋„ ํ†ต์‹ ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด configuration์„ ์ผ๋ถ€ ๋ณ€๊ฒฝํ•ด ์ฃผ์ž.

Additional configuratione - use defaults ํ•ด์ œ

Network&Security - Publicly accessible - Allow public connections to Amazon Redshift.

 

 

2) ์‹ค์Šต ์˜ˆ์ œ ์†Œ๊ฐœ

์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” ์›นํŽ˜์ด์ง€์˜ ๊ตฌ๋งค์— ์–ด๋–ค ์ฑ„๋„์ด ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ, ์–ด๋–ค ์ฑ„๋„์— ์–ผ๋งŒํผ์˜ ๊ด‘๊ณ ๋ฅผ ํ• ์ง€๋ฅผ ์•Œ์•„๋ณด๋Š” ์‹ค์Šต์ด๋‹ค.

 

์กฐ๊ฑด1. ์‚ฌ์šฉ์ž๋Š” ์ง์ ‘/ํŠน์ • ์ฑ„๋„(๋งํฌ)๋ฅผ ํ†ตํ•ด ๊ตฌ๋งคํŽ˜์ด์ง€์— ์ ‘์†ํ•œ๋‹ค.

์กฐ๊ฑด2. ์„ธ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ƒ์„ฑ๋œ๋‹ค. (๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž(1): ์„ธ์…˜(N) ๊ด€๊ณ„์ด๋‹ค)

  • ์‚ฌ์šฉ์ž๊ฐ€ ์™ธ๋ถ€๋งํฌ๋‚˜ ์ง์ ‘๋ฐฉ๋ฌธํ•  ๊ฒฝ์šฐ ์ƒ์„ฑ
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ›„ 30๋ถ„๊ฐ„ ์–ด๋– ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ

์กฐ๊ฑด3. ์ฑ„๋„์€ ์„ธ์…˜์„ ๋งŒ๋“ค์–ด๋‚ธ ๊ฒฝ์œ ์ง€(์ง์ ‘์ ‘์† direct์ด ์•„๋‹Œ๊ฒฝ์šฐ)๋กœ ์ธ์Šคํƒ€๊ทธ๋žจ, ํŽ˜์ด์Šค๋ถ๋“ฑ์˜ ๊ด‘๊ณ ์„ ๊ฒŒ์‹œํ•œ ํ”Œ๋žซํผ์„ ๋งํ•œ๋‹ค.

 

ํ…Œ์ด๋ธ” ๋ชฉ๋ก

ํฌ๊ฒŒ ๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

user_session_channel
- userId
- sessionId
- channel
int
varchar
varchar

 

session_timestamp
- sessionId
- ts
varchar
timestamp

 

 

3) SQL ๋ฌธ๋ฒ•

sql ๋ฌธ๋ฒ•์€ ์ •ํ•ด์ง„ ๋ถ€๋ถ„์™ธ์—๋Š” ํ˜‘์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

ํƒœ์ด๋ธ”/ํ•„๋“œ์ด๋ฆ„์˜ ๋ช…๋ช…๊ทœ์น™(๋‹จ์ˆ˜ํ˜• vs ๋ณต์ˆ˜ํ˜• // _ vs CamelCasing)

 

์ฃผ์„

  • ํ•œ์ค„์ฃผ์„ --
  • ์—ฌ๋Ÿฌ์ค„ ์ฃผ์„ /* */

DDL (Create/Alter/Rename/Drop)

  • CREATE
CREATE TABLE ํ…Œ์ด๋ธ”๋ช…(
    ์ปฌ๋Ÿผ๋ช…1 ์ž๋ฃŒํ˜• primary key,
    ์ปฌ๋Ÿผ๋ช…2 ์ž๋ฃŒํ˜•
);

ํ”„๋กœ๋•์…˜ DB์˜ ๊ฒฝ์šฐ primary key์˜ uniqueness๋ฅผ ๋ณด์žฅํ•ด์ค€๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋Š” uniqueness๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด DW์˜ ๊ฒฝ์šฐ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— uniqueness๋ฅผ ๋ณด์žฅํ•˜๋ ค๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ˆ˜ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. primary key ํ‘œ์‹œ๋ฅผ ํ•ด๋„ uniquness๊ฐ€ ๋ณด์žฅ์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค ๋ฐ–์˜ ์ฝ”๋“œ ์ฐจ์›์—์„œ ์ œ์•ฝ์„ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

- CTAS

ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•จ๊ณผ ๋™์‹œ์— ๋‚ด์šฉ์„ ์ฑ„์šฐ๋Š” ๊ธฐ๋Šฅ. SELECT ๋ฌธ์žฅ์„ ํ†ตํ•ด ์ฝ์–ด๋“ค์ธ ๋‚ด์šฉ์„ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•œ๋‹ค.

CREATE TABLE ํ…Œ์ด๋ธ”๋ช… AS SELECT ~

 

  • DROP
DROP TABLE ํ…Œ์ด๋ธ”๋ช…;

์ด ๊ฒฝ์šฐ, ํ…Œ์ด๋ธ”์ด ์—†์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์˜ ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ์–ด ์‚ฌ์šฉํ•œ๋‹ค.

DROP TABLE IF EXISTS ํ…Œ์ด๋ธ”๋ช…;

 

  • ALTER 

์ปฌ๋Ÿผ ์ˆ˜์ •

- ์ƒˆ๋กœ์šด ์ปฌ๋Ÿผ ์ถ”๊ฐ€(ADD)

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… ADD COLUMN ์ปฌ๋Ÿผ๋ช… ์ปฌ๋Ÿผํƒ€์ž…;

- ๊ธฐ์กด ์ปฌ๋Ÿผ ์ด๋ฆ„ ๋ณ€๊ฒฝ(RENAME)

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… RENAME ๊ธฐ์กด์ปฌ๋Ÿผ๋ช… TO ์ƒˆ์ปฌ๋Ÿผ๋ช…;

- ๊ธฐ์กด ์ปฌ๋Ÿผ ์ œ๊ฑฐ(DROP)

ALTER TABLE ํ…Œ์ด๋ธ”๋ช… DROP COLUMN ๊ธฐ์กด์ปฌ๋Ÿผ๋ช…;

ํ…Œ์ด๋ธ” ์ˆ˜์ •

- ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ณ€๊ฒฝ(RENAME)

ALTER TABLE ๊ธฐ์กดํ…Œ์ด๋ธ”๋ช… RENAME TO ์ƒˆํ…Œ์ด๋ธ”๋ช…

 

 

DML(Insert/Select/Update/Delete)

  • INSERT INTO TABLE VALUES (value1, value2, ...)

๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— INSERT ๊ตฌ๋ฌธ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ๋ณด๋‹ค๋Š” 

ํŒŒ์ผ(CSV)๋ฅผ ํ•œ๋ฒˆ์— BULK๋กœ COPY ํ•˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • UPDATE SET ์ปฌ๋Ÿผ1=๊ฐ’1, ์ปฌ๋Ÿผ2=๊ฐ’2 WHERE ์กฐ๊ฑด
  • DELETE FROM ~ // TRUNCATE
  • SELECT FROM WHERE GROUPBY HAVING ORDERBY ~

 

 

 

 

728x90