OALP와 OLTP

Ryu·2022년 10월 22일
0

데이터 프로세싱 시스템에는 데이터로부터 무엇을 얻고 싶은지에 따라 나뉘는 두 가지 타입이 있다.

OLAP (Online Analytical Processing)

이미지 출처: TechTarget

OLAP는 이름에서 알 수 있듯이 데이터 분석을 위한 방법이다. 예를 들어 A회사의 상품과 매출에 대한 데이터가 있을 때, 이로부터 어느 시기에 어느 지역에서 어떤 제품이 잘 팔릴지, 다음 달에 예상되는 제품의 수요는 어떨지 등등의 인사이트를 OLAP를 통해 얻을 수 있다.

핵심은 이런 다양한 정보(어느 시기, 어느 지역, 어떤 제품)을 어떻게 효율적으로 쿼리하고 분석해내는가이다.

OLAP cube

OLAP에서는 여러 데이터 소스로부터 OLAP cube라는 것을 만든다. 이 큐브는 dimension(고객, 위치, 시기) 별로 카테고리화 된 데이터를 갖고 있다. 이런 multidimensional database으로의 쿼리를 통해 답을 얻을 수 있다.

OLTP (Online Transactional Processing)

OLTP는 transaction을 위한 방법이다. 흔히 데이터베이스를 생각하면 떠올리는 은행에서의 입출금 처리라던가 웹사이트 계정의 패스워드 변경 등이다.

Transaction에서 가장 중요한 것은 데이터의 무결성이다. 하나의 데이터에 여러 쿼리로부터의 액세스가 일어날 수 있고 최대한 많은 쿼리를 처리해주면서도 각 쿼리가 항상 정확한 값을 얻도록, 데이터가 항상 정확한 값을 갖도록 보장해줘야 한다.

마트에서 계산할 때 사용하는 POS 기를 생각해보자. (참고로 POS 기는 a point of sale의 줄임말이다)
내가 물건을 태그하고 계산하는 순간, 마트의 인벤토리 시스템, Order 관리 시스템, 주차 정산 시스템 등등 여러 시스템과의 transaction이 발생할 것이다. 또 나와 같은 시간에 수십 개의 다른 POS기가 다른 고객의 transaction을 처리해주고 있다.

OLAP와 OSTP의 차이점?

차이점이란 말이 조금 어색하지만 둘의 특징을 이해하면 좋을 것 같다.

OLAPOLTP
목적데이터를 분석하여 인사이트를 얻기!데이터에 실시간으로 비지니스 로직 수행하기!
쿼리SELECTINSERT, UPDATE, DELETE
고가용성흠?High availability 가능
프로세싱 시간몇 초~몇 시간. 환경에 따라, 쿼리에 따라 다르다.수 ms 안에 끝나야 한다.
데이터 소스Multi-dimensional schemaRelational DB
데이터 업데이트주기적으로 수행실시간으로 빠르고 짧게 수행

기존 서비스들은 어떤 방법을 채택하고 있을까?

여기서부턴 순전히 나의 생각이다.

인스타그램

인스타그램은 실시간으로 사람들이 포스트를 올리고, 댓글을 달고, 좋아요를 누른다. 또, 태그별로 포스트를 검색할 수 있다.

게다가 전 세계 사람들이 잠도 안 자고 24시간 정말 활발하게 사용하는 것 같다. 초당 쿼리가 몇백만은 되려나?

모든 웹서비스가 그렇겠지만 인스타그램처럼 트래픽이 많은 서비스일수록 기능별로 적합한 DB를 잘 선택해야 할 것 같다.

포스트 자체를 위해선 RDB가 적합할 것 같다. 다만 포스트를 올리는 시점에 여러 분석을 통하는 스트림을 만들 수 있을 것이다.

유저, 해쉬 태그, 위치 정보를 뽑아내서 Elastic Search 같은 시스템에 인덱스와 함께 저장할 수 있을 것이다.

그래서 해쉬 태그나 유저별로 무언가 검색을 할 땐, 저런 OLAP 시스템에 캐시 된 데이터로부터 원하는 정보를 빠르게 얻을 수 있을 것 같다.

참고한 글: https://scaleyourapp.com/instagram-architecture-how-does-it-store-search-billions-of-images/

네이버 쇼핑

네이버 쇼핑과 같은 오픈 마켓은 상품 판매 정보와 유저의 구매가 언제나 정확하게 이루어져야 한다(OLTP).

다만, 사람들의 구매 데이터를 모아 두고 월별, 지역별, 연령대 등 multi-dimensional database를 만든다면, 로그인한 유저의 정보에 따라 관심 있을 만한 상품을 추천할 수 있을 것 같다(OLAP). 당연히 이렇게 하고 있겠지?


결국, 비즈니스를 운영하는데 OLAP, OLTP 한 가지만 답이 있는 것이 아니고, 사용자로부터 전달된 데이터는 무결하게 저장 되록 (원하면 수정, 삭제 가능하게) OLTP를, 그 저장된 데이터로부터 여러 '기능'을 제공할 수 있는 OLAP를 사용할 수 있으면 좋은 서비스를 만들 수 있을 것 같다.

0개의 댓글