개요
데이터웨어하우스의 설계에서 팩트 테이블과 차원 테이블은 데이터를 효율적으로 저장하고 분석하기 위해 필수적인 요소이다. 이번 글에서는 팩트 테이블과 차원 테이블의 설계 방법에 대해 자세히 알아보도록 하겠다.
팩트 테이블 설계
팩트 테이블은 비즈니스 이벤트나 활동을 나타내는 데이터를 저장한다. 주로 수량, 금액, 획수 등의 측정값을 포함한다. 팩트 테이블은 다음과 같은 단계를 따른다.
- 측정값 정의:
- 팩트 테이블에 저장할 측정값을 정의한다. 예를 들어, 판매 데이터의 경우 판매량, 매출액, 할인 금액 등이 측정값이 될 수 있다.
- 핵심 이벤트 식별:
- 팩트 테이블은 특정 비즈니스 이벤트를 나타내므로 어떤 이벤트를 저장할 것인지 결정한다. 예를 들어, 판매 이벤트, 주문 이벤트, 클레임 이벤트 등이 있을 수 있다.
- 키 구성:
- 펙트 테이블의 각 행은 고유한 이벤트를 나타내기 위해 복합 키를 사용한다. 복합 키는 여러 차원 테이블의 외래 키로 구성된다.
- 예를 들어, 판매 이벤트의 경우 제품 ID, 고객 ID, 시간 ID 등의 외래 키가 복합 키를 구성할 수 있다.
- 그레인 결정:
- 팩트 테이블의 그레인은 저장할 데이터의 가장 낮은 수준의 세부사항을 결정한다. 예를 들어, 일별 판매량인지, 시간별 판매량인지 결정한다.
- 그레인이 너무 높으면 세부 사항이 손실되고 너무 낮으면 테이블 크기가 비대해질 수 있다.
- 속성 추가:
- 추가적으로 필요한 계산된 속성이나 비즈니스 규칙에 따른 속성을 팩트 테이블에 추가한다.
차원 테이블 설계
차원 테이블은 팩트 테이블의 측정값을 문맥적으로 설명하는 속성을 저장한다. 차원 테이블의 설계는 다음과 같은 단계를 따른다.
- 차원 식별:
- 팩트 테이블의 측정값을 설명하기 위해 필요한 차원을 식별한다. 일반적인 차원으로는 시간, 제품, 고객, 지역 등이 있다.
- 속성 정의:
- 각 차원의 속성을 정의한다. 예를 들어 제품 차원의 경우, 제품 이름, 카테고리, 브랜드 등이 속성이 될 수 있다.
- 속성은 분석에 필요한 정보를 제공할 수 있도록 충분히 상세해야한다.
- 키 구성:
- 각 차원 테이블은 고유한 기본 키를 가져야한다. 이 키는 팩트 테이블의 외래 키로 사용된다.
- 기본 키는 일반적으로 숫자형 ID로 구성되며 이는 성능을 최적화하는 데 도움이 된다.
- 계층 구조 정의:
- 일부 차원은 계층 구조를 가질 수 있다. 예를 들어 시간 차원은 연도, 분기, 월, 일 등의 계층 구조를 가질 수 있다.
- 계층 구조는 롤업 및 드릴 다운 분석을 지원한다.
- 정규화/비정규화:
- 차원 테이블은 일반적으로 비정규화된 형태로 설계된다. 이는 데이터를 읽는 속도를 높이기 위함이다.
- 필요에 따라 정규화된 구조로 설계할 수도 있지만 데이터 웨어하우스에서는 비정규화된 형태가 더 일반적이다.
결론
팩트 테이블과 차원 테이블의 설계는 데이터웨어하우스의 성능과 사용성을 결정짓는 중요한 요소이다. 팩트 테이블은 비즈니스 이벤트를 저장하고 차원 테이블은 그 이벤트를 설명하는 속성을 저장한다. 올바르게 설계된 팩트 테이블과 차원 테이블은 데이터를 효율적으로 저장하고 빠르게 조회하며 사용자가 쉽게 분석할 수 있도록 한다.
'BI' 카테고리의 다른 글
DW/ETL - 팩트 테이블 가산성 및 NULL 값처리 (0) | 2024.07.18 |
---|---|
DW/ETL - 스타 스키마와 스노우플레이크 스키마 (0) | 2024.07.12 |
DW/ETL - 차원 모델링 (0) | 2024.07.06 |
DW/ETL - Operational Data Storage(ODS) (0) | 2024.07.04 |
DW/ETL - OLAP 큐브 (0) | 2024.07.03 |