deblog

[DB] 트랜잭션(Transaction)이란? 본문

IT/DB

[DB] 트랜잭션(Transaction)이란?

스콘_ 2021. 12. 18. 15:05
반응형

트랜잭션이란 쪼갤 수 없는 업무 처리의 최소 단위를 말합니다.

거래내역이라고도 합니다.  1초당 처리할 수 있는 트랜잭션의 개수를 TPS라고 합니다.

 

트랜잭션은 신뢰할 수 있는 엔터프라이즈 애플리케이션을 구축하는 데 가장 중요한 부분 중 하나입니다. 가장 일반적인 트랜잭션 타입은 데이터베이스 작업입니다.

 

일반적인 데이터 베이스 수정 작업을 살펴보면 먼저 데이터베이스 트랜잭션을 시작하고 데이터를 수정한 후 데이터베이스 수정 성공 여부에 따라 트랜잭션을 커밋하거나 롤백합니다. 하지만 트랜잭션이 애플리케이션의 요구사항과 애플리케이션이 접근해야 하는 백엔드 리소스(예를 들어 RDBMS, 메시지 기반 미들웨어, ERP 시스템 등)에 따라 트랜잭션 관리가 훨씬 더 복잡해지는 경우도 많습니다.

 

트랜잭션 타입

1. 로컬 트랜잭션

  • 관리하기 쉽고, 애플리케이션의 모든 처리가 하나의 트랜잭션의 자원만 사용해 이루어진다면 로컬 트랜잭션으로 충분
  • 많은 트랜잭션이 되면 관리 코드를 작성해야 하며, 향후에 다중 트랜잭션 리소스에 걸치도록 확장해야 한다면 로컬 트랜잭션 관리 코드를 제거하고 글로벌 트랜잭션을 사용하도록 다시 개발 해야함.

2. 글로벌 트랜잭션

  • 보통 사용하는 방법, 자바에서는 JTA로 글로벌 트랜잭션 구현

 

  • JTA 호환 트랜잭션 매니저로 각 분산 자원에 설치된 리소스 매니저를 이용해 다중 트랜잭션 리소스에 접근.
  • 각 리소스 매니저와 통신은 XA 프로토콜(분산 트랜잭션을 정의하는 개방형 표준)을 사용합니다.
  1. 백엔드 리소스
  2. 리소스 매니저
    1. 백엔드 리소스 공급 업체가 제공하며 백엔드 리소스를 접근하는 데 사용됩니다
  3.  JTA (Java Transaction API) 트랜잭션 매니저
    1. 트랜잭션에 참여하는 모든 리소스 매니저의 트랜잭션 상태를 관리, 조정, 동기화를 담당합니다.
    2. 분산 트랜잭션 처리에 널리 사용되는 공개 표준인 XA 프로토콜이 사용됩니다.
  4.  애플리케이션
    1. 애플리케이션이 실행되는 기본 컨테이너 또는 애플리케이션이 실행되는 스프링 프레임워크가 트랜잭션을 관리합니다.
    2. JEE에서 정의한 다양한 표준으로 기본 백엔드 리소스에 접근합니다.

 

트랜잭션 프로퍼티

ACID 프로퍼티 (원자성(atomicity), 일관성(consistency), 격리(isolation), 내구성(durability))를 갖고 있으며, 트랜잭션 리소스는 이러한 관점으로 트랜잭션을 관리해야합니다.

사용자는 프로퍼티를 제어할 수 없습니다. 하지만 사용자는 트랜잭션 전파(propagation)와 시간 초과(timeout)를 제어할 수 있을 뿐 아니라, 트랜잭션을 읽기 전용(read-only)으로 구성하고 격리수준을 지정할 수도 있습니다.

 

-> 스프링 : TransactionDefinition 인터페이스

 

트랜잭션 관리 시 고려사항

선언적 방식을 권장하며 가능한 코드 내에서 트랜잭션 관리 로직을 구현하지 말아야 합니다.

애플리케이션에서 트랜잭션 제어 로직을 코딩할 생긴다면 거의 대부분은 설계를 잘못한 것이므로 관리가 가능하게 로직을 리펙토링하고 트랜잭션 요구사항을 선언적으로 정의해야 합니다.

 

 

[출처:전문가를 위한 스프링 5]

'IT > DB' 카테고리의 다른 글

프로시저(PROCEDURE)란?  (0) 2021.08.24
Comments