DB vs 데이터 웨어하우스 vs 데이터 레이크

choi·2026년 3월 9일
post-thumbnail
저장소한 줄 정의
DB (데이터베이스)현재 운영에 필요한 데이터를 빠르게 읽고 쓰기 위한 저장소
데이터 웨어하우스분석을 위해 정제·구조화된 데이터를 보관하는 저장소
데이터 레이크원시 데이터를 형식에 상관없이 대량으로 쌓아두는 저장소

쇼핑몰 데이터 예시

DB (일반 데이터베이스)

쇼핑몰 서비스가 실시간으로 읽고 쓰는 운영 데이터.

users 테이블

user_idnameemailcreated_at
1김철수kim@example.com2025-01-03
2이영희lee@example.com2025-01-10

orders 테이블

order_iduser_idtotal_amountstatusordered_at
1001135000배송완료2025-03-01
1002212000결제완료2025-03-05

products 테이블

product_idnamepricestock
201무선 마우스25000120
202USB 허브1800045

목적: 주문 처리, 재고 확인, 회원 인증 등 서비스 운영에 필요한 CRUD 작업.


데이터 웨어하우스

DB에서 추출한 데이터를 분석 목적에 맞게 변환·적재한 구조.
스타 스키마(Star Schema)를 주로 사용함.

fact_orders 테이블 (사실 테이블)

order_iduser_idproduct_iddate_idquantityrevenue
1001120120250301125000
1002220220250305236000

dim_date 테이블 (날짜 차원 테이블)

date_iddateyearmonthweekis_weekend
202503012025-03-01202539false
202503052025-03-052025310false

분석 쿼리 예시

-- 월별 매출 합계
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데이터 웨어하우스데이터 레이크
데이터 형태정형정형정형 + 비정형
주요 작업CRUDSELECT (집계)배치 처리, ML
응답 속도밀리초 단위초~분 단위분~시간 단위
저장 비용높음중간낮음
대표 기술MySQL, PostgreSQLBigQuery, RedshiftS3, MinIO, HDFS
profile
늦게나마 정신을 차리려고 하는 개발 뭐시기하는 사람

0개의 댓글