💡 핵심 인사이트 다차원 모델링(Dimensional Modeling)은 데이터 웨어하우스에서 "분석 사용자가 비즈니스를 가장 직관적으로 이해할 수 있도록 측정값(Fact)과 분석 기준(차원)으로 데이터를 구조화하는" 핵심 모델링 기법입니다. 관계형 데이터베이스의 정규화된 구조가 트랜잭션 처리에 최적화된 것처럼, 다차원 모델링은 질의(Query) 성능과 분석 편의성에 최적화된 스타 스키마(Star Schema) 구조를 탄생시켰습니다.


Ⅰ. 분석 환경의 두 세계: OLTP vs OLAP

데이터베이스 시스템은 크게 **온라인 트랜잭션 처리(OLTP, On-Line Transaction Processing)**와 **온라인 분석 처리(OLAP, On-Line Analytical Processing)**로 나뉩니다.

OLTP 시스템은 은행 입출금, 상품 주문, 수강 신청처럼 **매 순간 발생하는 소규모의 개별 거래(Transaction)**를 처리합니다. 이 환경에서는 데이터의 **정합성(Consistency)**과 **동시성(Concurrency)**이 무엇보다 중요합니다. 따라서 정규화된 테이블 구조, 적절한 인덱스, 트랜잭션 관리가 핵심입니다.

반면 OLAP 시스템은 "작년 전체 매출 중 3분기 지역별 제품 카테고리별 추세는?" "최근 3년간 월별 고객 세그먼트별 구매 패턴 변화는?" 같은 복잡하고 대용량의 분석 질의를 처리합니다. 이 환경에서는 빠른 응답 속도유연한 데이터 탐색이 핵심이 됩니다.

[두 세계의 비교]

OLTP 환경:
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   고객      │────<│   주문      │────<│  주문상세   │
│ (정규화)    │     │ (정규화)    │     │ (정규화)    │
└─────────────┘     └─────────────┘     └─────────────┘
  쓰기 최적화          강한 정합성         복잡한 조인

OLAP 환경:
┌─────────────────────────────────────────────────────┐
│                                                     │
│    [시간]  [지역]  [제품]  [고객]   ← 차원(Dimension)│
│        \    |    /    |   /                        │
│         ┌───────────────┐                          │
│         │   판매_Fact   │   ← 측정값(Measure)      │
│         │   매출, 수량   │                          │
│         └───────────────┘                          │
│                                                     │
│  읽기 최적화, 직관적 탐색, 고속 집계                  │
└─────────────────────────────────────────────────────┘

다이어그램 해석: OLTP는 정규화된 테이블을 조인(Join)하여 데이터를 조합하지만, OLAP는 차원 테이블이 사실 테이블을 **방사형으로 둘러싼 구조(스타 스키마)**로 빠른 탐색이 가능합니다. 이 구조는 시각적으로 별(Star) 모양을 형성하여 "스타 스키마"라고도 불립니다.


Ⅱ. 다차원 모델링의 핵심 구성 요소: 팩트와 차원

다차원 모델링의 기본 구조는 **팩트 테이블(Fact Table)**과 **차원 테이블(Dimension Table)**으로 나뉩니다.

팩트 테이블은 "판매 금액, 판매 수량, 할인 금액, 원가"처럼 **분석하고자 하는 측정값(Measure)**을 저장하는 테이블입니다. 팩트 테이블의 특징은 다음과 같습니다:

  1. 대용량: 수억에서 수조 개의 행(Row)을 가질 수 있습니다.
  2. 저장 효율성: 측정값만 저장하여 공간을 절약합니다.
  3. _foreign key: 차원 테이블을 참조하는 외래 키(Foreign Key)들의 집합입니다.
  4. 덜 변함: 시간에 따라 계속 추가되지만, 과거 기록은 일반적으로 변경되지 않습니다.

차원 테이블은 "언제(시간), 어디서(지역), 무엇을(제품), 누가(고객)"처럼 **분석의 관점(Perspective)**을 제공하는 테이블입니다. 차원 테이블의 특징은 다음과 같습니다:

  1. 분석 깊이: 제품의 카테고리, 브랜드, 제조사, 포장 단위 등 분석 가능한 상세 속성을 포함합니다.
  2. 변경 가능성: 고객 주소 변경, 제품 정보 수정 등 스스로 변경(SCD, Slowly Changing Dimension) 될 수 있습니다.
  3. 비즈니스 문맥: 분석 결과에 **의미와 맥락(Context)**을 부여합니다.
  4. 상대적 소규모: 팩트 테이블에 비해 행 수가 적습니다.

Ⅲ. 다차원 모델링의 설계 원칙

Ralph Kimball이 제시한 다차원 모델링의 핵심 원칙은 다음과 같습니다:

