우리가 흔히 사용했던 OLTP(Online Transaction Processing) 데이터베이스는 트랜잭션 처리를 위해 설계됐기 때문에(클라이언트의 요청이 있을때 해당하는 로우에 해당하는 정보를 빠르게 주기 위함), 로우 지향 저장소였다
하지만 대용량의 데이터를 질의하고 분석하는 OLAP(Online Analytics Processing)인 데이터 웨어하우스에서는 로우 지향으로 저장하면 페타바이트 단위의 데이터를 효율적으로 저장하고 질의하기 어려워진다
실제로 우리가 사용하는 분석용 쿼리를 보면, 보통 한번에 5개 이하 컬럼에 접근한다(SELECT *은 필요하지 않다). 따라서 효율적으로 저장하고 질의하기 위해, 많은 OLAP 데이터베이스는 모든 값을 각 컬럼별로 저장하고, 질의에 해당하는 컬럼만을 읽고 분석하게 설계됐다. (*모든 OLAP 데이터베이스가 컬럼 지향인 것은 아니다)
둘의 차이를 예시를 통해 살펴보자
OLTP(Online Transaction Processing)
(가정) 온라인 쇼핑몰에서 거래를 처리한다고 해보자
사용자가 상품을 구매하면 시스템은 사용자의 주문 정보를 처리하고, 재고를 업데이트하며, 결제를 진행한다
이 과정에서 데이터베이스는 빠른 거래 처리를 위해 최적화되어 있으며, 사용자의 요청에 신속하게 응답할 수 있어야한다
OLAP(Online Analytical Processing)
(가정) 대형 유통회사가 있다고 해보자
수년간의 판매 데이터를 분석하여, 특정 시즌에 인기 있는 상품을 파악하고, 공급망을 최적화하려고 한다
이 과정에서 데이터베이스는 의사 결정에 쓰이는 데이터를 제공하기 때문에 속도보다 분석 결과의 정확성과 신뢰성을 중요시한다
정리하자면,
결국, OLTP 데이터베이스는 실시간 트랜잭션을 처리하는데 집중하기 때문에 데이터 중복을 최소화하고 데이터 무결성을 유지해야한다. 이때 적절한 인덱스 설계가 성능에 아주 큰 영향을 미친다
하지만 대규모 분석을 위한 시스템인 OLAP 데이터베이스는 인덱싱 개념이 덜 중요하다. 주로 다차원 배열 구조로 데이터를 저장하고, SELECT와 같이 필요한 컬럼만을 추출하기 때문에 인덱싱 없이도 빠르게 읽기가 가능하다. OLAP에서는 주로 집계, 파티셔닝 등의 기법으로 데이터를 최적화한다
이 차이를 알고, 각각의 데이터베이스를 적절하게 사용하는 것이 중요한 것 같다
[참고] https://f-lab.kr/insight/understanding-oltp-and-olap
데이터 엔지니어링의 기초: OLTP와 OLAP의 이해
OLTP와 OLAP은 데이터 처리와 분석에 있어 중요한 개념으로, 각각 다른 목적과 최적화 기법을 가지고 있습니다. 이 글에서는 OLTP와 OLAP의 차이점과 각각의 시스템이 어떻게 데이터 엔지니어링 분야
f-lab.kr
'computer science > database' 카테고리의 다른 글
[데이터베이스] 데이터베이스 개요 (0) | 2024.06.02 |
---|---|
[데이터베이스] 데이터와 정보 (0) | 2024.05.20 |