IT 여러가지

IT: RDBMS 스타스키마

dewstream 2025. 7. 9. 08:00
728x90

※ IT: RDBMS Star Schema.

 

안녕하세요. 듀스트림입니다.

 

오늘의 내용은 DW에서 사용하는 스타스키마에 대한 내용입니다.


스타 스키마(Start Schema)?

데이터 웨어하우스(DW) 또는 OLAP 분석 시스템에서 자주 사용하는 비정규화 기반의 테이블 설계 방식으로 Fact 테이블을 중심으로 다수의 차원(Dimension) 테이블이 연결된 구조입니다.

 

스타 스키마란 이름은 모양이 별(★) 모양처럼 생겼다고 해서 붙은 이름입니다.


구성 요소

구성 요소 설명 예시
Fact Table (사실 테이블) 수치 데이터, 측정값 (예: 판매 금액, 주문 수량 등) sales_fact
Dimension Table (차원 테이블) 분류 기준, 설명 정보 (예: 고객, 제품, 날짜 등) customer_dim, product_dim, date_dim
Surrogate Key (대체키) 차원 테이블의 기본키로 숫자 ID 사용 customer_id, product_id

예시 구조

 

▸ fact 테이블

sales_fact (
  sale_id SERIAL,
  customer_id INT,
  product_id INT,
  store_id INT,
  date_id INT,
  quantity INT,
  total_amount NUMERIC
)

 

▸ dimension 테이블

-- product
product_dim (
  product_id SERIAL,
  product_name TEXT,
  category TEXT,
  price NUMERIC
)

-- customer
customer_dim (
  customer_id SERIAL,
  customer_name TEXT,
  gender TEXT,
  region TEXT
)

-- date
date_dim (
  date_id SERIAL,
  full_date DATE,
  year INT,
  month INT,
  day INT,
  weekday TEXT
)

스타 스키마의 특징

항목 설명
단순한 JOIN 구조 Fact ↔ Dimension 단일 조인
빠른 집계 처리 집계 연산이 대부분 하나의 Fact 테이블 대상
반정규화 기반 Dimension 테이블에 중복 정보 허용
데이터 중복 존재 예: 같은 고객명이 여러 행에 등장 가능
OLAP 최적화 읽기(SELECT) 위주의 구조, ETL 주기적 적재

스타 스키마와 반정규화의 관계

항목 스타 스키마 반정규화
정의 OLAP을 위한 모델링 구조 정규형을 깨고 성능을 위해 구조 단순화
중복 허용 차원 테이블에 정보 중복 가능 필요한 곳에 중복 컬럼 추가
목적 분석·집계 쿼리 최적화 읽기 성능, 복잡도 감소
사용 대상 DW/BI, 데이터마트 OLTP, DW 모두 가능
구성 패턴 Fact + Dimension 자유로운 구조 변경
적용 범위 데이터 웨어하우스 중심 다양한 설계 단계에서 선택적으로 적용
스타 스키마는 반정규화를 적극 활용한 일종의 설계 패턴으로 반정규화가 더 넓은 개념.

장단점

장점 단점
쿼리 단순함 (JOIN 깊이 1단계) 중복 데이터 증가
읽기 성능 우수 쓰기/갱신 성능 저하
집계, 분석 용이 무결성 제약 어려움
BI 도구 호환성 높음 실시간 변경에 부적합

스타 스키마와 스노우플레이크 스키마 비교

항목 스타 스키마 스노우플레이크 스키마
정규화 수준 비정규화 정규화
차원 구조 평평(flat), 단순 계층적 구조
쿼리 성능 빠름 느릴 수 있음
저장공간 큼 (중복 ↑) 작음
관리 복잡도 낮음 높음

요약

  • 스타 스키마는 반정규화를 활용한 데이터 웨어하우스 구조
  • Fact 테이블은 수치 데이터, Dimension 테이블은 설명 정보
  • 빠른 분석 쿼리와 OLAP 최적화가 목적
  • 정규화를 완전히 따르지 않으며, 데이터 중복과 트레이드오프 존재

오늘은 여기까지~

 

728x90

'IT 여러가지' 카테고리의 다른 글

IT: RDBMS 테이블 설계 체크리스트  (3) 2025.07.16
IT: for Loop vs while Loop  (0) 2025.07.13
IT: RDBMS 반정규화  (2) 2025.07.08
IT: RDBMS 정규화  (2) 2025.07.07
IT: 데이터 이행  (1) 2025.05.25