๐ย ๊ณต๋ถ ๋ด์ฉ
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
Data๋ฅผ ์์ค๋ก๋ถํฐ ๋ชฉ์ ์ง๋ก ๋ณต์ฌํ๋ ์์
- (Write code using)Python, Scalar
- SQL Query(DW or DL -> DW)
- ๋ชฉ์ ์ง : (๋๋ถ๋ถ)
DATA WAREHOUSE
๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค ๊ตฌ์ฑ
|
|
๋ค์์ ETL๋ค ๊ฐ์ ์์๋ฅผ ์ ํ๊ณ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํด์ฃผ๋ ํ๋ ์์ํฌ(=Airflow
)๊ฐ ํ์ํด์ง
ETL
E xtract,T ransform andL oad
- Date Pipeline, ETL, Data Workflow, DAG(in Airflow)
ETL vs. ELT
์ฉ์ด | ์ค๋ช ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ | |
---|---|---|
ETL | ๋ฐ์ดํฐ์์ค -> ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค | ๋ฐ์ดํฐ ์์ง๋์ด |
ELT | ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(or ๋ฐ์ดํฐ ๋ ์ดํฌ) ๋ด๋ถ, ์๋ก์ด ๋ฐ์ดํฐ ์์ฑ | ๋ฐ์ดํฐ ๋ถ์๊ฐ |
ELT ํ๋ก์ธ์ค
- SQL
CTAS
- dbt : Data Build Tool (Done by Analytics Engineering)
Data Lake vs. Data Warehouse
๋ฐ์ดํฐ ๋ ์ดํฌ (Data Lake)
- ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ณด๋ค
๋ช๋ฐฐ ๋ ํฐ ํฌ๊ธฐ์ ์ ์ฅ์
- ๊ตฌ์กฐํ ๋ฐ์ดํฐ + ๋น๊ตฌ์กฐํ ๋ฐ์ดํฐ
- ๋ณด์กด ๊ธฐํ์ด ์๋, ๋ฐ์ดํฐ๋ฅผ
์๋ณธ
์ผ๋ก ์ ์ฅํ๋ ์ ์ฅ์
๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค (Data Warehouse)
- ๋ณด์กด ๊ธฐํ์ด ์๋, ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ฅผ
์ ์ฅํ๊ณ ์ฒ๋ฆฌ
ํ๋ ์ ์ฅ์ - ์๊ฐํ๋ฅผ ์งํํ๋ BIํด์ ๋ฐฑ์๋๋ก ์ฐ๊ฒฐ
Data Lake & ELT
Data Sources | -> | Data Lake (S3, GCS,..) | -> | Data Transforms (Spark, Athena,..) | -> | Data Warehouse (==Data Mart) |
- Data Lake์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ Data Warehouse์ ์ ์ฌํ๋ ๊ณผ์ ๋
ELT
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์ข ๋ฅ
Raw Data ETL Jobs (ETL)
- By Data Engineer
- ์ธ๋ถ์ ๋ด๋ถ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฝ์ด
- ๋ฐ์ดํฐ ํฌ๋งท ๋ณํ ํ (๋ฐ์ดํฐ๊ฐ ์ปค์ง๋ฉด Spark ๋ฑ ํ์ฉ)
- ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ๋ก๋
Summary / Report Jobs (ELT)
By Data Analyst
Analytics Engineer (DBT Tool)
DW or DL์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ๋ค์ DW์ ์ฐ๋ ๊ณผ์
Raw Data๋ฅผ ์ฝ๊ณ ์ผ์ข ์
๋ฆฌํฌํธ
๋ ์จ๋จธ๋ฆฌ ํํ์์ ์ ๋
ํ ์ด๋ธ์ ๋ค์ ๋ง๋๋ ์ฉ๋ํน์ํ ํํ : AB ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํ๋ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
Production Data Jobs
DW์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ๋ค๋ฅธ Storage์ ์ฐ๋ ๊ณผ์ (๋ฐ์ดํฐ ๋ชฉ์ ์ง๊ฐ ์ธ๋ถ Storage)
์ผ๋ฐ์ ์ธ ํ๊ฒ ์คํ ๋ฆฌ์ง
- Cassandra/HBase/DynamoDB ๋ฑ๊ณผ ๊ฐ์ NoSQL (ML๊ณผ์ ์์ ํ์ํ ํน์ ํผ์ณ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐ)
- MySQL๊ณผ ๊ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(OLTP,
Production DB
) - Redis, Memcache์ ๊ฐ์ ์บ์
- ElasticSearch์ ๊ฐ์ ๊ฒ์์์ง
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋ง๋ค ๋ ๊ณ ๋ คํ ์
์ด์ ์ค ๋ฐ์ํ๋ ์ฌ๋ฌ ๋ฌธ์ ๋ค
- ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์คํจ
- ๋ฒ๊ทธ :<
- ๋ฐ์ดํฐ ์์ค์ ๋ฌธ์
- ex: ๋ฐ์ดํฐ ํฌ๋งท ๋ณํ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ฉด?
- ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ๋ค ๊ฐ ์์กด๋์ ๋ํ ์ดํด ๋ถ์กฑ
- ํน์ ํ ์ด๋ธ์ ์ด๋ฆ์ ๋ฐ๊พธ๊ฑฐ๋, ์ปฌ๋ผ์ ๋๋ ํ๋ ๋ฑ ๋ณ๊ฒฝ์ด ์๊ธฐ๋ฉด ์ฌ๊ธฐ์ ์์กดํ๋ ๋ค๋ฅธ ํ์ดํ๋ผ์ธ์ ๋ฌธ์ ๊ฐ ์๊น
- ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์ฆ๊ฐ -> ์ ์ง๋ณด์ ๋น์ฉ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐ
- ๋ฐ์ดํฐ ์์ค ์ฌ์ด์ ์์กด๋๊ฐ ์๊ธฐ๋ฉด์ ๋์ฑ ๋ณต์กํด์ง
- ex: ๋ง์ผํ ์ฑ๋ ์ ๋ณด๊ฐ ์ ๋ฐ์ดํธ ๋์ง ์์ผ๋ฉด ์ด ๊ด๋ จ ๋ค๋ฅธ ๋ชจ๋ ์ ๋ณด๊ฐ ๊ฐฑ์ ๋์ง ์์
- ๋ ๋ง์ ํ ์ด๋ธ์ ๊ด๋ฆฌํด์ผํจ
- ๋ฐ์ดํฐ ์์ค ์ฌ์ด์ ์์กด๋๊ฐ ์๊ธฐ๋ฉด์ ๋์ฑ ๋ณต์กํด์ง
Best Practices
- Full Refresh
- ๊ฐ๋ฅํ๋ค๋ฉด, ๋งค๋ฒ ํต์งธ๋ก ์ ๋ถ ๋ณต์ฌํด์ ํ ์ด๋ธ์ ๋ง๋ค๊ธฐ
- Incremental Update๋ง ๊ฐ๋ฅํ๋ค๋ฉด?
- Incremental Update : ์๋ก ์์ฑ๋๊ฑฐ๋, ์ ๋ฐ์ดํธ ๋ ๋ ์ฝ๋๋ค๋ง ์ฝ์ด์ค๋ ๋ฐฉ์
- full refresh ํ ๋งํผ ์ถฉ๋ถํ ์๊ฐ์ด ์๋๊ฐ?
- ํน์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์๋ก ์์ฑ๋๊ฑฐ๋ ์ ๋ฐ์ดํธ ๋ ๋ ์ฝ๋๋ง ์ง์ ํด์ ์ฝ์ด์ฌ ์ ์์ด์ผ ํจ
- ๋ฉฑ๋ฑ์ฑ(Idempotency) ๋ณด์ฅ
- ๋์ผํ ๋ฐ์ดํฐ ์์ค์ ๋ํด ํ์ดํ๋ผ์ธ์ ์ฌ๋ฌ๋ฒ ์คํํด๋ ์ต์ข
ํ
์ด๋ธ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์์์ผ ํจ
- ex: ์ค๋ณต ๋ฐ์ดํฐ X
- ๋ฉฑ๋ฑ์ฑ์ด ๊นจ์ง ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํ์ง์ ๋ฌธ์ ๊ฐ ๋ฐ์
- ์คํจ๋ฅผ ํ๋๋ผ๋ ๋ฉฑ๋ฑ์ฑ์ด ๊นจ์ง์ง ์๋๋ก ๊น๋ํ๊ฒ ์คํจํด์ผ ํจ
- ์ค์ ํฌ์ธํธ : critical point๋ค์ด ํ๋์ atomic action์ผ๋ก ์คํ์ด ๋์ด์ผ ํจ (๋ค๊ฐ์ด ์ฑ๊ณต, ๋ค๊ฐ์ด ์คํจ)
- SQL transaction
- Backfill
- ์คํจํ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋ค์ ์คํํ๋ ๊ณผ์ ์ด ์ฌ์์ผ ํจ
- full refresh : backfill์ด ์ฌ์
- Airflow: backfill
- ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์ ๋ ฅ, ์ถ๋ ฅ์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ๊ธฐ
- ๋น์ฆ๋์ค ์ค๋, ํ
ํฌ๋์ปฌ ์ค๋ ๋ช
์ํ์ฌ ๊ธฐ๋ก์ผ๋ก ๋จ๊ธฐ๊ธฐ
- ๋น์ฆ๋์ค ์ค๋ : ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ์ฌ๋
- ๋ฐ์ดํฐ ์นดํ๋ก๊ทธ
- ๋ฐ์ดํฐ ๋์ค์ปค๋ฒ๋ฆฌ
- ๋ฐ์ดํฐ ์์กด์ฑ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ (
๋ฐ์ดํฐ ๋ฆฌ๋์ง
)๋ฅผ ํด๊ฒฐํ ๋ ํ์
์ฌ์ฉ๋์ง ์๋
๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก์ญ์
- ํ ์ด๋ธ์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธ
- ์ฌ์ฉํ์ง ์๋ ํ ์ด๋ธ์ ์ฐพ๊ณ , ์ด ํ ์ด๋ธ์ ์์ฑํ๋ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ์ญ์
- ์ฌ๊ณ ๋ฆฌํฌํธ(post-mortem report) ์์ฑํ๊ธฐ
- ๋์ผํ, ๋น์ทํ ์ฌ๊ณ ๊ฐ ์ฌ๋ฐํ๋ ๊ฒ์ ๋ฐฉ์ง
- ์ฌ๊ณ ์์ธ์ ์ดํดํ๊ณ , ๋ฐฉ์งํ๊ธฐ ์ํ
์ก์ ์์ดํ
์ด ์ค์ - ๊ธฐ์ ๋ถ์ฑ ์ ๋๋ฅผ ์ด์ผ๊ธฐํ๋ ๋ฐ๋ก๋ฏธํฐ
์ค์
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ฒดํฌ
- ์ ๋ ฅ ๋ ์ฝ๋ ์, ์ถ๋ ฅ ๋ ์ฝ๋ ์๋ฅผ ์ฒดํฌ
- ์จ๋จธ๋ฆฌ ํ ์ด๋ธ ์์ฑ, primary key uniqueness ๋ณด์ฅ ์ฌ๋ถ ์ฒดํฌ
- ์ค๋ณต ๋ ์ฝ๋ ์ฒดํฌ
- …
ETL ์์ฑ ์ค์ต
- #TODO
Airflow
์๊ฐ
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋
๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ํ๋ ์์ํฌ
๊ตฌ์ฑ ์ค๋ช
๐ย CHECK
(์ด๋ ต๊ฑฐ๋ ์๋กญ๊ฒ ์๊ฒ ๋ ๊ฒ ๋ฑ ๋ค์ ํ์ธํ ๊ฒ๋ค)