Home [Data] [빅데이터를 지탱하는 기술] 정리하기 - 2-4 데이터 마트의 기본 구조
Post
Cancel

[Data] [빅데이터를 지탱하는 기술] 정리하기 - 2-4 데이터 마트의 기본 구조

개요

안녕하세요.

이번 글에서는 “빅데이터를 지탱하는 기술” 이라는 책의 2장 4절, “데이터 마트의 기본 구조”를 정리했습니다.


시각화에 적합한 데이터 마트 만들기 - OLAP

다차원 모델과 OLAP 큐브

OLAP(On-Line Analytical Processing)은 데이터 집계를 효율화하는 접근 방법입니다. 일반 업무 시스템은 RDB 표 현식으로 모델링된 데이터를 SQL로 집계하는데요. OLAP는 다차원 모델의 데이터구조를 MDX(MultiDimensional Expressions) 등의 쿼리 언어로 집계합니다.

OLAP 큐브는 데이터 분석을 위해 만들어진 다차원 데이터를 의미하는데요. 판매 데이터를 연도, 지역, 상품별로 분류하여 총 매출을 계산한다면 OLAP 큐브를 사용할 수 있습니다. 이 OLAP 큐브를 크로스 집계하는 구조가 바로 OLAP입니다.

과거에는 OLAP 고속화를 위해 다양한 아이디어가 필요했습니다. 크로스 집계의 모든 조합을 계산하여 데이터베이스 안에 캐시한 뒤 쿼리가 실행되면 이미 집계된 결과를 반환하는 방법이 그 중 하나였죠.

BI 도구는 본래 OLAP 구조를 사용해 데이터를 집계하므로 데이터 마트도 이전에는 OLAP 큐브로 작성했습니다.

OLAP는 대규모 데이터를 실시간으로 분석하거나 다차원적으로 집계할 필요가 있을 때 활용됩니다.

MPP 데이터베이스와 비정규화 테이블

MPP 데이터베이스는 여러 노드에 분산된 데이터를 병렬로 처리하는 데이터베이스입니다.

MPP 데이터베이스와 인메모리 데이터베이스의 보급으로 사전 준비가 줄어들면서 OLAP 큐브를 위한 특별한 구조가 필요가 사라지고 BI도구와 MPP 데이터베이스를 조합하여 크로스 집계를 처리하는 방법이 널리 사용되고 있습니다.

BI도구로 원하는 그래프 생성을 위해서는 그래프에 맞춘 다차원 모델 설계가 필요한데 MPP 데이터베이스는 다차원 모델의 개념이 없어 비정규화 테이블을 통해 데이터 마트를 작성합니다.

요약해보면 시각화에 적합한 데이터 마트 생성은 곧 BI 도구에 적합한 데이터 마트 생성이라고 할 수 있습니다.

테이블을 비정규화하기

테이블을 비정규화하기 앞서 어떤 테이블이 있는지 구분해야 합니다. 트랙잭션(Transaction) 테이블은 시각과 함께 생성되는 데이터를 기록한 것입니다. 마스터(Master) 테이블은 트랜잭션이 참고하는 각종 정보입니다. 트랜잭션 테이블이 지속성을 가진다면 마스터 테이블은 재사용 가능한 정보를 저장합니다.

예를 들어 아래의 그림은 판매 이력에 대한 테이블의 설계를 나타냅니다.

[그림 1] 판매 이력에 대한 테이블 설계 [그림 1] 판매 이력에 대한 테이블 설계

판매 이력(Sales History) 테이블만 트랜잭션 테이블이고 나머지는 마스터 테이블입니다. 이는 RDB의 관계형 모델(Relational Model)에 따른 것입니다. 관계형 모델의 핵심은 정규화(Normalization)로 보다 자세한 내용은 추후 게시글에서 다루겠습니다.

팩트 테이블과 디멘전 테이블

팩트(Fact) 테이블은 데이터 웨어하우스에서 트랜잭션처럼 사실이 기록된 것으로 집계의 기반이 되는 숫자 데이터입니다. 한편 디멘젼(Dimension) 테이블은 팩트 테이블의 데이터에서 참고하는 마스터 데이터로 데이터 분류를 위한 속성값을 저장합니다.

스타 스키마와 비정규화

스타 스키마(Star Schema)는 팩트 테이블과 디멘젼 테이블을 연결하는 테이블을 추가하여 비정규화한 테이블입니다. 데이터 마트를 만들 때 다음 그림의 2번 처럼 팩트 테이블을 중심으로 여러 디멘전 테이블을 결합합니다.

[그림 2] 데이터 마트의 스키마 [그림 2] 데이터 마트의 스키마

디멘전 테이블을 작성하기 위해서는 정규화된 테이블을 최대한 결합합니다. 그 결과로 데이터 중복이 발행해도 괜찮습니다.

스타 스키마를 사용하는 이유는 단순하고 이해하기 쉽다는 점이 있습니다. 아래의 리스트는 스타 스키마의 테이블을 SQL로 결합하는 쿼리입니다.

1
2
3
4
5
6
7
8
9
10
SELECT ...
  FROM 판매 이력
