dev-writeup-2024 / march

개발 1일 1글 스터디
2 stars 0 forks source link

[03-07] OLTP vs OLAP #16

Open mingnuj opened 3 months ago

mingnuj commented 3 months ago

저는 OLAP DB를 만드는 일을 하고 있습니다. OLTP도 OLAP도 생소하다면 이참에 알아봅시다.

OLTP

Database Transaction

OLTP 시스템의 특징

OLAP

Online Analytical Processing는 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사 결정에 활용하는 방식이다. OLTP와 같은거 아닌가...? 싶지만 OLTP는 여러 사람이 실시간으로 데이터를 수정하거나 쿼리 하는 게 목적이지만, OLAP는 분석을 목적으로 데이터베이스 내의 트랜잭션을 질의하는 작업이다.

image

OLTP는 데이터 테이블을 가져오고, OLAP는 데이터를 처리하여 분석된 정보를 가져온다고 보면 된다.

OLAP 데이터베이스 구조

2개 이상의 차원 또는 범주로 정보를 표현하여 다차원 데이터를 저장한다. 2차원 데이터에는 열과 행이 포함되지만, 다차원 데이터에는 여러 특성이 있다.

이를 IBM에서는 OLAP 큐브라고 정의하고 있는데, 사실 난 처음 듣는다. 내가 알고 있는 개념으로는 팩트 테이블과 dimensional 테이블을 얘기 하는 것 같다. 큐브라는 용어는 처음 본다... 아무튼, 기본적인 테이블에서 추가 레이어를 사용해서 테이블을 확장한다.

image

예를 들어, 관계형 데이터베이스 테이블은 개별 레코드를 2차원 (행X열) 형식으로 저장하는 구조이다. 각 데이터는 지역 및 총 매출과 같은 두 차원의 교차점에 있다. 여기에 추가 레이어로 국가, 주/도, 시/군/구 및 특정 매장 등을 추가할 수 있다. 이론상 하나의 큐브는 무한한 수의 레이어를 포함할 수 있으며, 레이어 내에 더 작은 큐브가 존재할 수 있다.

이러한 큐브에 할 수 있는 작업은 아래와 같다.

OLAP 동작 방법

  1. OLAP 서버가 관계형 데이터베이스 및 데이터 웨어하우스를 포함한 여러 데이터 소스에서 데이터를 수집한다.
  2. 그런 다음 추출, 전환, 적재(ETL) 도구가 지정된 차원 수에 따라 OLAP 큐브에서 데이터를 정리, 집계, 사전 계산 및 저장한다.
  3. 비즈니스 분석가는 OLAP 도구를 사용하여 OLAP 큐브의 다차원 데이터에서 보고서를 쿼리하고 생성한다.

OLAP은 MDX(Multidimensional Expressions)를 사용하여 OLAP 큐브를 쿼리한다. MDX는 데이터베이스 조작을 위한 일련의 지침을 제공하는 SQL과 같은 쿼리이다.

OLAP 유형

MOLAP

다차원 온라인 분석 처리(MOLAP)에는 데이터 웨어하우스의 다차원 데이터를 나타내는 데이터 큐브를 만드는 작업이 포함된다. MOLAP 시스템은 미리 계산된 데이터를 하이퍼큐브에 저장한다. 이러한 유형의 OLAP 기술은 빠른 분석을 제공하기 때문에 데이터 엔지니어는 MOLAP을 사용한다.

ROLAP

데이터 엔지니어는 데이터 큐브를 사용하는 대신 관계형 온라인 분석 처리(ROLAP)를 사용하여 관계형 데이터베이스에서 다차원 데이터 분석을 수행할 수 있다. 즉, 데이터 엔지니어는 SQL 쿼리를 사용하여 필요한 차원을 기반으로 특정 정보를 검색하고 검색한다. ROLAP은 광범위하고 상세한 데이터를 분석하는 데 적합하다. 그러나 ROLAP은 MOLAP에 비해 쿼리 성능이 느리다.

HOLAP

하이브리드 온라인 분석 처리(HOLAP)는 MOLAP과 ROLAP을 결합하여 두 아키텍처의 장점을 모두 제공한다. HOLAP을 사용하면 데이터 엔지니어가 데이터 큐브에서 분석 결과를 신속하게 검색하고 관계형 데이터베이스에서 자세한 정보를 추출할 수 있다.

HOLAP 툴은 데이터 큐브를 관계형 테이블로 "드릴스루"하여 빠른 데이터 처리 및 유연한 액세스를 위한 토대를 마련한다. 이 하이브리드 시스템은 우수한 확장성을 제공할 수 있지만, 관계형 데이터 소스에 액세스하는 속도는 느리다. 또한 복잡한 아키텍처로 인해 관계형 데이터베이스 및 다차원 데이터베이스의 모든 데이터를 저장하고 처리해야 하므로 더 자주 업데이트하고 유지관리해야 한다. 따라서 HOLAP는 비용이 더 많이 들 수 있다.

OLTP vs OLAP

OLTP OLAP
다수의 사용자에 의한 대량의 데이터베이스 트랜잭션을 실시간으로 실행할 수 있도록 지원 일반적으로 분석을 목적으로 데이터베이스 내 다수의 레코드(또는 모든 레코드)에 대한 질의 작업 포함
빠른 응답시간 필요 OLTP에 대비 엄청나게 느린 응답시간 필요
적은 양의 데이터를 자주 수정하고, 일반적으로 읽기 및 쓰기 작업 간 균형이 유지됨 데이터를 전혀 수정하지 않음. 일반적으로 읽기 집약적인 작업
인덱스화된 데이터를 사용해 응답 시간 개선 대량의 레코드에 손쉽게 액세스할 수 있도록 컬럼 형식으로 데이터 저장
데이터베이스에 대한 빈번한 또는 동시 백업 필요 훨씬 적은 빈도의 데이터베이스 백업 필요
상대적으로 적은 스토리지 공간 필요 대량의 기록 데이터를 저장하기 때문에 일반적으로 상당한 양의 스토리지 공간 필요
일반적으로 하나 또는 몇 개의 레코드를 포함하는 단순한 쿼리 실행 다수의 레코드를 포함하는 복잡한 쿼리 실행

마치며

OLAP 개발하면서도 생소한 단어가 많아서 놀랐습니다. 적다 보니까 다 아는 개념이긴 했는데, 상대적으로 AWS랑 ORACLE이 잘 적어 놨네요. 근데 표준을 사랑하는 사람이면 ORACLE은,.. 좀... 그래요...

참고

snaag commented 3 months ago

오 최근 DB 를 공부해서인지 흥미롭게 읽었습니다 (이해했다곤 하지 않았습니다 ^^;)