AWS์์ ์ง์ํ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ์๋น์ค์ด๋ค.
์ต์ 160GB๋ก ์์ํด์ 2PB์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ ์ฝ๋ ๋ณ๋ก ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ์ปฌ๋ผ๋ณ๋ก ์ ์ฅํ์ฌ ์ปฌ๋ผ๋ณ ์์ถ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ปฌ๋ผ์ ์ถ๊ฐ/์ญ์ ํ๋๊ฒ์ด ์์ฃผ ๋น ๋ฅด๋ค.
์๋๋ณด๋ค๋ ์ฒ๋ฆฌ ์ฉ๋์ ์ค์ ์ ๋ OLAP(Online Analytical Processing) DB์ด๊ธฐ ๋๋ฌธ์ ํ๋ก๋์ DB๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์ ์ ํ์ง ์๋ค. Primary key uniqueness๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค.
Postgresql 8.*
๊ณผ SQL์ด ํธํ๋๋ค. ๋ํ Postgresql 8.*
์ ์ง์ํ๋ ํด์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (JDBC/ODBC)๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
์์ ์๋ ๊ณ ์ ๋น์ฉ ์ต์
๋ง์ด ์์์ง๋ง ์ต๊ทผ ๊ฐ๋ณ๋น์ฉ ์ต์
๋ ์ ๊ณต๋๊ณ ์๋ค. (Serverless Redshift)
์๋ ๊ฐ๊ฒฉํ๋ ๊ณ ์ ๋น์ฉ ์ต์
ํ
์ด๋ธ์ด๋ค. Dense Storage๋ ์ฒ๋ฆฌ์ฉ๋์, Dense Compute๋ ์ฒ๋ฆฌ์๋์ ์ค์ ์ ๋ ๋
ธ๋์ด๋ค. Managed Storage๋ ์ฒ๋ฆฌ์ฉ๋๊ณผ ์ฒ๋ฆฌ์๋ ๋ชจ๋ ๋์ ๋
ธ๋์ด๊ณ ๊ทธ๋งํผ ๊ฐ๊ฒฉ๋ ๊ต์ฅํ ๋น์ธ๋ค.
์ฒ์ AWS ๊ณ์ ์ ์์ฑํ๊ณ ์ฒ์ Redshift Serverless๋ฅผ ์ด์ฉํ๋ค๋ฉด 3๋ฌ๊ฐ, ํน์ $300 ๊น์ง ๋ฌด๋ฃ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Snowflake๋ BigQuery ๊ฐ์ ๊ฒฝ์ฐ, ํน๋ณํ ์ฉ๋์ด ์ ํด์ ธ์์ง ์๊ณ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ ๋ฆฌ์์ค์ ํด๋นํ๋ ๋น์ฉ์ ์ง๋ถํ๋ ๋ฐ ๋ฐํด Redshift๋ ์ฉ๋์ด ๋ถ์กฑํด์ง ๋๋ง๋ค ์๋ก์ด ๋ ธ๋๋ฅผ ์ถ๊ฐ(Scale Out)ํ๊ฑฐ๋ ๋ ธ๋๋ฅผ ์ ๊ทธ๋ ์ด๋(Scale Up)ํ๋ ๋ฐฉ์์ผ๋ก ์ค์ผ์ผ๋ง์ ํ๋ค. ์ด๋ฅผ Resizing์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ Auto Scaling ์ต์ ์ ์ค์ ํ๋ฉด ์๋์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
Snowflake๋ BigQuery์ Redshift๋ฅผ ๋น๊ตํด๋ดค์ ๋ ์ ์๊ฐ ๋ ํ๋ ฅ์ ์ผ๋ก ์ค์ผ์ผํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ ์ด๋ผ๊ณ ๋ณผ ์ ์์ง๋ง, ๋น์ฉ์ ์์ธก์ด ๋ถ๊ฐํ๋ค๋ ๋จ์ ์ด ์๋ค.
Redshift๊ฐ 2๋ ์ด์์ ๋
ธ๋๋ก ๊ตฌ์ฑ๋๋ฉด ๋ ์ฝ๋๋ค์ ๋ถ์ฐ์ ์ฅ๋์ด์ผ ํ๊ณ , ์ด๋ป๊ฒ ๋ถ์ฐ ์ ์ฅ๋์ด์ผ ํ๋์ง ์ฌ์ฉ์๊ฐ ์ ํด์ฃผ์ด์ผ ํ๋ค.
๊ทธ๋ฌ๊ธฐ ์ํด์๋ Diststyle
, Distkey
, Sortkey
์ด 3๊ฐ์ง์ ํค์๋๋ฅผ ์์์ผ ํ๋ค.
Diststyle
: ๋ ์ฝ๋ ๋ถ๋ฐฐ๊ฐ ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋ ์ง ๊ฒฐ์ ํ๋ค. All, Even, Key ์ต์
์ด ์์ผ๋ฉฐ All์ ๋ชจ๋ ๋
ธ๋์๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฐฐํ๊ณ , Even์ ๋
ธ๋๋ฅผ ๋๋ฉด์ ๊ณ ๋ฅด๊ฒ ๋ถ๋ฐฐํ๊ณ , Key๋ ์ ํํ key ๊ฐ์ ๋ฐ๋ผ ๋ถ๋ฐฐํ๋ค.
Distkey
: Diststyle
์ด key์ธ ๊ฒฝ์ฐ, ๋ ์ฝ๋๊ฐ ์ด๋ค ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐฐํฌ๋๋ ์ง ๋ํ๋ธ๋ค. key๋ฅผ ์๋ชป ์ ํํ์ ๊ฒฝ์ฐ ๋ ์ฝ๋ ๋ถํฌ์ Skew๊ฐ ๋ฐ์, ์ฆ ํน์ ๋
ธ๋์๋ง ์ง์คํด์ ๋ฐ์ดํฐ๊ฐ ๋ถ๋ฐฐ๋๋ ๊ฒฝ์ฐ ๋ถ์ฐ์ฒ๋ฆฌ์ ํจ์จ์ฑ์ด ์ฌ๋ผ์ง๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค.
BigQuery๋ Snowflake์ ๊ฒฝ์ฐ ์์คํ
์ด ์์์ ์ ํํด์ฃผ๋ฏ๋ก ์ด๋ฐ ์์ฑ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ ํ์๊ฐ ์๋ค...
Sortkey
: ๋ ์ฝ๋๊ฐ ํ ๋
ธ๋ ๋ด์์ ์ด๋ค ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๋ ์ง ๋ํ๋ธ๋ค. ์ด๋ ๋ณดํต ํ์์คํฌํ ํ๋๊ฐ ๋๋ค.
CREATE TABLE my_table (
column1 INT,
column2 VARCHAR(50),
column3 TIMESTAMP,
column4 DECIMAL(18,2)
) DISTSTYLE KEY DISTKEY(column1) SORTKEY(column3);
my_table
์ ๋ ์ฝ๋๋ค์ column1
์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฐฐ๋๊ณ , ๊ฐ์ ๋
ธ๋์์์๋ column3
์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋๋ค.
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ํ๋ ์์ํฌ์ธ Airflow๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ฌ S3์ ์ ๋ก๋ํ๊ณ , ์ ๋ก๋๋ ํ์ผ์ ์ฝ์ด Redshift๋ก ํ๋ฒ์ ๋ณต์ฌํ๋ workflow๋ฅผ ์์ฑํ๋ค.
Redshift๊ฐ S3๋ก๋ถํฐ ํ์ผ์ ์ฝ์ ๋๋ S3์ ๋ํ ์ฝ๊ธฐ ๊ถํ์ด ํ์ํ๋ค. ๋ฐ๋ผ์ S3 ์ฝ๊ธฐ๊ฐ ๊ฐ๋ฅํ IAM Role์ ์์ฑํด์ฃผ์ด Redshift์ ์ ์ฉํ๋ ์ ์ฐจ๊ฐ ํ์ํ๋ค.
S3์ ์ ๋ก๋ํ ๋๋ ์ปฌ๋ผ ๊ธฐ๋ฐ ์ ์ฅํฌ๋งท์ธ parquet(ํ์ผ์ด)๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
์ฐธ๊ณ
https://www.databricks.com/kr/glossary/what-is-parquet