LEFT JOIN 상품 ON 상품.상품ID = 판매 이력.상품ID
LEFT JOIN 점포 ON 점포.점포ID = 판매 이력.점포ID
;
   매출일   | 상품ID | 점포ID | 금액  | 상품명 | 상품카테고리 | 점포명
------------------------------------------------------------------------
 2017-01-01 |  101   |   11   | 57500 | 상품 A |    식료품    | 점포 A
 2017-01-01 |  102   |   11   | 2400  | 상품 B |   전자제품   | 점포 A
...

또한 성능 면에서도 스타 스키마는 좋습니다. 데이터 양이 증가하면 팩트 테이블이 디멘전 테이블보다 커지면서 양에 따라 집계 시간이 좌우되는데요. 팩트 테이블에는 ID와 같은 키만 남겨두고 나머지를 디멘전 테이블로 옮기면서 가능한 작게 유지한다면 우수한 성능을 기대할 수 있습니다.

비정규화 테이블 - 데이터 마트에 정규화는 필요없다!

MPP 데이터베이스와 같은 열 지향 스토리지가 보급되면서 많은 변화가 발생하는데요. 팩트 테이블에 모든 열을 저장하고 쿼리를 실행할 때 테이블을 결합하지 않는 것이 그 예시입니다.

열지향 스토리지는 열 단위로 데이터를 압축하기 때문에 문자열을 그대로 저장해도 작게 압축되고 이를 통해 디스크 I/O를 줄일 수 있습니다. 비정규화(Denormalization) 테이블은 이러한 스토리지를 이용하며 그림2의 3번과 같이 모든 테이블을 결합한 팩트 테이블의 형태를 보입니다.

다차원 모델 시각화에 대비한 테이블 추상화

비정규화 테이블을 준비했다면 다차원 모델(Multidimensional Model)로 추상화합니다. 다차원 모델은 열을 디멘전(Dimension)과 측정값(Measure)로 분류하는데요. 측정값은 숫자 데이터와 집계 방법을 정의하고 디멘전은 크로스 집계에서 행과 열을 이용하는 것을 의미합니다. 아래의 예시를 통해 자세히 확인할 수 있습니다.

[그림 3] 비겅규화 테이블과 다차원 모델 [그림 3] 비겅규화 테이블과 다차원 모델

왼쪽의 비정규화 테이블에서 6개의 디멘전이 존재합니다. 여기서 측정값으로 금액의 합계를 사용하는데요. BI 도구를 이용한 크로스집계를 통해 상품명과 지역을 기준으로 금액의 합계를 계산했습니다.

모델의 정의 확장

BI 도구를 이용해 시각화를 하고 싶다면 우선 시각화 대상의 측정값과 디멘전을 결정합니다. 데이터 마트에 비정규화 테이블을 생성하고 앞서 측정값과 디멘전을 기반으로 시각화가 종료됩니다.

비정규화 테이블에 새로운 열을 추가한다면 새로운 집계를 어렵지 않게 추가할 수 있습니다. 이와 같이 다디멘전 모델의 정의는 나중에도 확장 가능합니다!

브레이크 다운 분석

브레이크 다운(Breakdown) 분석은 복잡한 데이터 분석을 위해 데이터를 몇 개의 그룹으로 분산하는 것을 뜻합니다. 데이터 분류용 디멘전을 팩트 테이블에 추가하고 상위 디멘전에 그룹명을 추가하는 방식입니다.

[그림 4] 브레이크 다운 분석 [그림 4] 브레이크 다운 분석

예를 들어 위 그림에서는 Attribute 1을 그룹명으로, Attribute 2를 하위 그룹명으로 개별 대시보드를 작성합니다 대시보드를 생성하면서 필터링 조건을 추가해한다면 심층적으로 분석 가능합니다. Attribute 1을 연령대, Attribute 2을 조회 상품으로 설정한다면 연령대별로 관심을 가지는 상품을 파악할 수 있겠죠?


마무리하며

이번 글에서는 데이터 마트의 기본 구조에 대해 알아봤습니다.

데이터 마트를 만들기 위한 OLAP, 그리고 OLAP를 지원하는 MPP 데이터베이스와 비정규화 테이블을 살펴봤습니다.

각각의 테이블을 트랜잭션 - 마스터 그리고 팩트 - 디멘전으로 구분하고 이를 스타 스키마로 구성한 뒤 마지막으로 비정규화 테이블을 생성합니다.

이 비정규화 테이블을 바탕으로 디멘전과 측정값을 분류해 다차원 모델로 추상화한다면 시각화가 완료됩니다.

이 글이 조금이나마 도움이 되셨으면 합니다.

감사합니다. 😀


참고 문헌

  • 니시다 케이스케, 빅데이터를 지탱하는 기술, 제이펍, 2018
This post is licensed under CC BY 4.0 by the author.

[Data] [빅데이터를 지탱하는 기술] 정리하기 - 2-3 애드 혹 분석과 시각화 도구

[Data] [빅데이터를 지탱하는 기술] 정리하기 - 3-1 대규모 분산 처리의 프레임워크

Comments powered by Disqus.