Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

Online Transaction Processing

OLTP(Online Transaction Processing)는 트랜잭션 지향의 애플리케이션을 손쉽게 관리할 수 있도록 도와주는 정보시스템의 한 계열로 트랜잭션을 처리하기 위해서 존재한다.

트랜잭션(Transaction)은 두 개의 다른 의미를 가진다.
  1. 컴퓨터 또는 데이터베이스 영역에서 상태의 원자적 변화
  2. 비지니스 혹은 금융영역에서의 경제교환
OLTP는 첫번째 유형의 트랜잭션을 사용해서 두번째 영역의 트랜잭션을 기록 할 수 있다.

OLTP는 유저의 요청에 시스템이 즉시 응답하는데도 사용한다. 은행 업무를 자동화하기 위한 ATM(Automation teller machine)에서의 거래처리 응용 프로그램이 그 예다. OLTP는 처리량이 많으며, 입력과 업데이트가 많은 작업에 적합하다. 이러한 프로그램은 수백명 이상의 사용자가 동시에 작업을 요청 하는 것을 가정하고 만들어진다. OLTP 응용 프로그램의 주요 목표는 가용성, 속도 동시성 및 복구능력이다. ATM 애플리케이션이 가져야 하는 목표를 생각해보면 쉽게 이해 할 수 있을 것이다. ATM은
  1. 항상 사용 할 수 있어야 한다.
  2. 빠르게 작동해야 한다.
  3. 동시에 여러 사용자가 사용 할 수 있어야 한다.
  4. 빠르게 복구 되야 한다.
OLTP는 OLAP와 비교된다. OLAP는 일반적으로 트랜잭션을 처리하기 보다는 BI(Gusiness intelligence)나 보고서 작성을 목적으로 훨씬 복잡한 쿼리를 실행하는 것을 특징으로 한다. OLTP는 모든쿼리(읽기/쓰기/업데이트/삭제)를 사용하지만, OLAP는 읽기전용으로 최적화되어 있다. OLTP는 또한 배치작업이나 그리드 컴퓨팅과는 다른 방식으로 작동한다.

OLTP는 대규모의 이기종 시스템에서 강력한 일관성을 제공하기 위해서 분산 이벤트 로그를 기반으로 작동하는 OLEP와도 대조된다. OLTP는 짧은시간에 원자성 트랜잭션을 처리하는 반면 OLEP는 유연한 패턴과 높은 확장성을 제공하는 대신에 처리 대기시간이 늘어난다.

OLTP 개요

OLTP는 기업에서 데이터에 접근하기 위해서 사용하는 데이터 처리(processing) 시스템이다. 주문처리 시스템, 소매 판매, 금융 거래 시스템들이 OLTP의 예다. OLTP는 네트워크로 연결된 하나 이상의 회사들에서 발생하는 트랜잭션을 지원하는 형태로 나아가고 있다. 이러한 이유로 현대적인 OLTP 소프트웨어는 네트워크 상에 존재하는 다른 컴퓨터 플랫폼 위에서 서버&클라이언트 방식으로 작동하도록 만들어지고 있다.

대규모 애플리케이션에서 효율적인 OLTP는 CICS(Customer information Control System)와 같은 복잡한 트랜잭션 관리 소프트웨어와 데이터베이스 최적화 전략등을 이용해서 동시에 발생하는 대량의 트랜잭션을 쉽게 처리 하도록 도와준다.

훨씬 더 까다로운 분산 데이터베이스 시스템의 경우 OLTP 중계 프로그램은 트랜잭션을 네트워크로 연결된 여러 컴퓨터에 분산시킬 수 있다. OLTP는 종종 SOA(Service oriented architecture)와 웹 서비스에 통합된다.

OLTP는 입력정보의 수비과 데이터 처리 존재하는 데이터의 업데이트 기능을 포함한다. 현재 대부분의 조직들은 OLTP를 지원하는 데이터베이스 관리 시스템을 사용한다. OLTP는 클라이언트 서버 시스템에서 수행된다.

OLTP는 동시성원자성에 대한 문제다. 동시성 제어는 동일한 데이터에 두 명 이상의 사용자가 동시에 접근 할 경우, 데이터를 변경 할 수 없거나 다른 한명이 데이터 조작을 완료 할 때까지 기다려야 한다는 것을 보증한다. 원자성 제어는 트랜잭션의 모든 단계가 성공적으로 완료되도록 보증한다. 예를 들어서 트랜잭션을 구성하는 단계중 하나가 실패하면, 다른 모든 단계도 실패해야 한다.

시스템 디자인

OLTP로 시스템을 구축하려는 설계자는 많은 수의 동시 사용자가 시스템의 성능을 떨어트리지 않도록 장치를 마련해야 한다. OLTP 시스템의 성능을 향상시키기 위해서는 디자이너는 인덱스와 클러스터를 과도하게 사용하지 않아야 한다.

OLTP 시스템의 성능에 중요한 요소들을 정리했다.
  • 롤백 세그먼트 : 롤백 세그먼트는 트랜잭션이 롤백되는 경우를 대비해서 트랜잭션의 조치내용을 기록한다. 롤백 세그먼트는 읽기 일관성, 롤백 트랜잭션과 데이터베이스 복구를 지원한다.
  • 클러스터 : 클러스터는 특정 컬럼의 값이 동일한 열들을 동일한 위치(물리적으로 같은 위치)에 있는 테이블에 저장하는 것이다. 하나 이상의 테이블들을 클러스터링 할 수 있는데 join 작업에서 성능이 향상된다.
  • 개별(Discrete) 트랜잭션 : 개별 트랜잭션은 트랜잭션이 커밋 될 때까지의 데이터에 대한 변경을 연기한다. 즉 커밋 될 때 모아서 데이터를 변경한다. 이는 짧은 비 분산 트랜잭션의 성능을 향상시킬 수 있다.
  • Block size : 데이터 블록 크기를 조절해서 불필요한 I/O를 줄일 수 있다. 최대 한계 내에서 운영체제 블록 크기의 배수여야 한다.
  • Buffer cache size : 데이터베이스 버퍼 캐시를 이용해서 리소스 낭비를 줄일 수 있다.
  • 테이블과 롤백 세그먼트 공간의 동적 할당
  • 파티션 : 파티션은 가용성과 보안을 유지하면서 정기적인 트랜잭션이 있는 사이트의 성능을 높인다.
  • 데이터베이스 튜닝 : 데이터베이스 튜닝을 통해서 OLTP 시스템의 성능을 최대한 끌어낼 수 있다.