์ด๋ฒ์ฃผ์๋ 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 ~