Skip to main content

Data Warehouse System

Kimball vs Inmon, Star/Snowflake 스키마, ETL, SCD, OLAP 연산


📚 시리즈 네비게이션

이전현재다음
OLTP SystemDW SystemData Lake

시리즈 목차


🎯 DW란?

Data Warehouse (DW): 다양한 원천 시스템에서 수집한 데이터를 통합하여 분석 및 의사결정에 활용하는 중앙 집중식 저장소

핵심 특징:

  • 분석 목적에 최적화 (OLAP)
  • 히스토리 데이터 보관 (수년~수십년)
  • 여러 원천의 데이터를 통합
  • 읽기 중심 (쓰기보다 조회가 많음)

🆚 OLTP vs OLAP

DW를 이해하려면 OLTP와의 차이를 알아야 함.

구분OLTP (운영계)OLAP (분석계/DW)
목적업무 처리분석/의사결정
사용자현업 직원분석가, 경영진
쿼리 패턴단순, 소량, 빈번복잡, 대량, 집계
데이터현재 상태히스토리 포함
정규화높음 (3NF)낮음 (비정규화)
응답 시간밀리초초~분
동시 사용자수천~수만수십~수백
예시ERP, CRM, 주문시스템DW, BI 시스템

🏛️ DW 아키텍처 유형

1. 기본 구조 (Kimball vs Inmon)

DW 설계에는 두 가지 대표적인 접근법이 있음.

Kimball (Bottom-Up):

  • Data Mart를 먼저 구축하고 통합
  • 빠른 구축, 부서별 요구 반영 쉬움
  • 일관성 유지가 어려울 수 있음

Inmon (Top-Down):

  • 전사 DW를 먼저 구축하고 Data Mart 파생
  • 일관성 높음, 전사 통합 뷰
  • 초기 구축 비용/시간 큼

💡 실무에서는 두 방식을 혼합해서 사용하는 경우가 많다.


2. 계층 구조

각 계층의 역할:

계층목적데이터 특성보존 기간
StagingETL 작업 공간원본 그대로단기 (일~주)
ODS운영 통합정제됨, 현재 상태단기~중기
DW전사 분석히스토리 포함장기 (년)
Data Mart부서별 분석집계/요약중기

📐 DW 모델링

스타 스키마 (Star Schema)

가장 기본적인 DW 모델링 방식임.

구성 요소:

구분Fact 테이블Dimension 테이블
내용측정값 (숫자)분석 관점 (속성)
예시매출액, 수량, 금액시간, 제품, 고객, 지역
특징대용량, 좁고 김소용량, 넓음
FK (외래키 여러 개)PK (기본키)

예시:

-- Fact 테이블: 매출
CREATE TABLE fact_sales (
date_key INT, -- FK → dim_date
product_key INT, -- FK → dim_product
customer_key INT, -- FK → dim_customer
store_key INT, -- FK → dim_store
sales_amount DECIMAL, -- 측정값
quantity INT -- 측정값
);

-- Dimension 테이블: 시간
CREATE TABLE dim_date (
date_key INT PRIMARY KEY,
full_date DATE,
year INT,
quarter INT,
month INT,
day INT,
weekday VARCHAR(10)
);

스노우플레이크 스키마 (Snowflake Schema)

Dimension 테이블을 정규화한 형태임.

Star vs Snowflake:

구분Star SchemaSnowflake Schema
정규화비정규화정규화
조인적음많음
쿼리 성능빠름상대적으로 느림
저장 공간많음 (중복)적음
유지보수단순복잡

💡 대부분의 DW에서는 쿼리 성능을 위해 Star Schema를 선호한다.


🔄 ETL 프로세스

DW 구축의 핵심임. 원천 → DW로 데이터를 이동하는 과정.

적재 방식

방식설명용도
Full Load전체 데이터 삭제 후 재적재초기 적재, 소규모 테이블
Incremental변경분만 추가대규모 테이블, 일반적
Merge (Upsert)있으면 UPDATE, 없으면 INSERTSCD Type 1

SCD (Slowly Changing Dimension)

Dimension 데이터가 변경될 때 어떻게 처리할지 정의한 것임.

타입설명히스토리
Type 1덮어쓰기X
Type 2새 행 추가 (유효기간 관리)O
Type 3이전 값 컬럼 추가제한적

Type 2 예시:

customer_key | name   | address | start_date | end_date   | is_current
-------------|--------|---------|------------|------------|------------
1001 | 홍길동 | 서울 | 2020-01-01 | 2023-05-31 | N
1002 | 홍길동 | 부산 | 2023-06-01 | 9999-12-31 | Y

📊 OLAP 분석

DW 데이터를 다차원으로 분석하는 기법임.

OLAP 연산

연산설명예시
Roll-up상위 레벨로 집계월별 → 분기별 → 연도별
Drill-down하위 레벨로 상세화연도별 → 분기별 → 월별
Slice하나의 차원 고정2024년 데이터만
Dice여러 차원 조건2024년 + 서울 + A제품
Pivot축 변경행↔열 전환

OLAP 유형

유형저장 방식특징
MOLAP다차원 배열 (Cube)빠른 조회, 사전 집계
ROLAP관계형 DB유연함, 대용량
HOLAP혼합요약은 MOLAP, 상세는 ROLAP

🛠️ 주요 DW 솔루션

전통적 DW

솔루션설명
Oracle Database엔터프라이즈 시장 점유율 높음
Oracle ExadataOracle DB 전용 어플라이언스
Teradata대용량 DW 특화
IBM Db2 WarehouseIBM 엔터프라이즈
Microsoft SQL ServerBI 스택 통합 (SSIS, SSAS, SSRS)

클라우드 DW

솔루션클라우드특징
SnowflakeMulti컴퓨팅/스토리지 분리, 사용량 과금
Amazon RedshiftAWSPostgreSQL 기반
Google BigQueryGCP서버리스, 컬럼 기반
Azure SynapseAzureSQL DW + Spark 통합

ETL 도구

도구유형설명
Informatica PowerCenter상용엔터프라이즈 ETL 표준
Oracle ODI상용Oracle 환경 최적화
Talend오픈소스무료 버전 있음
Apache Airflow오픈소스워크플로우 오케스트레이션
AWS Glue클라우드서버리스 ETL

BI 도구

도구특징
MicroStrategy엔터프라이즈 OLAP
Tableau시각화 강점
Power BIMicrosoft 통합
LookerGoogle, 데이터 모델링

🔗 관련 문서


🔗 참고 자료