(데이터 마트) 데이터마트 아키텍처란?

(SQL) 데이터마트가 무엇인지 , 데이터마트 아키텍처는 어떤 개념인지 살펴보자



1. 데이터마트란?


데이터마트는 DB에 쌓여있는 데이터를 분석에 활용할 수 있도록 별도의 테이블을 만들어 구축해놓은 시스템을 말한다.
원본 데이터를 바로 쓰면 되지 뭐하러 테이블을 또 만드느냐라고 생각할 수 있다.

원본 테이블을 직접 바라보면 다음과 같은 이슈가 있다.

  • 정제가 필요한 경우가 많음
    • 집계하려면 별도의 구문 처리가 필요함
    • 결측치가 있는 경우, Json 형식으로 되어있는 경우 , 데이터 타입이 분석에 적합하지않게 저장 (ex. 숫자가 string 타입으로 남음 ) 되어있는 경우
  • 불필요하게 많은 데이터를 조회해야함
    • 필요한 데이터는 일부인데 매번 전체 데이터에서 where절로 조건을 걸어서 가져오는 것은 불필요한 쿼리 비용을 발생시킴.
    • 데이터를 조회하는 크기 자체를 미리 줄인다면 쿼리 비용을 줄일 수 있음
  • 보안 문제 (권한)
    • 개인 정보가 담겨있거나 보안사항에 따라 데이터 접근 권한을 분리해야하는 경우가 있음
    • 데이터 마트를 구축하고 이 단위로 권한을 관리할 수 있음

위와 같은 이유들로 데이터 마트를 구축하는 것이다.


2. 데이터마트 아키텍처란?


데이터마트를 어떤 구조로 구축할지에 대한 다양한 방법론이 있다. 이를 데이터마트 아키텍처라고 한다.
트랜잭션을 기록하는 Fact 테이블과 그것을 맥락화하는 차원 테이블 (Dimension) 을 설계하는 것을 기본 골자로 한다.

구분Fact 테이블차원 테이블
역할이벤트 (사건) 또는 측정값을 저장맥락(Context) 또는 속성 정보 (메타 데이터)를 저장
데이터 성격트랜잭션성 , 로그성참조성 , 스냅샷 형태가 많음
예시매출 기록 , 로그인 이벤트 , 구매 로그고객 정보 , 상품 정보 , 시간 정보
칼럼 특징측정값 (measure) + 여러 차원키 (foreign key)차원키 (primary key) + 여러 속성 (attribute)
크기매우 큼상대적으로 작음



1) Fact 테이블 예시

1-1) fact_sales

sale_iduser_idproduct_iddate_keysales_amountplay_time_sec
1101P00120251019100003600
2102P0022025101950007200
3101P0032025102070001800
  • 이 테이블은 “매출”이라는 사건(event) 을 저장
  • 각 행은 하나의 구매 이벤트이며, 금액(sales_amount) 같은 측정값이 포함된다.
  • user_id, product_id, date_key 는 각각 “누가”, “무엇을”, “언제” 했는지를 나타내는 외래키다. 즉, “어떤 차원에서 본 사건인가”를 연결하는 역할



2) 차원 테이블 예시

2-1) dim_user

user_iduser_namecountrysignup_datedevice_type
101AliceKR2024-11-12Android
102BobUS2024-12-03iOS
  • 유저에 대한 속성 정보를 저장
  • 팩트 테이블의 user_id 와 연결되어 분석 시 “국가별 매출”, “디바이스별 리텐션” 등을 계산할 수 있게 해줌


2-2) dim_product

product_idproduct_namecategoryprice
P001100골드재화10000
P002VIP패스구독5000
P003스킨A코스메틱7000
  • 아이템, 상품 등 “무엇을 구매했는가”에 대한 메타데이터. 팩트 테이블의 product_id와 연결된다.


요약하자면 Fact 테이블은 무엇이 일어났는가를 저장하고 있는 테이블이고 차원 테이블은 그것이 어떤 맥락인가를 볼 수 있는 테이블이라고 보면 된다.

데이터마트 아키텍처는 대표적으로 스타 스키마 , 스노우 플레이크 스키마 , 갤럭시 스키마 , 데이터볼트 모델링 , 메달리온 아키텍처등이 있다. 이후 포스팅에서 각 아키텍처의 특징과 장단점은 무엇인지 살펴보도록하자.



© 2024. All rights reserved.