Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

스타 스키마와 눈송이(스노우플레이크) 스키마의 차이점 완벽 비교

스타 스키마(Star Schema)란?

스타 스키마는 데이터를 차원 테이블(Dimension Table), 팩트 테이블(Fact Table), 그리고 구체화된 뷰(Materialized View) 형태로 구성하는 데이터 모델링 규약입니다. 모든 정보는 컬럼 단위로 저장되며, 다차원 객체 역할을 하는 컬럼을 식별하기 위해서는 메타데이터가 필요합니다.

스타 스키마는 설계 자체가 다차원 데이터 모델을 기술하는 관계형 스키마(relational schema)로, 데이터 웨어하우스에서 가장 널리 사용되는 대표적인 스키마 구조입니다. '스타'라는 이름은 이 스키마의 개체-관계 다이어그램(ERD)이 마치 별 모양과 닮았다고 해서 붙여진 것입니다. 즉, 중앙에 위치한 하나의 큰 팩트 테이블을 중심으로 여러 차원 테이블이 별의 꼭짓점처럼 방사형으로 뻗어 나가는 형태를 하고 있습니다.

눈송이 스키마(Snowflake Schema)란?

눈송이 스키마(스노우플레이크 스키마)는 스타 스키마의 변형된 형태로, 일부 차원 테이블을 정규화(normalization)하여 데이터를 더 많은 테이블로 분할한 모델입니다. 이렇게 만들어진 스키마 다이어그램은 눈송이와 비슷한 모양을 띠기 때문에 이런 이름이 붙었습니다.

즉, 눈송이 스키마는 스타 스키마를 확장한 개념으로, 별의 각 꼭짓점에 해당하는 차원 테이블이 다시 여러 개의 작은 꼭짓점으로 갈라져 나가는 구조입니다. 차원 테이블을 정규화하는 이러한 과정을 '스노우플레이킹(snowflaking)'이라고 부르며, 차원 테이블을 완전히 정규화하면 팩트 테이블이 중앙에 있는 눈송이 형태의 구조가 완성됩니다.

두 스키마의 핵심 차이

눈송이 스키마와 스타 스키마의 가장 큰 차이는 차원 테이블을 정규화된 형태로 유지할 수 있다는 점입니다. 정규화된 테이블은 유지보수가 쉽고 저장 공간도 절약할 수 있습니다. 차원 구조가 컬럼으로 반복될 때 발생하는 대용량 차원 테이블의 중복 데이터를 제거할 수 있기 때문입니다.

다만 저장 공간 절약 효과의 상당 부분은 중복 정보 제거에서 비롯되지만, 정규화된 구조는 조회 성능을 떨어뜨릴 수 있다는 단점이 있습니다. 쿼리를 실행하려면 더 많은 조인(join)이 필요해지기 때문입니다. 결과적으로 시스템 전반의 성능에 부정적인 영향을 미칠 수 있으므로, 어떤 설계가 적합한지는 성능 벤치마킹을 통해 판단하는 것이 좋습니다.

스타 스키마 vs 눈송이 스키마 비교표

그럼 두 스키마의 주요 차이점을 표를 통해 한눈에 살펴보겠습니다.

스타 스키마눈송이 스키마
단순하고 직관적인 데이터베이스 설계복잡한 데이터베이스 설계
팩트 테이블과 차원 테이블 간의 관계를 단 한 번의 조인으로 연결데이터를 조회하려면 여러 번의 조인이 필요
큐브 처리 속도가 빠름복잡한 조인으로 인해 큐브 처리 속도가 느려질 수 있음
정규화를 사용하지 않음정규화와 비정규화(역정규화)를 함께 활용
조인 횟수가 적어 쿼리 성능이 우수조인 횟수가 많아 쿼리가 상대적으로 무거움

어떤 스키마를 선택해야 할까?

쿼리 성능과 설계의 단순함이 우선이라면 스타 스키마가 적합합니다. 반면 저장 공간 절약과 데이터 무결성 유지가 더 중요한 환경이라면 눈송이 스키마가 유리할 수 있습니다. 결국 두 스키마 중 무엇을 선택할지는 데이터의 특성, 조회 패턴, 그리고 시스템 성능 요구 사항을 종합적으로 고려하여 결정해야 합니다.