본문/내용
트랜잭션(transaction)의 특징(원자성,일관성,고립성,지속성)에 대한 각각의 정의를 구체적인 예와 함께 설명하고 그에 대한 특징과 기능을 설명하시오
1.트랜잭션의 정의 및 특징
①트랜잭션의 정의
트랜잭션은 데이터베이스 처리의 논리적 단위이다. 트랜잭션 처리 시스템은 대형 데이터베이스에서, 동시에 여러 사용자의 데이터베이스 트랜잭션을 실행하는 시스템이다. 트랜잭션 처리시스템의 예로, 항공예약 시스템, 은행 시스템, 신용 카드 처리 시스템, 증권 시장 시스템, 백화점 체크아웃 시스템 등이 있다. 이런 시스템은 동시에 사용하는 수많은 사용자를 위하여 높은 가용성(high availability)과 신속한 응답을 필요로 한다.
위에서 언급했듯이 시스템의 처리를 위한 기본요소가 되는 트랜잭션은 1개 이상의 데이터베이스 접근 연산을 포함하는, 데이터베이스 처리의 논리적 단위이다. 데이터베이스 접근 연산(data base access operation)에는 삽입, 삭제, 수정, 검색 연산이 있고, SQL과 같은 질의어를 통해서 대화적으로 제어할 수 있다.
데이터베이스 처리의 논리적 단위란 시스템을 이용하여 업무를 처리하는 한 사람이 한번에 이벤트에 의해 응용시스템이 반응하고 결과를 줄 수 있는 단위를 말한다. 즉, 트랜잭션은 기술적으로 처리하는 일정한 단위의 의미가 아니라 업무적으로 의미가 있는 최소의 작업 처리 단위라는 것이다.
트랜잭션 시작 트랜잭션 종료
↑ ↑ ↑ ↑
읽기 수정 삭제 . .
※업무처리의 단위(LOGICAL UNIT IF WORK)
※ORACLE에서 사용하는 트랜잭션 제어 SQL 문장의 예
…
②트랜잭션의 ACID(Atomicity, Consistency, Isolation, Durability) 특징
처리되어야하는 기준이다. 업무적으로 처리하는 최소의 단위가 트랜잭션의 원자성의 기준이 된다.
이 특징은 프로세스와 데이터베이스구조에 의해 보호받을 수 있다. 즉, 프로세스에서 업무적인 기준에 의해 처리되어야 하는 기준으로, 그 기능을 함께 처리할 수 있도록 프로세스 설계를 해야 하고 데이터 모델링을 수행할 경우에도 업무적으로 연관이 되어 있는 각각의 엔티티타입이 하나의 트랜잭션에 의해 처리해야 하는 기준으로 설계를 해야 한다. 그렇게 해야만 트랜잭션이 논리적인 작업의 처리 단위를 만족시킬 수 있게 되는 것이다.
트랜잭션의 처리에 대한 의미는 어느 한 트랜잭션 전체가 다 실행이 되거나 실행이 하나도 안 되는 것이지, 일부만의 실행은 있을 수 없다는 의미이다. 따라서 트랜잭션의 실행결과는 전부(all)이거나, 무(Nothing)만이 유효하고 일부는 무효라는 뜻이다.
구체적인 예로 확인해 보자.
계좌 A에 100원을 계좌 B에 이체하는 트랜잭션 T가 다음과 같이 정의되었다고 하자.
T: Begin_Trans
Read(A)
A = A - 100
Write(A)
Read(B)
B = B + 100
Write(B)
End_Trans
이 트랜잭션이 갖는 일관성 제약은, 이 트랜잭션이 실행되더라도 계좌 A와 B의 합계는 변하지 않아야 된다는 것이다. 가령 이 트랜잭션 T가 실행될 당시 계좌 A와 B의 잔액이 각각 1000과 2000이라고 가정하자.
만일 트랜잭션 T를 실행하는 도중에 장애가 발생하여 데이터 아이템 A만 디스크에 출력되고 B는 디스크에 출력되지 못하였다면, 디스크의 데이터베이스에 있는 계좌 A와 B의 값들은 각각 900과 2000이 될 것이다. 이렇게 되면 이 장애의 결과로 100을 상실하게 되고 계좌 A와 B의 합계는 T의 실행 전과 달라져 버리게 되어 일관성 제약을 위반하게 된다. 이러한 상태를 모순 상태(inconsistent state)라고 하는데 이러한 모순은 데이터베이스에