(데이터 마트) 데이터마트 아키텍처란?
(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_id | user_id | product_id | date_key | sales_amount | play_time_sec |
|---|---|---|---|---|---|
| 1 | 101 | P001 | 20251019 | 10000 | 3600 |
| 2 | 102 | P002 | 20251019 | 5000 | 7200 |
| 3 | 101 | P003 | 20251020 | 7000 | 1800 |
- 이 테이블은 “매출”이라는 사건(event) 을 저장
- 각 행은 하나의 구매 이벤트이며, 금액(sales_amount) 같은 측정값이 포함된다.
- user_id, product_id, date_key 는 각각 “누가”, “무엇을”, “언제” 했는지를 나타내는 외래키다. 즉, “어떤 차원에서 본 사건인가”를 연결하는 역할
2) 차원 테이블 예시
2-1) dim_user
| user_id | user_name | country | signup_date | device_type |
|---|---|---|---|---|
| 101 | Alice | KR | 2024-11-12 | Android |
| 102 | Bob | US | 2024-12-03 | iOS |
- 유저에 대한 속성 정보를 저장
- 팩트 테이블의 user_id 와 연결되어 분석 시 “국가별 매출”, “디바이스별 리텐션” 등을 계산할 수 있게 해줌
2-2) dim_product
| product_id | product_name | category | price |
|---|---|---|---|
| P001 | 100골드 | 재화 | 10000 |
| P002 | VIP패스 | 구독 | 5000 |
| P003 | 스킨A | 코스메틱 | 7000 |
- 아이템, 상품 등 “무엇을 구매했는가”에 대한 메타데이터. 팩트 테이블의 product_id와 연결된다.
요약하자면 Fact 테이블은 무엇이 일어났는가를 저장하고 있는 테이블이고 차원 테이블은 그것이 어떤 맥락인가를 볼 수 있는 테이블이라고 보면 된다.
데이터마트 아키텍처는 대표적으로 스타 스키마 , 스노우 플레이크 스키마 , 갤럭시 스키마 , 데이터볼트 모델링 , 메달리온 아키텍처등이 있다. 이후 포스팅에서 각 아키텍처의 특징과 장단점은 무엇인지 살펴보도록하자.