1. 핵심 비즈니스 프로세스 중심 설계 데이터 웨어하우스는 기업의 모든 활동을 담는 것이 아니라, 판매, 주문, 배송, 결제 같은 핵심 비즈니스 프로세스를 중심으로 설계해야 합니다. 각 프로세스마다 별도의 팩트 테이블을 만듭니다.

2. 차원은 핵심 비즈니스 단어여야 한다 차원은 분석가가 "지역별로 보고 싶다, 시간대별로 보고 싶다, 제품별로 보고 싶다"에서 사용하는 비즈니스 용어를 그대로 반영해야 합니다. "dim_time", "dim_product" 같은 기술적 이름이 아닌 "시간", "제품" 같은 직관적 명칭을 사용합니다.

3. 가능하면 모든 차원에 날짜/시간 스탬프를 포함한다 팩트 테이블에는 **when(언제)_**을 나타내는 시간 외래 키(Time Foreign Key)가 반드시 존재해야 합니다. 또한 차원 테이블에도 해당 레코드가 생성된 시점과 변경된 시점을 기록하는 타임스탬프 속성을 포함하는 것이 좋습니다.

4. 동일하고 반복적인 값의 저장을 피하라 차원 테이블 내에서 "서울, 부산, 인천"(지역)처럼 반복되는 문자열을 그대로 저장하지 않고, "_区域的_代码"처럼 단순화된 키 값을 사용합니다. 이는 저장 공간 절약과 질의 성능 향상에 기여합니다.


Ⅳ. 다차원 큐브(Cube)와 차원 속성 계층

다차원 모델링의威力은 다차원 큐브(Multidimensional Cube) 구조에서 드러납니다.

[3차원 판매 큐브의 예시]

          제품 (노트북, 모니터, 키보드)
         /
        /
시간 ----/--------+--------+--------+
(2024Q1,     노트북  모니터  키보드   │
 2024Q2,      │       │       │      │
 2024Q3)     100      80      60     /
             (백만원) (백만원) (백만원)
           /
          /
    지역 (서울, 부산, 대구)

큐브 연산:
- 롤업(Roll-up): 시간(2024Q1~2024Q3) → 연도(2024), 지역(서울+부산+대구=전국)
- 드릴다운(Drill-down): 연도(2024) → 분기(2024Q1, Q2, Q3)
- 슬라이스(Slice): 시간=2024Q1 (특정 평면 절단)
- 다이스(Dice): 시간=2024Q1~Q3, 지역=서울+부산 (새로운 하위 큐브)

**차원 속성 계층(Dimensional Hierarchy)**은 분석가가 데이터를 위에서 아래로, 아래에서 위로 탐색할 수 있게 해줍니다. 예를 들어 시간(Time) 차원은 "년(YEAR) → 분기(QUARTER) → 월(MONTH) → 주(WEEK) → 일(DATE)"라는 계층을 가집니다. 사용자는 "2024년 전체 매출"을 볼 수도 있고, "2024년 3분기 7월 3주차 매출"을 볼 수도 있습니다.


Ⅴ. 다차원 모델링의 실제 적용과 📢 비유

기술적 고려사항:

  • 대량 데이터 처리: 팩트 테이블이 수억 건 이상이라면 **파티셔닝(Partitioning)**을 적용하여 查询 범위를 줄여야 합니다.
  • 집계 테이블(Aggregate Table): 미리 계산된 "월별 합계, 분기별 합계"를 별도의 테이블로 저장하면 복잡한 질의의 응답 속도를 크게 향상시킬 수 있습니다.
  • 파생 속성(Derived Attribute): "마진율(=(매출-원가)/매출*100)"처럼 계산으로 얻을 수 있는 속성은 차원 테이블에 저장하기보다 필요 시 계산하는 것이 저장 공간을 절약할 수 있습니다.
  • SCD(Changed Dimension) 처리: 고객 등 차원 테이블의 정보가 변경될 때 이를 어떻게 처리할지(타입1: 덮어쓰기, 타입2: 이력 추적) 설계 단계에서 결정해야 합니다.

📢 섹션 요약 비유: 다차원 모델링은 **"도서관의 분류 체계에 비유"**할 수 있습니다. OLTP 환경은 책을 아무렇게나 진열하고 찾고자 할 때마다 전체를 수색하는 것과 같다면, 다차원 모델링은 장르(지역)별로, 저자(제품)별로, 출판연도(시간)별로 책을 분류하여 어떤 각도에서 탐색하든 빠르게 원하는 정보를 찾을 수 있게 하는 것입니다. 스타 스키마는 가장 직관적인 분류 방식으로, 사서(분석가)가 가장 편안하게 자료를 활용할 수 있도록 돕습니다.