데이터베이스 모델링 - 관점 모델링

데이터베이스 모델링 - 관점 모델링

 

정보를 도출하는 관점

디멘션

위의 표처럼 판매 데이터를 관리하려 한다면 어떻게 데이터 모델링을 해야 할까? 잘보면 셀 하나하나의 값을 결정하는데 지역, 상품, 기간 이라는 3가지 정보가 영향을 주었음을 확인할 수 있다. 판매량을 집계하는 기준이 존재하는 것이다. 예를들어 위의 22 라는 값은 상품b2가 강원도 원주시에서 2017년 한해동안 22개가 판매되었다는 사실정보를 보여준다.

 

다시말해서 22는 강원도 원주시라는 지역, 상품유형은b이고 상품번호는 b1인 상품 그리고 2014년이라는 기간 이세가지 관점! 디멘션이 결합된 정보다.

 

22라는는 값이 정보로서 비즈니스적인 가치를 가지려면 그 값을 해석하는 맥락이 명확해야 한다.  22가 어떤 상황에서는 강원도 원주에서 2014년 발생한 반품량이 될 수도 있다. 따라서 데이터 모델링에서 맥락은 중요한 기준 정보로서 모델의 구조를 지배하게 된다. 또 지역과 상품은 그룹핑 구조를 가지고 있다. 지역 중분류와 지역 소분류, 상품 유형과, 상품 번호가 이에 해당 된다.

 

판매량을 도출하는 세가지 팩트

 

위 그림은 판매량이라는 팩트 (사실 값) 와 이 값을 정의 하는데 필요한 3가지 표현 방식, 즉 디멘션, 관점 x, y, z의 좌표로 모형화 되었다.  팩트를 만들기 위한 디멘션은 얼마든지 추가될 수 있으며 각 디멘션은 팩트를 표현하는 하나의 관점이 된다. 이처럼 디맨션은 팩트를 그룹화 하거나 필터링 하는 목적으로 사용될 수 있다.

 

일반적으로 디멘션 혹은 그룹핑을 위한 논리적인 계층구조는 1:n의 형태의 엔터티 간 부모 - 자식 관계를 만든다. 팩트를 규정하는 개별 디멘션은 각각 테이블로 만들어져 팩트 테이블의 상위 테이블이 되어야 하며, 디멘션내의 계층구조를 표현하려면 각 디멘션은 다시 상. 하위 테이블로 분리되어야 한다. 팩트 테이블인 <판매>는 각 디맨션 테이블의 기본키를 외래키(fk)로 하여 서로 관계로 연결된 하위 테이블로 만들어진다.

 

집합으로 표현

집합으로 표현

 

각각의 테이블 형태

각각의 테이블 형태로 표현

 

모델링

데이터 모델링으로 표현

 

디멘션과 팩트의 관계, 그리고 이것이 데이터 모델에서 부모-자식 관계로 어떻게 구현되는지 이해하는 데는 큰 어려움은 없었을 것이다.  디멘션이 팩트를 결정하는 기준 정보로서의 부모 역할을 하게 된다는 것, 어떤 팩트를 결정하는 유형과 개념은 반드시 그 팩트의 상위로 올라가야 함을 이해하는게 중요하다.  기간별, 지역별, 상품별, 판매량에서 ~별 디멘션은 데이터를 해당 디멘션으로 한정하는 동시에 구조화 할 수 있는 힌트를 준다.

또한 지역 중분류, 지역 소분류와 같은 그룹핑 구조는 유형화를 위한 데이터 계층 조직화에 대한 실마리를 제공한다. 데이터를 모델링한다는 것은 데이터를 이해하고 유형화 하고 구조화하는 과정이다.

 

OLTP OLAP 차이

1.은행고객 A의 계좌 X의 잔액

2,은행 고객 A의 계좌 X에 대한 최근 6개월간 평균 잔액

1번은 온라인에서 이루어진 트랜잭션을 데이터베이스에 저장한 거래 처리 데이터다
2번은 이미 데이터베이스에 저장된 거래 데이터를 가공한 분석 정보다. 
기업운영에 필요한 의사 결정관점에서는 전자인 거래 처리 데이터 보다 후자인 분석 정보가 더 큰 가치를 가진다.

이처럼 거래처리 영역과 분석정보 영역은 본질적으로 다른 목적을 지닌다.
거래처리 영역은 비즈니스 활동 자체를 지원한다. 
분석정보 영역은 비즈니스 활동에대한 측정, 평가, 분석, 예측, 개선 등을 지원한다.

