차원 모델링의 개념
차원 모델링(Dimensional Modeling)은 데이터를 누구나 이해하기 쉬운 표준 구조로 표현하고, 동시에 고성능의 데이터 접근을 지원하기 위해 사용되는 논리적 설계 방법론입니다. 차원 모델링은 본질적으로 '차원적(dimensional)'인 특성을 지니며, 여러 가지 제약 조건이 적용된 관계형 모델(relational model)을 따르는 설계 규율을 유지합니다.
팩트 테이블과 차원 테이블: 스타 조인 구조
모든 차원 모델은 복합 키(multipart key)를 가진 하나의 테이블, 즉 팩트 테이블(fact table)과, 상대적으로 작은 크기의 테이블들인 차원 테이블(dimension table) 그룹으로 구성됩니다.
각 차원 테이블은 단일 요소로 이루어진 기본 키(primary key)를 가지며, 이 키는 팩트 테이블 복합 키를 구성하는 요소 중 하나와 연결됩니다. 이처럼 형성된 독특한 별(star) 모양의 구조를 스타 조인(star join)이라고 부르며, 이 개념은 관계형 데이터베이스 초창기부터 존재해 온 검증된 방식입니다.
팩트 테이블의 특징
팩트 테이블은 두 개 이상의 외래 키(foreign key)로 구성된 복합 기본 키를 가지며, 이는 항상 다대다(many-to-many) 관계를 정의합니다. 또한 일반적인 팩트 테이블에는 각 레코드의 키 조합에 해당하는 하나 이상의 수치형 측정값(fact)이 포함됩니다.
팩트 테이블의 측정값은 대부분 숫자형이며 가산적(additive)입니다. 가산성이 중요한 이유는 데이터 웨어하우스 애플리케이션이 개별 팩트 레코드 하나만 조회하는 경우가 거의 없기 때문입니다. 실제로는 수백, 수천 건의 레코드를 한 번에 가져오게 되며, 여러 레코드를 다룰 때 의미 있는 처리 방식은 결국 값들을 합산(sum)하는 것입니다.
차원 테이블의 역할
차원 테이블에는 서술적인 텍스트 데이터(descriptive textual data)가 저장됩니다. 차원 속성(dimension attribute)은 데이터 웨어하우스 쿼리에서 다양한 제약 조건(condition)의 원천이 되며, SQL(Structured Query Language) 결과 집합에서 행 헤더(row header)의 출처가 됩니다.
ER 다이어그램을 차원 모델로 전환하는 3단계
마스터 엔터티-관계 다이어그램(ERD)에는 영업 콜(Sales Calls), 주문 입력(Order Entry), 배송 송장(Shipment Invoices), 사용자 결제(User Payments), 제품 반품(Product Returns) 등 다양한 프로세스가 포함될 수 있습니다. 그러나 이러한 방식의 ERD는 서로 다른 시점에 일관된 단일 데이터 집합으로 공존하지 않는 여러 프로세스를 하나의 다이어그램에 담음으로써 스스로 한계를 만들게 됩니다.
따라서 ER 다이어그램을 차원 모델링 다이어그램의 집합으로 변환할 때는 아래의 세 단계를 순서대로 따르는 것이 효과적입니다.
1단계: 비즈니스 프로세스 분리
첫 번째 단계는 ER 다이어그램을 개별 비즈니스 프로세스 단위로 분리하고, 각 프로세스를 독립적으로 모델링하는 것입니다.
2단계: 팩트 테이블 선정
두 번째 단계는 ER 모델에서 수치형이고 가산적인 비키(non-key) 팩트를 포함하는 다대다 관계를 찾아내어, 이를 팩트 테이블로 지정하는 것입니다.
3단계: 차원 테이블 생성 및 통합 차원(Conformed Dimension) 정의
세 번째 단계는 나머지 테이블들을 비정규화(denormalize)하여 단일 요소 키를 가진 플랫 테이블(flat table) 형태로 만들고, 이를 팩트 테이블에 직접 연결하는 것입니다. 이렇게 만들어진 테이블이 바로 차원 테이블입니다. 하나의 차원 테이블이 두 개 이상의 팩트 테이블과 연결되는 경우에는 동일한 차원 테이블을 양쪽 스키마에 모두 표현하며, 이처럼 두 차원 모델 간에 공유되는 차원 테이블을 '통합 차원(conformed dimension)'이라고 정의합니다.