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

스노우플레이크(Snowflake) 스키마란? 개념부터 장단점까지

스노우플레이크(snowflake) 스키마는 스타(star) 스키마 모델의 변형으로, 일부 차원(dimension) 테이블을 정규화하여 레코드를 추가적인 테이블로 더 세분화한 형태입니다. 이렇게 구성된 스키마 다이어그램이 눈송이와 비슷한 모양을 띠기 때문에 '스노우플레이크'라는 이름이 붙었습니다.

스노우플레이크 스키마는 스타 스키마를 확장한 개념으로, 별의 각 끝점이 더 많은 점으로 갈라져 나가는 구조입니다. 스노우플레이킹(snowflaking)은 스타 스키마에서 차원 테이블을 정규화하는 방법을 의미하며, 모든 차원 테이블을 완전히 정규화하면 중앙에 팩트(fact) 테이블이 있고 그 주변으로 가지가 뻗어 나가는 눈송이 형태의 구조가 완성됩니다.

스노우플레이크 스키마의 구조

스노우플레이크 스키마는 하나의 팩트 테이블과 여러 개의 차원 테이블로 구성되며, 각 차원 테이블은 다시 다른 차원 테이블과 다대일(many-to-one) 관계로 연결될 수 있습니다. 스키마 내 테이블들은 대체로 제3정규형(3NF)까지 정규화되며, 각 차원 테이블은 계층 구조에서 정확히 하나의 수준을 담당합니다.

반면 스타 스키마는 하나의 차원에 대한 모든 속성을 하나의 비정규화된 테이블에 저장하기 때문에, 정규화된 스노우플레이크 스키마보다 더 많은 디스크 공간을 필요로 합니다. 스노우플레이킹은 카디널리티(cardinality)가 낮은 속성들을 별도의 차원 테이블로 분리하고, 외래 키(foreign key)를 통해 기본 차원 테이블과 연결함으로써 차원을 정규화합니다.

스노우플레이크 스키마는 특정 쿼리의 성능을 향상시킬 수 있습니다. 팩트 테이블을 중심으로 관련 차원들이 배치되고, 그 차원들이 다른 차원들과 연결되며 눈송이처럼 가지를 뻗어 나가는 형태로 배열됩니다. 또한 테이블을 정규화하여 중복(redundancy)을 제거하고, 차원 테이블을 여러 개의 차원 테이블로 분할합니다.

스노우플레이크 스키마는 더 복잡한 차원과 관계 전반에 걸쳐 유연한 쿼리를 수행할 수 있도록 설계됩니다. 따라서 차원 수준 간의 다대다(many-to-many) 및 일대다(one-to-many) 관계를 처리하는 데 적합합니다.

스노우플레이크 스키마의 장점

  • 필요한 디스크 저장 공간이 줄어들고 작은 조회(lookup) 테이블을 조인하게 되므로 쿼리 성능이 향상됩니다.

  • 차원 수준과 구성 요소 간의 상호 관계에서 더 높은 확장성을 지원합니다.

  • 중복이 없어 유지 관리가 더욱 간편합니다.

스노우플레이크 스키마의 단점

  • 조회 테이블의 수가 늘어나면서 추가적인 유지 관리 노력이 필요합니다.

  • 쿼리가 더 복잡해져 학습하고 이해하기 어렵습니다.

  • 테이블 수와 조인 횟수가 많아질수록 쿼리 실행 시간이 길어집니다.