CS

OLAP / OLTP

개발 일기92 2024. 6. 12. 14:49

OLTP와 OLAP는 데이터베이스 시스템의 두 가지 주요 유형으로, 각각 다른 목적과 최적화 기법을 가지고 있다.

 

OLTP (실시간성)

  • 주로 거래 지향적인 작업에 최적화되어 있음.
  • 실시간으로 사용자의 요청을 처리. -> ACID 속성을 유지하는 것이 중요
  • 데이터의 무결성과 일관성을 유지하는 데 중점을 둔다.
  • 주로 정규화된 스키마를 사용하여 데이터 중복 최소화, 빠른 거래 처리가 목적
  • 높은 처리량과 짧은 응답 시간을 요구
  • ex) 쇼핑몰 주문

OLAP (배치성)

  • 시스템은 분석과 질의 응답에 최적화되어 있음. 
  • 대량의 데이터를 분석하고 복잡한 질의에 대한 응답 시간을 최적화. 
  • 비정규화된 스키마 사용도 허용. -> 데이터 중복을 허용함으로써 질의 처리 속도를 향상
  • 대용량의 데이터를 효율적으로 스캔하고, 집계하며, 사용자에게 분석 결과를 제공하는 데 최적화
  • 데이터의 일관된 스냅샷을 분석하는 데 중점
  • ex) 쇼핑몰 주문에 대한 고객 데이터 분석
  • ex) AWS redshift

ACID?

  • 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다. 원자성은 이와 같이 중간 단계까지 실행되고 실패하는 일이 없도록 하는 것이다.

 

  • 정합성(Consistency)은 트랜잭션 처리 전과 처리 후 데이터 모순이 없는 상태를 유지하는 것을 의미한다. 무결성 제약이 모든 계좌는 잔고가 있어야 한다면 이를 위반하는 트랜잭션은 중단된다.

 

  • 독립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다. 이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다. 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다. 공식적으로 고립성은 트랜잭션 실행내역은 연속적이어야 함을 의미한다. 성능관련 이유로 인해 이 특성은 가장 유연성 있는 제약 조건이다. 자세한 내용은 관련 문서를 참조해야 한다.

 

  • 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다. 시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미한다. 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있다. 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있다.

스냅샷?

  • SQL Server 데이터베이스( 원본 데이터베이스)의 읽기 전용 정적 뷰.
  • 스냅샷 생성 시점의 원본 데이터베이스와 트랜잭션적으로 일치한다.
  • 항상 원본 데이터베이스와 동일한 서버 인스턴스에 상주한다.
  • 스냅샷을 만들 때와 동일한 상태의 데이터 읽기 전용 뷰를 제공하는 반면, 스냅샷 파일의 크기는 원본 데이터베이스가 변경됨에 따라 증가한다.

 

'CS' 카테고리의 다른 글

R 프로그래밍 기본문법  (0) 2024.12.29
재귀 (Recursion)  (0) 2024.12.22
동기 / 비동기  (0) 2024.06.14