차원 모델링이란 무엇인가?
차원 모델링(Dimensional Modeling)은 데이터 웨어하우스 설계에서 가장 널리 사용되는 기법으로, 거의 모든 유형의 비즈니스 데이터를 하나의 데이터 큐브(data cube) 형태로 표현할 수 있다는 아이디어에서 출발합니다. 이 큐브의 각 칸(cell)에는 측정값(measure)이 담기고, 큐브의 각 모서리(edge)는 데이터의 자연스러운 차원(dimension)을 나타냅니다.
설계상 세 개 이상의 차원을 다룰 수 있으므로 엄밀히 말하면 '하이퍼큐브(hypercube)'라고 불러야 하지만, 실무에서는 대부분 '큐브' 또는 '데이터 큐브'라는 용어를 그대로 사용합니다.
사실 테이블(Fact Table)과 차원 테이블(Dimension Table)
차원 모델링은 크게 두 종류의 테이블로 구성됩니다.
팩트(Facts)
차원 모델은 팩트와 속성을 구분하여 표현합니다. 팩트란 사전에 알 수 없는, 비즈니스 현장에서 발생하는 측정 가능한 사건을 의미합니다. 예를 들어 특정 시점의 매출액, 판매 수량 등이 대표적입니다. 대부분의 팩트는 숫자(수치형) 값이지만, 일부는 텍스트 값을 가질 수도 있습니다.
설계자는 어떤 수치형 필드, 특히 부동소수점(floating-point) 숫자라면 팩트일 가능성이 높다고 판단해야 합니다. 다만 주의할 점이 있습니다. 예를 들어 '표준 원가(standard cost)' 같은 수치는 제품 차원의 속성처럼 보이고, 미리 정해진 상수처럼 여겨질 수 있지만, 맥락에 따라 팩트가 될 수도 있습니다.
속성(Attributes)
속성은 일반적으로 텍스트 필드이며, 구체적인 사물의 특징(characteristic)을 정의합니다. 가장 대표적인 속성은 제품에 대한 설명입니다. 예컨대 제품의 '맛(flavor)'은 제품 차원의 잘 알려진 속성으로, 제품 포장지에 눈에 띄게 표시되는 정보입니다.차원(Dimensions)
사물을 설명하는 텍스트형 속성들은 차원 안에 체계적으로 조직됩니다. 소매(retail) 데이터베이스를 예로 들면, 최소한 다음과 같은 차원들을 갖추게 됩니다.
- 제품 차원(Product Dimension)
- 매장 차원(Store Dimension)
- 고객 차원(Customer Dimension)
- 프로모션 차원(Promotion Dimension)
- 시간 차원(Time Dimension)
차원이란 서로 밀접하게 관련되어 함께 적용되는 텍스트형 속성들의 집합입니다. 어떤 속성들을 묶어 차원으로 만들지는 설계자의 판단에 따라 달라집니다.
차원 통합 시 주의점: 카티션 곱(Cartesian Product)
설계 과정에서 흔히 저지르는 실수 중 하나는 제품 차원과 매장 차원을 무작정 하나로 합쳐 거대한 '제품-매장(product-store)' 차원을 만드는 것입니다. 예를 들어 제품이 1,000개, 매장이 100개라고 가정해 봅시다. 이 두 차원을 결합하면 몇 개의 '제품-매장' 조합이 생길까요?
제품과 매장 사이에 특별한 상관관계가 없고 모든 제품이 모든 매장에서 판매된다면, 결합된 차원은 두 초기 차원의 카티션 곱(Cartesian product)이 되어 무려 100,000개의 제품-매장 조합이 발생합니다. 이는 관리 비용과 복잡성을 급격히 증가시키므로, 차원을 통합하기 전에 반드시 데이터 간의 실제 연관성을 검토해야 합니다.
차원 테이블 속성의 역할
차원 모델에서 차원 테이블의 속성들은 매우 중요한 역할을 수행합니다. 이러한 속성들은 텍스트이거나 텍스트처럼 동작하며, 이산적인(discrete) 값을 가집니다. 나아가 최종 리포트에서 소프트웨어 제약 조건(필터)과 행 헤더(row header)의 원천 데이터로 활용되므로, 분석 및 보고서 작성의 기반이 됩니다.