새소식

short terms

Kimball’s Dimensional Modeling

  • -
Kimball’s Dimensional Modeling

Kimball’s Dimensional Modeling

차원 모델링은 데이터 웨어하우스레벨에서 유용한 데이터 모델링 기법입니다.

Star Schema로 데이터를 정의하는 기법으로, 기존의 테이블을 변경하지 않고 새로운 컬럼을 추가하는 것과 같은 효과를 누릴 수 있게 합니다. 즉, 확장성과 재사용성 면에서 뛰어난 장점이 있습니다.


1. Design Process

설계 프로세스는 다음 네 단계로 정의할 수 있습니다.

  1. business Process 를 정의
    1. Fact의 성능 메트릭을 생성하거나 캡쳐하는 단계
    1. e.g.) 주문접수, 보험청구, 수강생 등록 등 운영 활동
  1. grain 을 정의
    1. 데이터를 유일하게 식별하는 식별자 → PK 또는 여러 키의 조합(하단 링크)이 될 수 있음
    Fact Table Surrogate Key | Kimball Dimensional Modeling Techniques
    Fact table surrogate keys, which are not associated with any dimension, are assigned sequentially during the ETL load process.
    https://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-techniques/dimensional-modeling-techniques/fact-surrogate-key/
  1. dimensions를 정의
    1. Business Process에 대해 육하원칙의 정보를 추가합니다.
      1. 누가, 무엇을, 어디서, 언제, 왜, 어떻게
    1. 팩트를 필터링, 그룹화하기 위한 설명 속성
  1. facts를 정의
    1. Business Process의 결과이며, 측정값들이 포함됩니다.
    1. e.g.) 소액 판매 거래에서, 판매된 제품의 수량과 가격


2. Fact Modeling

  • 필수 키
    • 차원 연결을 위한 FK, 선택적 Dimension Key, 날짜/시간 스탬프가 항상 포함되어야 합니다.
  • 쿼리에서 발생하는 계산, 동적 집계의 기본 대상입니다.
  • 팩트의 종류는 다음과 같습니다.
    • Transaction
      • 공간, 시간상 한 지점에서의 측정 이벤트
      • 가장 흔히 사용되는 유형
    • Periodic Snapshot
      • 특정 기간동안의 측정 데이터를 지표화하여 저장
      • 비즈니스의 시간 경과에 따른 변화를 추적하고 분석하는 데 사용
      • e.g.) 매월 말 일의 재고량, 매주 매출액, 분기별 고객 등록 수, 등
    • Factless
      • 수치 결과가 없지만, 차원 엔티티가 있는 테이블
      • e.g.) 수업 참석 이벤트 등
    • Aggregate
      • 기간 외 다른 속성으로 집계 요약한 테이블
      • 성능 향상을 위해, 특정 측정 항목을 기준으로 그룹화된 데이터를 저장.
      • 큰 데이터 집합을 빠르게 집계, 분석하기 위한 테이블
    • Consolidated
      • 같은 수준의 여러 팩트를 한 팩트 테이블로 결합시킨 경우


3. Dimension Modeling

  • 최대한 null값을 포함하지 않아야 합니다.
  • SCD Types (Slowly Changing Dimension Techniques)
    • Type 0 : Retain Original
      • 원본 유지 속성 (영구적, 불변)
    • Type 1 : Overwrite
      • 이전 속성 값을 덮어씀 (최근 할당 기준)
    • Type 2 : Add new row
      • 새 행을 추가함 (설명 관련 여러 행 존재할 수 있음)
      • 다중 값 차원을 유지하려는 경우
        • e.g.) 은행 계좌들과 개별 고객 간의 다대다 관계
      • 해당 타입은 다음 세 가지 속성을 추가해야 함
        • 유효 날짜 또는 시간
        • 만료 날짜 또는 시간
        • id (중복 방지용 구분자)
    • Type 3 : Add new attribute
      • 이전 속성 값을 덮어씀 (Type 1과 동일)
      • 기존 속성과 새롭게 추가된 속성을 동시에 유지하면서, 사용자가 선택하여 그룹화, 필터링할 수 있게 하기 위한 용도.
      • 거의 드물게 사용됨
    • Type 4 : Add mini-dimension
      • 속성 그룹이 빠르게 변경되는 경우에 사용
      • 수백만 행의 차원 테이블에서 자주 사용되는 속성의 경우, 빠르게 변경되지 않더라도 고려할 수 있음
      • e.g. 고객 데이터에서 건강 상태 차원이 자주 변경되는 경우
        • 건강 상태를 별도로 관리하여 미니 차원으로 생성
        • 고객 상태가 변경될 때, 새로운 행을 추가하는 대신 미니 차원만 변경
    • Type 5 : Add mini-dimension and Type 1 Outrigger
      • Type 1 + Type 4
      • Outrigger
        • 차원 테이블과 1:1 관계를 가지며, 테이블의 일부 속성을 분리하여 저장하는 역할
      • 차원 테이블의 변경 없이 새로운 정보를 관리할 수 있게 하기 위함
      • e.g. 고객 데이터에서 건강 상태 차원이 자주 변경되는 경우
        • Outrigger Table에 최신 건강 상태 덮어씌움
        • Mini-dimension에 건강 상태 정보를 추가
    • Type 6 : Add Type 1 Attributes to Type 2 Dimension
      • Type 2 + Type 1
      • 차원 테이블의 변경을 다루는 방식
        • Type 2이던 차원에 Type 1을 부여함. 즉 주 타입은 2
      • e.g. 제품 차원 테이블
        • 제품의 가격이 변동될 때, Type 1으로 업데이트
        • 나머지 속성들은 Type 2로 유지
    • Type 7 : Dual Type 1 and Type 2 Dimensions
      • 차원 테이블의 변경을 다루는 방식
        • 두 타입의 차원 테이블로 복제하여, PK를 공유하도록 하여 병합
      • e.g. 사원 차원 테이블
        • 직책과 부서는 Type 1 테이블에 저장, 실시간 조회
        • 입사일은 Type 2 테이블에 저장, 히스토리 추적
  • Behavior Study Groups
    • 고객 행태 분석을 위해 복잡하고 반복적인 분석이 필요한 경우, 분석 결과 고객 Key만 저장하는 스터디 그룹을 만들어 유지할 수 있음.
    • 일종의 필터로서 고객의 Key로 분리할 수 있음.
    • 스터디그룹 간 교집합, 차집합, 합집합으로 파생 스터디그룹을 생성할 수 있음.

'short terms' 카테고리의 다른 글

Language Code, ISO 639, FLORES-200  (0) 2022.11.25
NaN  (0) 2021.05.24
[draft] Streaming VS Time series  (0) 2021.05.17
Dialect (JPA hibernate)  (0) 2021.05.07
Eviction, Passivation, Expiration  (0) 2021.05.07
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.