다차원 데이터 모델

JunYoungK·2024년 9월 11일
0

비정규화된 구조

  • 데이터 웨어하우스는 일반적으로 비정규화된 데이터 모델을 사용
    • 이는 OLTP 보다 훨씬 방대한 양의 데이터를 분석용 쿼리를 통해 조회하는 OLAP의 이용 목적에 따른 것임
  • OLTP의 정규화된 데이터 모델과 차이를 가짐
  • 비정규화된 데이터 구조를 통해 조인 연산을 줄이고 쿼리 성능을 향상시킴

다차원 모델링

  • 데이터 웨어하우스는 주로 다차원 모델링을 채택함
    • 조인으로 인한 셔플링의 비용은 굉장히 크므로 조인을 줄이는 형태
    • 비즈니스 프로세스 관계가 명확하게 드러나는 데이터 모델이기도 함
  • 이 모델은 차원 테이블과 팩트로 구분하여 구성
    • 차원 테이블: 분석의 관점을 제공하는 설명적 속성들을 포함
      (예: 상품, 지역, 유저 등)
    • 팩트 테이블: 측정값과 지표를 저장하며 차원 테이블과 연결하는 형태
      (예: 구매기록 등)
  • 주로 두 가지 스키마 유형이 있음
    • Star Schema
    • Snowflake Schema

Star Schema

star-schema.png

  • 스타 스키마는 팩트 테이블을 중심으로 각 차원 테이블들과 관계를 맺는 구조로 이루어짐
    • 차원 테이블과 팩트 테이블은 기본키와 외래키로 관계 형성이 이루어짐
  • Snowflake Schema보다 반정규화된 구조로 데이터 중복이 일부 발생할 수 있다.
    • 더 많은 공간을 차지
    • 데이터 무결성 유지가 더 어려울 수 있음
  • 대신 조인을 적게 사용하므로 쿼리를 더 간단하고 빠르게 만듬

Snowflake Schema

snowflake-schema.png

  • 차원 테이블의 계층적 형태를 포함하는 일종의 스타 스키마이다.
    • 스타 스키마보다 정규화되어 데이터 중복을 최소화함
    • 기본키와 외래키를 통해 팩트 테이블에 연결된 차원 디멘션 및 하위 차원 테이블로 구성
  • 테이블을 분할함으로써 중복성을 줄이고 메모리 낭비를 방지
    • 중복 데이터가 없으므로 유지 관리가 더 용이함
  • 설계와 이해가 스타스키마보다 복잡하다.
  • 쿼리 실행시 더 많은 조인을 요구하므로 스타스키마에 비해 검색 효율이 떨어짐

Slowly Changing Dimensions

  • SCD는 시간이 지남에 따라 천천히 예측할 수 없게 변하는 차원 데이터를 처리하는 기법
  • 차원 데이터의 변경 이력을 추적하면서 데이터 무결성을 유지
    • 보통 두 개의 timestmap 필드를 갖는 것이 좋음
      • created_at
      • updated_at
  • 이 경우 컬럼의 성격에 따라 어떻게 유지할지 방법이 달라짐
    • SCD Type 0 ~ 4

SCD Type 0

  • 한번 쓰고 나면 바꿀 이유가 없는 경우들
  • 한번 쓰고 나면 갱신되지 않고 고정되는 필드들
  • 예) 고객 테이블이라면 회원 등록일, 재품 첫 구매일

SCD Type 1

  • 데이터가 새로 생기면 덮어쓰면 되는 컬럼들
  • 처음 레코드 생성시에는 존재하지 않았지망 나중애 생기면서 채우는 경우
  • 예) 고객 테이블이라면 연간소득 필드

SCD Type 2

  • 특정 entity에 대한 데이터가 새로운 레코드로 추가되어야 하는 경우
  • 예) 고객 테이블에서 고객의 등급 변화
    • 등급 컬럼의 값이 regular 에서 vip로 변화하는 경우 변경시간도 같이 추가되어야 함

SCD Type 3

  • SCD Type 2와 동일한데, 이 경우에는 레코드를 새로 추가하지 않고. 컬럼을 새로 추가함
  • 예) 고객 테이블에서 등급 컬럼의 값이 regular 에서 vip로 변화하는 경우
    • previous_tier라는 컬럼 생성
    • 변경시간도 별도 컬럼으로 존재해야함

SCD Type 4

  • 특정 entity에 대한 새로운 데이터를 새로운 DImension 테이블에 저장하는 경우
  • 제일 많이 사용하는 타입
  • 예) 별도의 테이블로 저장하고 이 경우 아예 일반화할 수도 있음

0개의 댓글