데이터 웨어하우스를 설계할 때 가장 널리 사용되는 두 가지 대표적인 스키마가 바로 스타 스키마(Star Schema)와 스노우플레이크 스키마(Snowflake Schema)입니다. 이 글에서는 두 스키마의 구조적 특징과 장단점을 비교하여, 어떤 상황에서 어떤 스키마가 더 적합한지 명확하게 이해할 수 있도록 정리했습니다.
스타 스키마(Star Schema)란?
스타 스키마는 이름 그대로 중앙의 사실 테이블(Fact Table)을 중심으로 여러 차원 테이블(Dimension Table)이 별 모양으로 둘러싸고 있는 구조입니다. 분석용 데이터 모델링에서 가장 단순하고 직관적인 형태로 꼽힙니다.
- 차원의 계층 구조가 하나의 차원 테이블 안에 통합되어 저장됩니다.
- 사실 테이블을 중심으로 여러 차원 테이블이 배치되는 구조를 가집니다.
- 사실 테이블과 차원 테이블 간의 관계는 단 한 번의 조인만으로 형성됩니다.
- 데이터베이스 설계가 단순하여 이해하기 쉽고 관리가 편리합니다.
- 비정규화(De-normalization)된 데이터 구조이기 때문에 데이터 중복도가 높습니다.
- 집계된 데이터가 하나의 차원 테이블에 함께 저장됩니다.
- 구조가 단순하여 큐브(Cube) 처리 속도가 빠릅니다.
- 다른 스키마에 비해 쿼리 실행 속도가 빠릅니다.
- 스타 조인(Star Join) 쿼리 최적화 기법을 활용하므로 쿼리 성능이 우수합니다.
- 테이블을 여러 차원과 유연하게 연결할 수 있습니다.
스노우플레이크 스키마(Snowflake Schema)란?
스노우플레이크 스키마는 스타 스키마를 확장한 형태로, 차원 테이블이 다시 여러 개의 하위 테이블로 분기되어 마치 눈송이(snowflake)처럼 퍼진 구조를 가집니다. 정규화를 통해 데이터 중복을 줄이는 것이 핵심 특징입니다.
- 차원의 계층 구조가 여러 개의 개별 테이블로 분리되어 저장됩니다.
- 하나의 사실 테이블을 중심으로 차원 테이블이 위치하고, 그 차원 테이블이 다시 다른 차원 테이블들로 둘러싸인 다층 구조입니다.
- 데이터를 조회하려면 여러 번의 조인이 필요합니다.
- 테이블 간 관계가 많아 데이터베이스 설계가 복잡합니다.
- 정규화(Normalization)된 데이터 구조로, 데이터 중복도가 낮습니다.
- 데이터가 여러 차원 테이블로 분할되어 저장 공간을 절약할 수 있습니다.
- 복잡한 조인 연산 때문에 큐브 처리 속도가 상대적으로 느립니다.
- 중앙 집중식 사실 테이블로 표현할 수 있으며, 반드시 여러 차원과 연결되지 않아도 됩니다.
주요 차이점 한눈에 비교하기
| 구분 | 스타 스키마 | 스노우플레이크 스키마 |
|---|---|---|
| 차원 계층 구조 | 단일 차원 테이블에 통합 저장 | 여러 개별 테이블로 분리 저장 |
| 필요한 조인 수 | 단일 조인 | 다중 조인 |
| 설계 복잡도 | 단순함 | 복잡함 |
| 데이터 구조 | 비정규화 | 정규화 |
| 데이터 중복도 | 높음 | 낮음 |
| 큐브 처리 속도 | 빠름 | 느림 |
| 쿼리 성능 | 우수 (스타 조인 최적화) | 상대적으로 느림 |
정리: 어떤 스키마를 선택해야 할까?
쿼리 성능과 단순성이 중요하다면 스타 스키마가 적합합니다. 조인이 적어 조회 속도가 빠르고, BI 도구나 OLAP 분석 환경에서 널리 활용됩니다. 반면 저장 공간 절약과 데이터 무결성이 중요하다면 스노우플레이크 스키마가 유리합니다. 정규화를 통해 중복을 최소화하지만, 그만큼 조인이 많아져 성능 저하가 발생할 수 있다는 점을 고려해야 합니다. 결국 프로젝트의 요구사항, 데이터 규모, 성능 목표에 따라 두 스키마 중 적절한 것을 선택하는 것이 중요합니다.