본문 바로가기
소프트웨어 공학

데이터베이스 트랜잭션(Database Transaction)의 개념과 4가지 특성

by iwuooh 2021. 12. 30.

데이터베이스 트랜잭션(Database Transaction)

데이터베이스 트랜잭션(Database Transaction)은 하나의 작업을 실행시키기 위해 여러 데이터베이스 연산들을 모아둔 집합이라 할 수 있다. 이는 데이터베이스에서 논리적인 작업의 단위가 된다. 데이터베이스 트랜잭션은 오류가 발생했을 때 데이터를 복구하는 역할도 수행한다. 데이터베이스는 수많은 사람이 동시에 사용하는 경우가 빈번하므로 항상 모순이 없도록 정확한 데이터를 유지하여 오류를 방지해야 하고 만일 데이터베이스에 오류가 발생하더라도 빠르게 복구해야 한다. 데이터베이스 관리 시스템은 데이터베이스가 항상 정확한 데이터 상태를 유지할 수 있게끔 도와주는데 그 중심적인 역할을 하는 것이 트랜잭션이다. 트랜잭션을 관리함으로써 데이터베이스의 장애 회복과 복구가 가능해지고 결과적으로 데이터베이스에 있는 데이터들이 일관성을 유지할 수 있는 것이다. 일반적으로 데이터베이스에서 행해지는 연산은 대부분 SQL문이 사용되므로 트랜잭션을 SQL 명령문들의 집합으로 볼 수도 있다.

데이터베이스 트랜잭션(Database Transaction)의 4가지 주요 특성

이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해서 첫 글자를 따서 ACID로 불리는 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장한다. 즉, ACID는 데이터베이스 트랜잭션이 안전하게 수행됨을 보장하기 위한 성질을 가리킨다.

 

원자성(Atomicity)은 트랜잭션과 관련된 작업들이 모두 정상적으로 수행되거나 아예 하나도 실행되지 않아야 한다는 All-or-Nothing 방식을 의미한다. 만약 트랜잭션을 수행하다가 오류가 발생해서 수행하던 작업을 완료하지 못했을 경우, 이전에 수행한 모든 연산의 처리를 취소하고 해당 트랜잭션의 수행 전 상태로 되돌려 놓음으로써 원자성을 보장해야 한다. 원자성을 보장하면 트랜잭션의 일부 연산만 처리하여 데이터베이스에 오류가 발생하는 일은 없게 된다. 예를 들어 자금을 이체할 때 송금하는 쪽에서 돈을 가져오는 작업과 수신하는 쪽에 돈을 넣는 작업이 둘 다 성공해야만 하므로 한쪽의 작업이 실패할 수도 있으면 안 된다. 이처럼 중간 단계까지만 실행이 이뤄지고 후에 실패하는 일이 없도록 보장하는 것이 원자성이다.

 

일관성(Consistency)은 트랜잭션이 성공적으로 실행되고 난 이후로 데이터베이스가 일관적으로 상태를 유지하는 것을 의미한다. 물론 트랜잭션이 수행되는 과정 중에는 데이터베이스가 일시적으로는 일관된 상태가 아닐 수 있다. 하지만 트랜잭션의 수행과 무관하게 수행 전이 일관된 상태였다면, 수행 후에도 일관된 상태를 유지해야 한다는 것이다. 만약 어떤 제약이 있는 데이터가 있으면 이를 위반하는 트랜잭션은 즉시 중단된다.

 

격리성(Isolation)은 고립성이라고도 하는데, 하나의 트랜잭션을 통해 SQL연산이 실행되는 도중에 다른 트랜잭션 연산 작업이 끼어들지 못하게 보장하는 것을 말한다. 일반적으로 데이터베이스 내에서 트랜잭션은 동시다발적으로 일어나지만 각 트랜잭션은 독립적으로 수행되어 서로 영향을 미치지 못하도록 보장하는 것이다. 이는 트랜잭션 외부에 있는 그 어떠한 연산도 연산 중간의 데이터를 확인할 수 없고 트랜잭션의 실행은 연속적이어야 함을 의미한다. 성능 관련 이유로 인해 가장 유연한 제약조건이다.

 

지속성(Durability)은 영속성이라고도 하며 트랜잭션이 성공적으로 수행되고 난 이후 시스템의 오류 등과 같은 어떠한 경우에도 데이터가 손실되지 않고 그 결과가 영원히 반영되어야 함을 의미한다. 즉, 시스템에 오류가 발생하여도 트랜잭션의 작업 결과는 제거되는 것이 아니라 데이터베이스에 그대로 남아있어야 한다는 것이다. 이를 보장하려면 시스템에 오류가 발생했을 경우에 데이터베이스를 원래 상태로 되돌리는 기능이 필요하다.

 

 

댓글