OLAP DB์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋ ๋ถ์ํ๊ธฐ ์ข์ ๊ตฌ์กฐ๋ก ์ค๊ณํด์ผ ํ๋ค.
๊ทธ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ด Star Schema๋ค.
Fact ํ ์ด๋ธ + Dimension ํ ์ด๋ธ
- Star Schema๋ ๋ ์ข ๋ฅ์ ํ ์ด๋ธ๋ก ๊ตฌ์ฑ๋๋ค.
| ๊ตฌ๋ถ | Fact ํ ์ด๋ธ | Dimension ํ ์ด๋ธ |
| ์๋ฏธ | ์ค์ ๋ก ์ผ์ด๋ ์ด๋ฒคํธ | ์ด๋ฒคํธ์ ๋ถ๊ฐ ์ ๋ณด |
| ์ค์ฌ | ์ซ์(์ธก์ ๊ฐ) | ํ ์คํธ/์์ฑ |
| ์์ | ์ฃผ๋ฌธ, ํด๋ฆญ, ๊ฒฐ์ | ๊ณ ๊ฐ, ์ํ, ๋ ์ง, ์ง์ญ |
-> ๊ฐ์ด๋ฐ Fact ํ
์ด๋ธ์ ์ค์ฌ์ผ๋ก Dimension ํ
์ด๋ธ๋ค์ด ๋ณ์ฒ๋ผ ๋ถ์ด์๋ ๊ตฌ์กฐ๋ผ Star Schema๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ค๊ณ ์์
[dim_customer] [dim_product]
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ customer_id โ โ product_id โ
โ name โ โ name โ
โ region โ โ category โ
โ age_group โ โ brand โ
โโโโโโโโฌโโโโโโโโ โโโโโโโโฌโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ fact_orders โ
โ order_id customer_id โ
โ date_id product_id โ
โ amount quantity โ
โ discount revenue โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โ
โผ
[dim_date]
โโโโโโโโโโโโโโโโ
โ date_id โ
โ year โ
โ month โ
โ weekday โ
โ is_holiday โ
โโโโโโโโโโโโโโโโ
์ง๊ด์ ์ธ ๋ถ์ ์ฟผ๋ฆฌ
- Star Schema๋ก ์ค๊ณํ๋ฉด ๋ถ์ ์ฟผ๋ฆฌ๊ฐ ์ผ๊ด๋ ํจํด์ ๊ฐ์ง๋ค.
- ํญ์ Fact ํ ์ด๋ธ์ ์ค์ฌ์ผ๋ก ํ์ํ Dimension์ JOINํ๋ ๊ตฌ์กฐ์ด๋ค.
-- 2024๋
1์, ์์ธ ๊ณ ๊ฐ์ ์นดํ
๊ณ ๋ฆฌ๋ณ ๋งค์ถ
SELECT
c.region,
p.category,
SUM(f.revenue)
FROM fact_orders f
JOIN dim_customer c ON f.customer_id = c.customer_id
JOIN dim_product p ON f.product_id = p.product_id
JOIN dim_Date d ON f.date_id = d.date_id
WHERE d.year = 2024 AND d.month = 1
AND c.region = '์์ธ'
GROUP BY c.region, p.category;
Fact ํ ์ด๋ธ ์ค๊ณ ์์น
- ์ซ์(์ธก์ ๊ฐ)๋ง ๋ฃ๋๋ค.
- FK๋ง ๋ฃ๋๋ค.
- ํ ์คํธ ์์ฑ์ ๋ฃ์ง ์๋๋ค.
- Grain์ ๋ช
ํํ ์ ํ๋ค.
- Grain์ด๋? "์ด ํ ์ด๋ธ์ ํ ํ๋๊ฐ ๋ฌด์์ ์๋ฏธํ๋๊ฐ". ์ค๊ณ ์ ์ ๋ฐ๋์ ๋จผ์ ์ ํด์ผ ํ๋ค.
- Grain์ด ๋ฎ์์๋ก ๋ ๋ค์ํ ๋ถ์์ด ๊ฐ๋ฅํ์ง๋ง ๋ฐ์ดํฐ ์๋ ๋์ด๋๋ค.
Star Schema vs Snowflake Schema
- Star Schema์์ Dimension ํ ์ด๋ธ์ ๋ ์ ๊ทํํ ๊ฒ -> Snowflake Schema
- Snowflake Schema๋ JOIN์ด ๋ง์์ ธ์ ์ฟผ๋ฆฌ๊ฐ ๋ณต์กํด์ง๋ ๋จ์ ์ด ์๋ค.
Star Schema Snowflake Schema
dim_product dim_product
โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โproduct_idโ โproduct_idโโโโโโถโbrand_id โ
โname โ โname โ โbrand_nameโ
โcategory โ โbrand_id โ โโโโโโโโโโโโ
โbrand โ โcategory_idโโโโถ โโโโโโโโโโโโ
โโโโโโโโโโโโ โโโโโโโโโโโโ โcategory โ
โโโโโโโโโโโโ'Database > Engineering' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [DE] ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์ค๊ณ ์์น (2) | 2026.05.22 |
|---|---|
| [DE] ๋ฐฐ์น vs ์คํธ๋ฆฌ๋ฐ (2) | 2026.05.21 |
| [DE] dbt(data build tool) - SQL์ ์ฝ๋์ฒ๋ผ ๊ด๋ฆฌํ๋ ๋๊ตฌ (0) | 2026.05.21 |
| [DE] OLTP vs OLAP (2) | 2026.05.19 |