코딩하는 오징어

OLTP와 OLAP 본문

알쓸신잡

OLTP와 OLAP

코딩하는 오징어 2020. 1. 5. 16:54
반응형

OLTP(On-Line Transaction Processing, 거래 처리 영역)

  • 비즈니스 활동 자체를 지원 -> 비즈니스 트랜잭션의 원활한 처리를 최우선으로 함
  • 빈번한 거래 데이터의 입력, 수정, 삭제 과정에서의 효율성, 즉 효과적인 갱신이 주요 목표
  • RDB에서 테이블들을 정규화하는 이유는 데이터 갱신을 효율적으로 처리하기 위함. (정규화를 하게되면 데이터가 함수적 종속성에 기반하여 집약되므로 중복은 최소화되며 무결성은 극대화 됨)

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

 

OLAP(On-Line Analytical Processing, 분석 정보 영역)

  • 거래 데이터를 기초로 하여 효과적으로 분석하고 조회하는 것이 주요 관심사
  • OLTP의 데이터 관리 단위가 정규화된 테이블이라면, OLAP에서는 분석과 집계를 위한 관련 데이터들의 묶음이 그 단위가 됨. 즉, 통합된 연관 정보가 효과적인 분석, 조회를 위해 구조화 되어야함
  • 갱신으로 부터 자유로움. 2019년 12월 31일에 분석된 2020년 1월의 평균 판매량이 며칠 후 갱신될 확률은 높지 않음.
  • 정기적으로 적재되고 갱신되는 OLTP 데이터를 기초로 분석 관점에서 통합된 관련 정보를 빠르게 제공할 수 있게 모델링 되어야함.

 이렇게 OLTP와 OLAP는 근본적으로 목적이 다르므로 각각을 위한 데이터 모델링 역시 다르게 접근해야 한다. OLTP는 정규화를 중심으로, OLAP는 분석, 집계의 관점, 디멘션을 중심으로 모델링해야 한다. OLAP 영역 설계는 소비자에 맞춰져야 하며, 이는 어떤 기준과 경로(직접 쿼리 포함)로 접근하고 분석해도 일정 수준의 성능을 보장해야 함을 의미한다. 따라서 OLAP의 데이터 모델은 OLTP 데이터 모델보다 정규화가 덜 된 형태일 수 있으니, 설계자는 OLAP의 반정규화된 모델을 정규화하고 싶은 유혹을 뿌리쳐야 한다.

 

OLTP 영역을 구성하는 모델이 관계형 데이터 모델이라면, OLAP 영역을 구성하는 모델은 다차원 모델이라고 할 수 있다.

 

구분 OLTP OLAP
목적 비즈니스 활동(거래) 지원 비즈니스 활동에 대한 평가, 예측
트랜잭션 유형 insert, update, delete, select select
데이터 수명 주기 실시간 ETL일정에 따른 주기
관리 단위 정규화가 수행된 테이블 분석을 위한 관련 정보
시간성 현재 데이터 과거 데이터
설계 기법 정규화에 기반한 ER 모델링 디멘션 모델링
최적화 방향성 데이터 갱신 효율성, 무결성 극대화 조회 성능, 사용성, 접근 편의성
반응형
Comments