데이터베이스 트랜잭션

데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다.

이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장한다. 이 성질을 첫글자를 따 ACID라 부른다. 그러나, 실제로는 성능향상을 위해 이런 특성들이 종종 완화되곤 한다.

어떤 시스템들에서는 트랜잭션들은 논리적 작업 단위(LUW, Logical Units of Work)로 불린다.

트랜잭션의 목적

편집

데이터베이스 기능 중, 트랜잭션을 조작하는 기능은 사용자가 데이터베이스 완전성(integrity) 유지를 확신하게 한다.

단일 트랜잭션은 데이터베이스 내에 읽거나 쓰는 여러 개 쿼리를 요구한다 이때 중요한 것은 데이터베이스가 수행된 일부 쿼리가 남지 않는 것이다. 예를 들면, 송금을 할 때 한 계좌에서 인출되면 다른 계좌에서 입금이 확인되는 것이 중요하다. 또한 트랜잭션은 서로 간섭하지 않아야 한다. 트랜잭션의 특성에 대해 더 많은 정보를 보려면, ACID를 참조.

간단한 트랜잭션은 아래 양식의 SQL 언어로 데이터베이스 내에서 실행된다.

  • Begin the transaction
  • Execute several queries (DB내 갱신이 아직 적용되지 않는다)
  • Commit the transaction (트랜잭션이 성공적이며, 갱신이 실제 적용됨)

만약 쿼리 하나가 실패하면, 데이터베이스 시스템은 전체 트랜잭션 또는 실패한 쿼리를 롤백한다. 이것은 DBMS가 어떻게 사용되고 셋업 되었느냐에 따라 다르다. 트랜잭션은 커밋전에 언제든지 수동으로 롤백될 수 있다.

트랜잭셔널 데이터베이스
트랜잭션을 지원하는 데이터베이스를 트랜잭셔널 데이터베이스(transactional database)라고 부른다. 현재 대부분의 관계형 데이터베이스 관리시스템은 트랜잭션 데이터베이스이다.
트랜잭셔널 파일시스템
리눅스의 Namesys Reiser4 파일시스템과 마이크로소프트 NTFS 새로운 버전은 모두 트랜잭션을 지원한다.

같이 보기

편집