15분
분석팀이 매번 30분씩 기다려요
Day 2: 분석팀이 매번 30분씩 기다려요 - 차원 모델링
분석팀이 매번 30분씩 기다려요
데이터 모델링 > Day 2: 분석팀이 매번 30분씩 기다려요 - 차원 모델링
학습 목표
OLTP와 OLAP의 차이를 체감한다 차원 모델링이 왜 필요한지 이해한다
분석팀의 요청
"이번 달 카테고리별 매출 좀 뽑아줘."
쉽다고 생각했다.
에디터 로딩 중...
실행...
에디터 로딩 중...
30분 걸렸다.
더 복잡한 요청
다음 날, 또 요청이 왔다.
"그거에 고객 등급별로도 나눠서 보여줘."
에디터 로딩 중...
실행...
에디터 로딩 중...
45분.
분석팀이 한숨을 쉬었다.
"매번 이렇게 기다려야 해요? 실시간 대시보드는 꿈도 못 꾸겠네."
왜 이렇게 느린가?
| 문제 | 설명 |
|---|---|
| JOIN 폭발 | 5개 테이블 JOIN = 조합 폭발 |
| 정규화의 저주 | 분석에는 비정규화가 더 빠름 |
| 인덱스 무력화 | 집계 함수는 인덱스 활용 어려움 |
| Full Table Scan | 결국 전체 데이터 스캔 |
정규화된 OLTP 테이블은 분석용이 아니다. 트랜잭션(주문, 결제) 처리에 최적화된 구조.
해결책: 분석용 테이블 따로 만들기
선임이 알려줬다.
"운영 DB는 건드리지 말고, 분석용 데이터 웨어하우스를 따로 만들어. Star Schema로 설계하면 JOIN 없이 바로 집계할 수 있어."
에디터 로딩 중...
실행 시간: 3초.
30분 → 3초. 600배 빨라졌다.
이번에 그 비밀을 배워보자.