저는 OLAP DB를 만드는 일을 하고 있습니다. OLTP도 OLAP도 생소하다면 이참에 알아봅시다.
OLTP
Online Transaction Processing은 인터넷을 통해 많은 사람들이 많은 Database Transaction을 실시간으로 실행할 수 있도록 지원한다. 일반적으로 알고 있는 데이터 베이스가 OLTP를 의미한다.
과거에는 화폐, 제품, 정보, 서비스 요청 등 일종의 교환이 이루어지는 실제 상호작용에만 한정적으로 적용 되었다.
그러나, 지난 몇 년간 트랜잭션의 정의가 확대되면서 비즈니스 거래를 포함하게 되었고, 웹페이지에서 pdf 다운로드하기, 특정 비디오 시청하기등 모든 종류의 행동과 비즈니스가 고객에게 더 나은 서비스를 제공하기 위해 기록하는 소셜 채널 자동 유지관리 트리거 또는 댓글 등 모든 종류의 상호작용을 포함한다.
Database Transaction
데이터베이스에서 데이터를 변경, 삽입, 삭제 또는 쿼리 하는 것을 말한다.
일반적으로 웹, 모바일 또는 기업 애플리케이션은 고객, 공급업체 또는 파트너와의 모든 상호 작용 또는 거래를 추적하고, 이를 OLTP 데이터베이스에 업데이트한다.
OLTP 시스템은 온라인 뱅킹 및 ATM 트랜잭션, 전자상거래 및 오프라인 구매 등의 금융거래 중 다수를 지원하며, 각각의 경우에 금융 트랜잭션 데이터로 남아있다.
데이터베이스에 저장된 이 트랜잭션 데이터는 기업에 핵심적이며, 보고서 작성용으로 사용되고, 데이터 중심의 의사결정에 활용하기 위해 분석된다.
모든 데이터베이스 트랜잭션을 정의하는 공통된 특징은 원자성(분할 불가능성)이다.
트랜잭션 전체로서 성공하거나 실패(또는 취소) 한다.
트랜잭션은 보류 또는 중간 상태에 머무를 수 없다.
OLTP 시스템의 특징
ACID 준수
전체 트랜잭션이 올바르게 기록되었는지 확인이 필요하다.
모든 당사자가 트랜잭션을 확인하거나, 제품/서비스가 전달되었거나, 데이터베이스 내 특정 테이블에서 특정 수량의 업데이트가 이루어졌을 때 완료
포함된 모든 단계가 실행 및 기록된 경우에만 트랜잭션이 올바르게 기록되며, 한 단계에라도 오류가 발생한다면 전체 트랜잭션은 중단되어야 하고, 모든 단계가 시스템에서 삭제되어야 한다.
원자성 (Atomicity): 트랜잭션 내 모든 단계가 하나의 그룹으로서 성공적으로 완료되도록 보장
일관성 (Consistency): 데이터베이스의 내부 일관성을 유지
고립성 (Isolation): 다른 트랜잭션 없이 단독으로 실행되는 것처럼 행동
영속성 (Durability): 트랜잭션이 실패한다 해도 트랜잭션의 결과가 손실되지 않음
확장성: 사용자 수와 상관 없이 트랜잭션 볼륨을 실시간으로 관리
일반적으로 데이터의 삽입, 업데이트, 삭제 그리고 단순한 데이터 쿼리를 수행한다.
동시성: 데이터 무결성을 유지하면서 동일한 데이터에 대한 여러 사용자의 액세스를 지원
OLTP 시스템은 두 명의 사용자가 동시에 동일한 데이터를 변경할 수 없도록 한다.
모든 트랜잭션이 적절한 순서에 따라 수행되도록 하는 동시 실행 알고리즘을 사용한다.
이를 통해 사람들이 온라인 예약 시스템에서 동일한 객실을 이중으로 예약하지 않도록 방지하고 공동 은행 계좌의 예금주를 의도하지 않은 초과 인출로부터 보호할 수 있다.
높은 처리량 및 짧은 응답 시간: 응답 시간을 밀리초 단위로 측정하여 매우 빠른 처리를 강조
OLTP 시스템의 효과성은 초당 수행할 수 있는 최대 트랜잭션 횟수로 측정한다.
인덱싱된 데이터 세트 제공: 빠른 검색, 가져오기 및 쿼리를 위해 사용한다.
신뢰성: OLTP 시스템은 일반적으로 매우 선택적으로 소량의 데이터만을 읽고 조작
언제 사용자 및 애플리케이션이 해당 데이터에 액세스하더라도 데이터베이스 내의 데이터를 신뢰할 수 있어야 한다.
가용성: 연중무휴 24시간 이용 가능
OLTP 시스템은 대량의 동시 실행 트랜잭션을 처리하므로, 데이터 손실 또는 다운타임이 발생할 경우 비용이 많이 드는 중대한 영향을 가져올 수 있다.
어느 순간 에든 완벽한 데이터 백업이 제공되어야 하며, 빈번한 백업과 끊임없는 증분 백업이 필요하다.
보안성: 이러한 시스템은 매우 민감한 고객 트랜잭션 데이터를 저장하기 때문에 데이터 보안성이 핵심이다.
복구성: OLTP 시스템은 어떤 종류의 하드웨어 또는 소프트웨어 오류가 발생하더라도 시스템을 복구할 수 있어야 한다.
OLAP
Online Analytical Processing는 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사 결정에 활용하는 방식이다. OLTP와 같은거 아닌가...? 싶지만 OLTP는 여러 사람이 실시간으로 데이터를 수정하거나 쿼리 하는 게 목적이지만, OLAP는 분석을 목적으로 데이터베이스 내의 트랜잭션을 질의하는 작업이다.
OLTP는 데이터 테이블을 가져오고, OLAP는 데이터를 처리하여 분석된 정보를 가져온다고 보면 된다.
OLAP 데이터베이스 구조
2개 이상의 차원 또는 범주로 정보를 표현하여 다차원 데이터를 저장한다. 2차원 데이터에는 열과 행이 포함되지만, 다차원 데이터에는 여러 특성이 있다.
이를 IBM에서는 OLAP 큐브라고 정의하고 있는데, 사실 난 처음 듣는다. 내가 알고 있는 개념으로는 팩트 테이블과 dimensional 테이블을 얘기 하는 것 같다. 큐브라는 용어는 처음 본다... 아무튼, 기본적인 테이블에서 추가 레이어를 사용해서 테이블을 확장한다.
예를 들어, 관계형 데이터베이스 테이블은 개별 레코드를 2차원 (행X열) 형식으로 저장하는 구조이다. 각 데이터는 지역 및 총 매출과 같은 두 차원의 교차점에 있다. 여기에 추가 레이어로 국가, 주/도, 시/군/구 및 특정 매장 등을 추가할 수 있다. 이론상 하나의 큐브는 무한한 수의 레이어를 포함할 수 있으며, 레이어 내에 더 작은 큐브가 존재할 수 있다.
이러한 큐브에 할 수 있는 작업은 아래와 같다.
Drill-Down: 개념 계층 구조에서 아래로 이동하거나, 큐브에 새 차원을 추가하는 두 가지 방법 중 하나로 데이터를 세분화 하는 방법이다.
Roll-Up: 차원수를 줄여서 데이터를 집계한다.
Slice: 단일 차원을 선택하여 하위 큐브를 만든다.
Dice: 큐브 내에서 여러 차원을 선택하여 하위 큐브를 분리한다.
Pivot: 현재 큐브 뷰를 회전하여 데이터의 새로운 표현을 표시한다.
OLAP 동작 방법
OLAP 서버가 관계형 데이터베이스 및 데이터 웨어하우스를 포함한 여러 데이터 소스에서 데이터를 수집한다.
그런 다음 추출, 전환, 적재(ETL) 도구가 지정된 차원 수에 따라 OLAP 큐브에서 데이터를 정리, 집계, 사전 계산 및 저장한다.
비즈니스 분석가는 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은,.. 좀... 그래요...
저는 OLAP DB를 만드는 일을 하고 있습니다. OLTP도 OLAP도 생소하다면 이참에 알아봅시다.
OLTP
Online Transaction Processing
은 인터넷을 통해 많은 사람들이 많은Database Transaction
을 실시간으로 실행할 수 있도록 지원한다. 일반적으로 알고 있는 데이터 베이스가 OLTP를 의미한다.Database Transaction
변경, 삽입, 삭제 또는 쿼리
하는 것을 말한다.상호 작용 또는 거래를 추적
하고, 이를OLTP 데이터베이스에 업데이트
한다.트랜잭션 데이터
로 남아있다.의사결정에 활용하기 위해 분석
된다.원자성(분할 불가능성)
이다.OLTP 시스템의 특징
OLAP
Online Analytical Processing
는 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사 결정에 활용하는 방식이다. OLTP와 같은거 아닌가...? 싶지만 OLTP는 여러 사람이 실시간으로 데이터를 수정하거나 쿼리 하는 게 목적이지만, OLAP는 분석을 목적으로 데이터베이스 내의 트랜잭션을 질의하는 작업이다.OLTP는 데이터 테이블을 가져오고, OLAP는 데이터를 처리하여 분석된 정보를 가져온다고 보면 된다.
OLAP 데이터베이스 구조
2개 이상의 차원 또는 범주로 정보를 표현하여 다차원 데이터를 저장한다. 2차원 데이터에는 열과 행이 포함되지만, 다차원 데이터에는 여러 특성이 있다.
이를 IBM에서는
OLAP 큐브
라고 정의하고 있는데, 사실 난 처음 듣는다. 내가 알고 있는 개념으로는 팩트 테이블과 dimensional 테이블을 얘기 하는 것 같다. 큐브라는 용어는 처음 본다... 아무튼, 기본적인 테이블에서 추가 레이어를 사용해서 테이블을 확장한다.예를 들어, 관계형 데이터베이스 테이블은 개별 레코드를 2차원 (행X열) 형식으로 저장하는 구조이다. 각 데이터는 지역 및 총 매출과 같은 두 차원의 교차점에 있다. 여기에 추가 레이어로 국가, 주/도, 시/군/구 및 특정 매장 등을 추가할 수 있다. 이론상 하나의 큐브는 무한한 수의 레이어를 포함할 수 있으며, 레이어 내에 더 작은 큐브가 존재할 수 있다.
이러한 큐브에 할 수 있는 작업은 아래와 같다.
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
마치며
OLAP 개발하면서도 생소한 단어가 많아서 놀랐습니다. 적다 보니까 다 아는 개념이긴 했는데, 상대적으로 AWS랑 ORACLE이 잘 적어 놨네요. 근데 표준을 사랑하는 사람이면 ORACLE은,.. 좀... 그래요...
참고