본문 바로가기

Database/Data

트랜잭션(Transaction)

트랜잭션(Transaction)

  • 트랜잭션의 정의
    • 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
    • 작업수행의 논리적 단위
    • 참고
  • 데이터베이스의 상태를 변화시킨다는 것의 의미?
    • SQL(질의어)을 이용하여 데이터베이스에 접근하는 것 ex. select, insert, delete, update
    • 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태변환 과정의 작업단위이다.
  • 작업의 단위는 질의어 한문장이 아니다
    • 예를 들어 게시판
    • 사용자가 등록 버튼을 누르면 Insert문 후에 select하여 최신 정보로 조회하게 되는데 여기서 작업의 단위는 insert문과 select문 둘 다 합친것이다. 이러한 작업단위를 하나의 트랜잭션이라고 한다.
  • 트랜잭션의 특징(ACID)
    • 원자성(Atomicity)
      • 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다.
      • 트랜잭션 단위로 처리되지 않으면 처리 시스템을 이해하기 힘들 뿐만 아니라 원인을 찾기가 매우 힘들다
    • 일관성(Consistency)
      • 진행되는 동안 데이터베이스가 변경 되더라도 업데이트된 데이터베이스로 트랜잭션이 진행되는 것이 아니라, 처음에 트랜잭션을 진행하기위해 참조한 데이터베이스로 진행된다.
    • 독립성(Isolation)
      • 둘 이상의 트랜잭션이 동시에 실행되고 있을 경우 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다.
    • 지속성(Durability)
      • 트랜잭션이 성공적으로 완료됐을 경우, 결과는 영구적으로 반영되어야 한다. > 커밋하면 현재 상태는 영원히 보장된다.
  • 트랜잭션 연산
    • Commit
      • 하나의 트랜잭션이 성공적으로 끝났고, 데이터 베이스가 일관성있는 상태
      • 하나의 트랜잭션이 끝났다는 것을 알려주기 위해 사용하는 연산
    • Rollback
      • 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우
      • 트랜잭션을 처음부터 다시 시작하거나 트랜잭션이 부분적으로만 연산된 결과를 취소시킴
      • ex. 송금 과정
  • 왜 트랜잭션을 사용하는지?
    • DB 서버에 여러 개의 클라이언트가 동시에 액세스하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지하기 위해 사용
    • 한 번에 하나의 프로세스만 처리하는 것은 효율이 너무 떨어진다. 병렬 처리할 수 밖에 없는 현실적인 상황으로 인해 부정합을 방지하고자 트랜잭션 사용
  • 전자정부 프레임워크에서 어떻게 트랜잭션을 설정하는지
    • 트랜잭션 서비스는 Spring 트랜잭션 서비스를 채택하여 가이드한다. DataSource Transaction Service, JTA Transaction Service, JPA Transaction Service에 대해서 설명하고 트랜잭션 활용에 대해서는 설정 및 어노테이션을 통해 활용한다.
    • 참고
       
  • 트랜잭션과 코딩
    • 트랜잭션은 현대의 웹 보안에 있어서 매우 중요한 역할을 차지한다. 
    • DB와 JAVA 언어가 데이터를 주고 받는 과정에 원자성을 부여하는 수단이다.
    • 2개 이상의 쿼리를 하나의 커넥션으로 묶어 DB에 전송하는 과정에서 에러가 발생할 경우 자동으로 모든 과정을 원래 상태로 돌려 놓는다.
    • 참고
반응형