| 저장소 | 한 줄 정의 |
|---|---|
| DB (데이터베이스) | 현재 운영에 필요한 데이터를 빠르게 읽고 쓰기 위한 저장소 |
| 데이터 웨어하우스 | 분석을 위해 정제·구조화된 데이터를 보관하는 저장소 |
| 데이터 레이크 | 원시 데이터를 형식에 상관없이 대량으로 쌓아두는 저장소 |
쇼핑몰 서비스가 실시간으로 읽고 쓰는 운영 데이터.
users 테이블
| user_id | name | created_at | |
|---|---|---|---|
| 1 | 김철수 | kim@example.com | 2025-01-03 |
| 2 | 이영희 | lee@example.com | 2025-01-10 |
orders 테이블
| order_id | user_id | total_amount | status | ordered_at |
|---|---|---|---|---|
| 1001 | 1 | 35000 | 배송완료 | 2025-03-01 |
| 1002 | 2 | 12000 | 결제완료 | 2025-03-05 |
products 테이블
| product_id | name | price | stock |
|---|---|---|---|
| 201 | 무선 마우스 | 25000 | 120 |
| 202 | USB 허브 | 18000 | 45 |
목적: 주문 처리, 재고 확인, 회원 인증 등 서비스 운영에 필요한 CRUD 작업.
DB에서 추출한 데이터를 분석 목적에 맞게 변환·적재한 구조.
스타 스키마(Star Schema)를 주로 사용함.
fact_orders 테이블 (사실 테이블)
| order_id | user_id | product_id | date_id | quantity | revenue |
|---|---|---|---|---|---|
| 1001 | 1 | 201 | 20250301 | 1 | 25000 |
| 1002 | 2 | 202 | 20250305 | 2 | 36000 |
dim_date 테이블 (날짜 차원 테이블)
| date_id | date | year | month | week | is_weekend |
|---|---|---|---|---|---|
| 20250301 | 2025-03-01 | 2025 | 3 | 9 | false |
| 20250305 | 2025-03-05 | 2025 | 3 | 10 | false |
분석 쿼리 예시
-- 월별 매출 합계
SELECT
d.year,
d.month,
SUM(f.revenue) AS monthly_revenue
FROM fact_orders f
JOIN dim_date d ON f.date_id = d.date_id
GROUP BY d.year, d.month
ORDER BY d.year, d.month;
-- 상품별 판매량 순위
SELECT
p.name AS product_name,
SUM(f.quantity) AS total_quantity
FROM fact_orders f
JOIN dim_product p ON f.product_id = p.product_id
GROUP BY p.name
ORDER BY total_quantity DESC;
목적: 월별 매출 집계, 상품 판매 순위, 유저 구매 패턴 분석 등 BI/리포팅 작업.
원시 데이터(로그, 이미지, JSON 등)를 그대로 저장. MinIO 또는 S3 기반.
디렉토리 구조 예시
s3://shopping-datalake/
├── raw/
│ ├── logs/
│ │ ├── 2025/03/01/access.log.gz # 웹 서버 접근 로그
│ │ └── 2025/03/05/access.log.gz
│ ├── events/
│ │ ├── 2025/03/01/click_events.json # 클릭 스트림 이벤트
│ │ └── 2025/03/05/click_events.json
│ └── db_snapshot/
│ └── 2025/03/01/orders.parquet # DB 스냅샷
├── processed/
│ ├── user_behavior/
│ │ └── 2025/03/session_features.parquet
│ └── product_recommendation/
│ └── model_input_2025_03.csv
└── ml_models/
└── recommendation/
└── v1.2/model.pkl
활용 예시
| 데이터 | 활용 목적 |
|---|---|
access.log.gz | 유입 경로 분석, 이상 트래픽 탐지 |
click_events.json | 상품 클릭률, 전환율 분석 |
orders.parquet | 장기 구매 패턴 분석, ML 학습 데이터 |
session_features.parquet | 추천 모델 피처 생성 |
model.pkl | 실시간 추천 API에서 로드하여 서빙 |
목적: 머신러닝 학습, 대규모 로그 분석, 장기 데이터 아카이빙.
[쇼핑몰 서비스]
|
| 실시간 읽기/쓰기
v
[DB (MySQL/PostgreSQL)]
|
|-- ETL/CDC --> [데이터 웨어하우스 (Redshift/BigQuery)]
| |
| v
| BI 대시보드 / SQL 분석
|
|-- 로그/이벤트 --> [데이터 레이크 (S3/MinIO)]
|
v
ML 학습 / 대용량 배치 분석
| 구분 | DB | 데이터 웨어하우스 | 데이터 레이크 |
|---|---|---|---|
| 데이터 형태 | 정형 | 정형 | 정형 + 비정형 |
| 주요 작업 | CRUD | SELECT (집계) | 배치 처리, ML |
| 응답 속도 | 밀리초 단위 | 초~분 단위 | 분~시간 단위 |
| 저장 비용 | 높음 | 중간 | 낮음 |
| 대표 기술 | MySQL, PostgreSQL | BigQuery, Redshift | S3, MinIO, HDFS |