💡 핵심 인사이트 MOLAP(Multidimensional OLAP)은 "다차원 큐브(Multidimensional Cube)를 물리적으로 사전 생성하여 저장하는" OLAP 방식입니다. 사용자가 "2023년 3분기 서울 지역 카테고리별 매출"이라는 질의를 던지면, MOLAP은 미리 계산된 큐브에서 바로 값을 추출합니다. 디스크에서 실시간 계산하는 것이 아니라, 사전 계산된 결과를 메모리에서 빠르게 반환합니다. 그러나 큐브 갱신(Cube Refresh) 비용이 크고, 저장 공간이 많이 필요하다는 단점이 있습니다.
Ⅰ. OLAP의 세 가지 유형: MOLAP, ROLAP, HOLAP
OLAP(온라인 분석 처리)는 그 구현 방식에 따라 세 가지 유형으로 나뉩니다.
**ROLAP(Relational OLAP)**은 관계형 데이터베이스의 테이블에 저장된 데이터를 그대로 SQL 질의로 분석합니다. 별도의 다차원 구조를 만들지 않고, 정규화된 테이블을 조인하여 결과를 계산합니다. "_대용량 데이터_에 적합하지만, _고속 응답_에는 불리"합니다.
**MOLAP(Multidimensional OLAP)**은 **전용 다차원 데이터 구조(멀티다imensional 큐브)**를 생성합니다. 이 큐브는 디스크에 저장되기 전, 메모리 내에서 미리 계산되어집니다. "_최고의 질의 성능_을 제공하지만, _데이터 갱신 시 전체 큐브 재계산_이 필요"합니다.
**HOLAP(Hybrid OLAP)**은 두 방식의 장점만 취합합니다. 기본 데이터는 ROLAP처럼 관계형 테이블에 저장하고, 자주 사용되는 집계만 MOLAP처럼 사전 계산합니다.
[세 가지 OLAP 방식의 비교]
┌────────────────────────────────────────────────────────────────────┐
│ OLAP 아키텍처 비교 │
├────────────────────────────────────────────────────────────────────┤
│ │
│ MOLAP: │
│ ┌──────────────────────────────────────┐ │
│ │ [다차원 큐브 (사전 계산된 구조)] │ │
│ │ ┌────┐ ┌────┐ ┌────┐ │ │
│ │ │Cube│ │Cube│ │Cube│ ← 메모리/디스크 │ │
│ │ └────┘ └────┘ └────┘ │ │
│ │ → 초고속 읽기, 느린 갱신 │ │
│ └──────────────────────────────────────┘ │
│ │
│ ROLAP: │
│ ┌──────────────────────────────────────┐ │
│ │ [관계형 테이블 (정규화/비정규화)] │ │
│ │ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │ │
│ │ │Table│ │Table│ │Table│ │Table│ │Table│ │ │
│ │ └────┘ └────┘ └────┘ └────┘ └────┘ │ │
│ │ → 실시간 데이터, 읽기 성능 저하 │ │
│ └──────────────────────────────────────┘ │
│ │
│ HOLAP: │
│ ┌──────────────────────────────────────┐ │
│ │ [ROLAP 기본 테이블] + [MOLAP 집계] │ │
│ │ ┌────┐ ┌────┐ ┌────┐ │ │
│ │ │Table│ │Table│ │Aggre│ 게이트 │ │
│ │ └────┘ └────┘ │gate │ │ │
│ │ → 균형형, 복잡한 구현 │ │
│ └──────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────┘
Ⅱ. MOLAP 큐브의 내부 구조: 셀(Cell)와 차원
MOLAP 큐브의 기본 단위는 **셀(Cell)**입니다. 각 셀은 여러 차원의 교차점에 위치하며, 해당하는 측정값(Measure)을 저장합니다.
[3차원 판매 큐브의 구조]
제품 (노트북, 모니터, 키보드, 마우스)
│
│ 0 1 2 3 (셀 주소: 제품 인덱스)
───┼────────────────────────────
0 │ 100 80 60 40 ← 시간=2024Q1
시간 1 │ 110 90 65 45 ← 시간=2024Q2
2 │ 120 95 70 50 ← 시간=2024Q3
│
└──> 지역 (서울, 부산, 대구)
│
│ 메모리에 로드된 다차원 배열
│ [Time][Region][Product] = 매출액
│
│ 예: Sales[0][0][1] = 80
│ (2024Q1, 서울, 모니터)의 매출액 = 80백만원
디스크에는 압축된 희소 배열(Sparse Array) 형식으로 저장
인덱스를 통해 해당 차원 좌표에 빠르게 접근
MOLAP 저장 구조의 특징:
-
밀집 배열(Dense Array): 모든 차원 좌표 조합에 대해 셀 값이 존재하는 경우 사용합니다. 메모리 효율이 좋지만, 실제 값이 없는 셀에도 공간을 할당해야 합니다.
-
희소 배열(Sparse Array): 실제 값이 존재하는 셀만 인덱싱합니다. 데이터가 희소할 때(많은 조합에 값이 없는 경우) 공간을 크게 절약합니다. MOLAP 엔진은 주로 희소 배열을 사용합니다.
-
압축 기법: 반복되는 값을 압축하거나, 값의 리스트와 오프셋을管理等方法来减少存储空间.
Ⅲ. MOLAP의 사전 계산: 집계와 큐브 처리
MOLAP의 最大 강점은 **사전 계산된 집계(Aggregate)**입니다.
"2024년 전체 매출, 2024년 분기별 매출, 2024년 월별 매출, 지역별 매출, 제품 카테고리별 매출, 분기×지역 매출, 분기×제품 매출, ..." 모든 조합의 합계, 평균, 카운트 등이 큐브 생성 시 한 번에 계산되어 저장됩니다.
[사전 계산된 집계 계층]
Level 0 (기본): 일별/매장별/제품별 매출
Sales[2024-01-15][서울지점][노트북X] = 5,000,000원
Level 1 (월 집계): 월별/매장별/제품별 매출
Sales[2024-01][서울지점][노트북X] = Σ(2024-01-xx)
= 150,000,000원
Level 2 (분기 집계): 분기별/매장별/제품별 매출
Sales[2024Q1][서울지점][노트북X] = Σ(2024-01, 2024-02, 2024-03)
= 450,000,000원
Level 3 (연도 집계): 연도별/매장별/제품별 매출
Sales[2024][서울지점][노트북X] = Σ(2024Q1, Q2, Q3, Q4)
= 1,800,000,000원
사용자가 "2024년 서울지점 노트북X 매출" 조회 시
→ Level 3의 미리 계산된 값을 즉시 반환 (추가 계산 불필요)
집계 설계의Trade-off: 모든 가능한 조합을 사전 계산하면 최고의 성능을 얻을 수 있지만, 저장 공간이 폭발적으로 증가합니다. "n개 차원에 대해 각 차원의 카디널리티가 k이면, _ k^n개의 셀이 존재_"하게 됩니다. 따라서 MOLAP 시스템은 액세스 패턴과 사용 빈도를 분석하여 일부 집계만 사전 계산하는 것이 일반적입니다.
Ⅳ. MOLAP의 장점과 단점: 성능과 유연성의 균형
장점:
1. 비범위적인 질의 성능 사전 계산된 집계 덕분에, 어떤 차원의 조합으로 분석하든 대부분의 질의가 수 밀리초 내외로 응답됩니다. 복잡한 다중 차원 분석도 빠르게 처리됩니다.
2. 다차원 연산의native 지원 MOLAP은 설계부터 슬라이스, 다이스, 드릴다운, 롤업, 피벗 등의 OLAP 연산을 위해 만들어졌으므로,これらの 연산을 별도의 복잡한 SQL 없이 기본 기능으로 제공합니다.
3. 메모리 내 분석 가능 미리 계산된 데이터 구조가 크지만, 인메모리(In-Memory) 기술과 결합되면 디스크 I/O 없이 메모리 내에서만 분석이 가능합니다.
단점:
1. 긴 큐브 처리 시간 새로운 데이터가 추가되거나 변경되면 전체 또는 부분 큐브를 재계산해야 합니다. 데이터 규모가 크면 이 처리 시간이 수 시간에 달할 수 있습니다.
2. 저장 공간 요구 사전 계산된 모든 집계는 별도의 저장 공간을 차지합니다. 차원이 많고 카디널리가 높을수록 필요한 공간이 기하급수적으로 증가합니다.
3. 데이터 Freshness 갱신 주기가 길면 분석 데이터가 실시간에 가깝지 못할 수 있습니다. 이를 해결하기 위해 증분 처리(Incremental Processing) 기능을 지원하는 MOLAP 도구도 있습니다.
4. 데이터 모델 변경의 어려움 새로운 차원 추가, 기존 차원의 새로운 속성 추가 등이 큐브 구조 자체를 변경해야 하므로, 유연성이 낮습니다.
Ⅴ. MOLAP의 실제 적용과 📢 비유
주요 MOLAP 도구:
- Microsoft SQL Server Analysis Services (SSAS): Microsoft's MOLAP 엔진
- SAP BW/4HANA: SAP의エンタープ라이즈 MOLAP
- Oracle OLAP: Oracle의 다차원 분석 옵티마이저
- IBM Cognos Analytics: IBM의 엔터프라이즈 BI/OLAP
MOLAP 선택 시 고려사항:
- 데이터 규모: 수천만 건 이하의 데이터에 적합. 그 이상은 처리 시간이 과도하게 길어짐
- 갱신 빈도: 일별/주별 배치로 충분한 환경에 적합. 실시간 분석이 필요하면 ROLAP 또는 HOLAP 고려
- 분석 패턴:事前 예측 가능한固定된 분석 패턴에 적합. Ad-hoc 분석이 많으면 유연성 부족
📢 섹션 요약 비유: MOLAP은 **"미리 조리된 식재료와 완제품 냉동食品에 비유"**할 수 있습니다. 새 레스토랑에서 고객이 주문할 때마다 식재료를 손질하고 조리하면(ROLAP) 시간이 오래 걸립니다. 그러나 완제품을 미리 조리해 냉동해 두면(MOLAP), 손님이 주문하면 전자레인지에 돌려几分钟 만에 제공할 수 있습니다.美味하지만, 메뉴 변경(새로운 차원/속성 추가) 시에는 완제품을 다시 조리해야 하는 번거로움이 있습니다. 음식의鲜도유지 기간처럼, MOLAP도 데이터의新鲜도를 관리하는 것이 중요합니다.