-
OLTP vs OLAPTips 2022. 3. 29. 14:51728x90반응형
데이터를 저장하는 목적은 저장된 데이터를 활용하기 위해서다. 데이터를 활용하는 방법은 크게 OLTP와 OLAP 두 가지로 구분할 수 있다. 어떻게 데이터를 활용하냐에 따라 저장하는 데이터 베이스의 종류, 데이터 베이스 엔진의 선택, 데이터 모델링 방법이 달라지므로 저장되는 데이터의 활용 목적을 분명히 하는 것은 중요한 작업이다.
OLTP
OLTP는 OnLine Transaction Processing의 약자로 "트랜잭션"이 목적인 처리방법이다. 비즈니스 활동 자체를 지원하는 작업이라는 설명이 있는데, 이 말이 좀 어렵다면 돈을 벌어다주는 활동을 지원하는 작업이라고 생각하면 된다.
사용자의 요청을 적절하게 하나의 트랜잭션으로 묶고, 이 트랜잭션이 완벽하게 처리되는 것을 목표로한다(하지만 완벽이란건 없기에 SE들이 야근을 한다). 사용자와의 커뮤니케이션을 중점으로 하므로 다음과 같은 특징이 있다.
- 데이터베이스에 저장된 데이터는 최신의 데이터를 유지해야한다.
A 고객의 계좌에 3000원이 예치되어 있다. A 고객이 B 고객에게 3000원을 보낸 후, 바로 C 고객에게 4000원을 보내는 요청을 보내는 경우,
- A 고객이 B 고객에게 송금을 한 기록이 바로 A 고객의 계좌에 반영이 되지 않는다면 어떻게 될까?
- B 고객에게 송금을 하는 요청과 C 고객에게 송금을 하는 요청을 하나의 트랜잭션으로 처리한다면 어떻게 될까?- 예상치 못한 변수로 중간에 트랜잭션이 실패한다면, 현재까지 진행된 요청을 무효화해야한다.
송금은 송금 계좌 확인 -> 잔액 확인 -> 출금 -> 수금 계좌 확인 -> 수금 계좌로 요청된 금액 송금의 다섯 개의 작업으로 나눌 수 있다. 이 때, 출금 작업까지만 완료되고 수금 계좌 확인은 실패한다면 어떻게 처리되어야할까?
이처럼 OLTP는 온라인에서 무수히 많이 발생하는 작업 요청들을 각각 오류없이 효율적으로 처리하고, 그 결과값을 실시간으로 데이터 베이스에 반영해야한다. 또한 중복되는 데이터가 있다면 정보의 갱신에 오류가 생길 수 있고, 효율성이 떨어지므로 정규화의 중요성이 높다. OLTP를 목적으로 하는 데이터 베이스는 "현재 시점의 데이터만 보관한다"라고 표현되기도 하는데, 과거의 기록들 (송금 전에 3000원이 있었다)는 저장되지 않으며 필요 시 해당 데이터 베이스가 아닌 다른 곳에 보관되어야한다는 의미다.
OLAP
OLAP는 OnLine Analytical Processing의 약자로 데이터의 가치가 올라가고 분석을 통한 비즈니스 인사이트 도출이 중요해지면서 대두된 용어다. 데이터를 분석하고 조회하는 작업이 빠르고 효과적으로 처리되는 것이 주요 목표다.
- 이미 저장된 데이터를 분석하는 작업을 지원하기 때문에 데이터의 실시간 처리에 대한 요구 강도가 OLTP보다 낮다.
오후 2시에 분석 작업을 할 때, 한 시에 회원 가입한 한 명의 데이터를 실시간으로 업데이트 하는 것이 더 중요할까, 오늘 오전까지의 데이터를 기준으로 전체 회원 숫자를 더하는 쿼리를 빨리 보여주는 기능이 더 중요할까?
- 정규화된 테이블보다 분석 목표에 맞는 연관 정보가 통합되어있는 형태가 보편적이다.
중복 데이터를 없애기 위해 회원 정보 테이블과 구매 이력 테이블이 분리되어 있는 데이터 베이스과 중복 데이터가 존재하더라도 두 가지 정보가 함께 저장되어 있는 데이터 베이스 중 어떤 데이터 베이스가 더 분석에 용이할까?
OLAP와 OLTP라고 용어가 분리되어 있다고 해서 다른 정보가 저장되는 것이 아니다. OLTP를 목적으로 하는 데이터 베이스로부터 OLAP를 목적으로 하는 데이터 베이스에 적재할 데이터를 추출하기 때문에 두 가지를 분리해서 비교하기보다는 어떠한 특징들이 두드러지는지를 중점으로 이해해야한다.
즉, OLTP에서 무결성이 중요하다고 해서 OLAP에서는 중요하지 않은 것이 아니며, OLAP에서 중요한 조회 속도는 OLTP에서도 역시 중요하다. 다만, 목적에 따라 그 중요도에 차이가 있다.
좋은 공부방법은 아래의 표를 보며 왜 아래와 같은 특징들을 가지게 되었는지에 대한 이유를 도출할 수 있는지 스스로 생각해보는 것인 것 같다.
구분 OLTP OLAP 목적 비즈니스 활동 자체 비즈니스 활동으로 생성된 데이터에 대한 분석 주요 트랜잭션 유형 Insert, Update, Delete, Select 집계 연산을 포함한 Select 데이터 갱신 실시간 주기적 데이터의 시간 현재 데이터 Historical 데이터 또는
주제 or 필요에 따라 요약된 데이터데이터 접근 빈도 높음 보통 또는 낮음 목표 데이터 갱신 속도 및 효율성, 무결성 조회 속도, 정보 가치, 데이터 사용자의 편의성 예시 회원 가입, 회원 탈퇴 MAU (Montly Activity User),
ACU(Average Current User)728x90반응형'Tips' 카테고리의 다른 글
AWS AccessDeniedException: user is not authorized to perform: iam:PassRole on resource 에러 해결 방법 (0) 2022.06.15 맥 실리콘 m1칩에서 brew와 brew로 aws cli 설치하기 (0) 2022.05.24 시간 단위 정리 - ns, ms, us, ps, fs (0) 2022.03.25 CPU 성능 측정에 관련된 용어들 - Clock cycle, Clock period, Clock speed, CPI, IC (0) 2022.03.25 포트포워딩으로도 외부에서 접속이 안 될 때: Ngrok으로 로컬PC 서버에 띄우기 (0) 2021.10.27