티스토리 뷰
데이터 웨어하우스 스키마 정리
데이터 웨어하우스란?
데이터 웨어하우스(Data Warehouse, DW)는 기업이나 조직이 여러 시스템에서 모은 데이터를 한 곳에 모아두고, 분석과 의사결정에 활용할 수 있도록 설계한 대규모 데이터 저장소입니다.
일상적인 데이터베이스(DB)와 비슷해 보이지만, 목적과 설계 방식이 다릅니다.
먼저 일반적인 데이터베이스(DB)는 실시간 업무 처리가 주목적입니다.
예를 들어 쇼핑몰 운영 DB는 고객이 상품을 주문하면 재고를 줄이고, 결제 내역을 기록하며, 배송 상태를 업데이트합니다. 이런 처리를 빠르게 수행하는 것이 중요합니다. 이를 OLTP(Online Transaction Processing)라고 합니다.
반면, 데이터 웨어하우스(DW)는 실시간 처리보다 누적된 데이터를 분석하는 데 최적화되어 있습니다.
예를 들어 “지난 5년간 지역별 매출 추세”나 “연령대별 상품 선호도”를 파악하려면 수많은 거래 데이터를 장기간 쌓아두고 분석해야 합니다.
DW는 이런 분석 작업에 맞춰 설계되며, 이를 OLAP(Online Analytical Processing)이라고 부릅니다.
쉽게 비유하면,
- DB(OLTP): 가게 계산대 — 실시간으로 주문을 받고 결제 처리
- DW(OLAP): 가게 본사의 보고서실 — 지난 수년간의 매출 데이터를 분석해 경영 전략 수립
DW에서는 이런 분석을 효율적으로 하기 위해 데이터를 어떻게 저장할지 설계하는 방법이 중요한데, 그 구조 설계를 스키마(Schema)라고 부릅니다.
스타 스키마란?
스타 스키마(Star Schema)는 데이터 웨어하우스에서 가장 널리 쓰이는 설계 방식입니다. 이름처럼 구조가 별 모양처럼 생겼습니다.
중앙에는 팩트 테이블(Fact Table)이 있습니다.
팩트 테이블은 분석의 중심이 되는 숫자 데이터(매출액, 수량, 클릭 수 등)를 저장합니다. 다만 이 숫자만으로는 의미를 알 수 없습니다. “언제, 어디서, 누구에게, 어떤 상품이 팔렸는가” 같은 맥락이 필요합니다.
이 맥락을 제공하는 것이 차원 테이블(Dimension Table)입니다.
차원 테이블은 팩트 테이블의 숫자를 설명하는 속성을 담고 있습니다.
예를 들어:
- 날짜 차원: 날짜, 월, 분기, 연도, 요일 등
- 지역 차원: 도시명, 국가명, 지역코드 등
- 상품 차원: 상품명, 카테고리, 브랜드 등
- 고객 차원: 이름, 성별, 연령대, 거주지역 등
스타 스키마의 특징은 차원 테이블이 비정규화되어 있다는 점입니다.
즉, 차원 테이블 안에 관련 속성을 모두 넣어, 조회할 때 조인을 최소화합니다.
예를 들어 날짜 차원 테이블이라면 이렇게 생겼습니다.
이렇게 하면 팩트 테이블과 날짜 차원 테이블을 한 번만 조인해도 모든 날짜 정보를 한 번에 가져올 수 있습니다.
장점: 쿼리가 단순하고 빠름
단점: 같은 정보가 여러 행에 반복 저장되므로(예: 2024년, 8월, 3분기), 저장 공간이 많이 필요하고, 관리 시 모든 중복을 수정해야 함
스노우플레이크 스키마란?
스노우플레이크 스키마(Snowflake Schema)는 스타 스키마의 차원 테이블을 정규화하여, 속성별로 여러 개의 하위 테이블로 나눈 구조입니다. 눈송이 모양처럼 가지가 뻗어나가는 모습이라 이런 이름이 붙었습니다.
예를 들어 스타 스키마의 날짜 차원 테이블을 정규화하면 이렇게 나눌 수 있습니다.
날짜 차원 테이블 (date_dim)
월 차원 테이블 (month_dim)
분기 차원 테이블 (quarter_dim)
연도 차원 테이블 (year_dim)
이렇게 하면 월, 분기, 연도 정보가 각자 한 번만 저장되므로 중복이 줄고, 관리가 쉬워집니다.
예를 들어 “8월”을 “August”로 바꾸려면 month_dim 테이블 한 곳만 수정하면 됩니다.
장점: 데이터 중복 감소, 저장 공간 절약, 데이터 일관성 유지 쉬움
단점: 조인해야 하는 테이블이 많아져 쿼리가 복잡해지고 속도가 느려질 수 있음
비교 정리
결론
데이터 웨어하우스(DW)는 여러 시스템에서 모은 데이터를 분석하기 위해 설계된 대규모 저장소입니다. 운영 DB와 달리, 빠른 실시간 처리보다 다차원적 분석에 최적화되어 있습니다.
스타 스키마는 차원 테이블을 비정규화하여 단순하고 빠른 분석을 가능하게 하지만, 중복 데이터가 많습니다.
스노우플레이크 스키마는 차원 테이블을 정규화하여 중복을 줄이고 관리 효율성을 높이지만, 쿼리가 복잡해지고 성능이 떨어질 수 있습니다.
어떤 스키마를 선택할지는 속도 vs 관리성 중 무엇을 더 중시하는지, 그리고 데이터의 성격에 따라 결정됩니다.
'ADP' 카테고리의 다른 글
| 데이터 분석 조직 총정리:기능형 조직, 분산형 조직, 집중형 조직, 혼합형 조직 (7) | 2025.08.07 |
|---|---|
| 공유 디스크(Shared Disk) 클러스터 총정리 (3) | 2025.08.07 |
| ACID 총 정리! Atomicity, Consistency, Isolation, Durability (3) | 2025.08.07 |
| CDC(Change Data Capture) 완벽 정리 (4) | 2025.08.07 |
| EAI(Enterprise Application Integration) 총정리 (1) | 2025.08.07 |
- Total
- Today
- Yesterday
- python 알고리즘
- 알고리즘문제풀이
- Python
- 상속
- 알고리즘기초
- HTML
- 프로그래머스
- 코딩테스트
- 문제 풀이
- 그래프 탐색
- dfs
- 백준
- 알고리즘 문제풀이
- 동적계획법
- DP
- C++
- 알고리즘
- c언어
- 문자열처리
- 코딩
- 객체지향
- 문제풀이
- 동적 계획법
- 코딩 테스트
- 파이썬코딩
- 그리디알고리즘
- 파이썬
- 그리디
- 브루트포스
- 프로그래밍
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