위의 예에서 계좌 개설, 입금, 출금, 이체 등이 거래 처리 영역이고, 특정기간 고객의 평균잔액, 고객의 신용도 변화 등이 분석 정보 영역이다. 이상으로 데이터는 그 성격과 목적에 따라 거래 처리 데이터와 분석 정보 데이터로 나뉘며, 각각을 별도의 영역에서 관리한다는 사실과 그 이유를 알아보았다.

여기서 거래처리영역을 OLTP 라고 하고 OLTP에 저장된 운영 데이터를 통합하고 변환하여 분석 정보를 생산하는 영역을 OLAP라고 한다. 문제는 OLTP와 OLAP가 지향하는 목표가 다르므로 모델링을 할때도 차이가 존재한다.

 

OLTP와 OLAP 차이

 

OLTP는 비즈니스 트랜잭션의 원할한 처리를 최우선으로 한다. 빈번한 거래 데이터의 입력, 수정, 삭제 과정에서의 효울성, 즉 효과적인 갱신이 주요 목표다. RDB에서 테이블들을 정규화 하는 이유는 사실 데이터 갱신을 효율적으로 처리하기 위함이라고 할 수 있다. 나중에 다시 다루겠지만, 정규화를 하면 데이터가 함수적 종속성에 기반하여 집약되므로 중복은 최소화되며 무결성은 극대화 된다.

 

예를 들어 고객의 연락처 정보가 제대로 정규화 되지 않았다면 거래 트랜잭션 마다 이 정보가 중복 포함 될 수 있다. 이 상태에서 특정 고객의 연락처가 바뀌면, 해당 고객의 모든 거래 정보를 찾아 연락처 정보를 일일이 갱신해야 한다. 또한 OLTP 모델은 엔터티 사이의 관계, 데이터 발생의 전제, 선행규칙이 최대한 표현되어야 한다. 상품이 없는 주문이나 고객이 없는 주문이 발생해서는 안되기 때문이다. 요약하면 OLTP운영 데이터의 관리 단위는 정규화된 테이블이며, 그 데이터는 실시간으로 입력 수정 삭제된다고 전제한다.

반면, OLAP에서는 거래 데이터를 기초로 하여 효과적으로 분석하고 조회하는 것이 주된 관심사다.

이렇게 OLTP와 OLAP는 근본적으로 목적이 다르므로 각각을 위한 데이터 모델링 역시 다르게 접근해야 한다. OLTP는 정규화를 중심으로, OLAP는 분석, 집계의 관점, 디멘션을 중심으로 모델링 해야 한다. OLAP영역은 리포팅 도구, 다차원 분석 도구, 각종 애플리캐이션, 그리고 데이터 소비자가 조회와 분석을 잘 할 수 있도록 데이터를 정제해서 저장하는 곳이어야 한다. OLAP영역 설계는 데이터 소비자에게 맞춰져야 하며, 이는 어떤 기준과 경로로 접근하고, 분석해도 일정 수준의 성능을 보장해야 함을 의미 한다. 따라서OLAP의 데이터 모델은 OLTP 데이터 모델보다 정규화가 덜된 형태일 수 있다.

이상으로 정보의 흐름에 따라 데이터 모델의 지향점이 어떻게 다른지, 어떻게 구조화 되어야 하는 지 살펴보았다. OLTP 영역을 구성하는 모델이 관계형 데이터 모델이라면, OLAP 영역을 구성하는 모델은 다차원 모델이라고 할 수 있다. 우리는 비즈니스 트랜잭션 처리를 위해 정규화 이론에 기반한 RDB 모델의 관점에서 모델링을 공부하게 될 것이다.

데이터 모델링은 업무 데이터를 읽고 이해하여 이를 조직화하고 구조화하는 과정이다. 따라서 데이터 모델링에는 업무 데이터를 충분히 이해하는 것이 선행되어야 한다.  물론 데이터를 이해한다는 것에는 데이터의 관점과 차원, 데이터 간의 관계, 주변 맥락을 명확히 정의하는 것이 포함되어야 한다.

 

요약

- 디멘션(관점)이 모여 팩트를 도출한다.

- OLTP와 OLAP의 지향점이 다르기 때문에 모델링도 다르게 해야 한다.